diff --git a/TestSuite/errors/err0309.pas b/TestSuite/errors/err0309.pas new file mode 100644 index 000000000..967871398 --- /dev/null +++ b/TestSuite/errors/err0309.pas @@ -0,0 +1,3 @@ +begin + var x := []; +end. \ No newline at end of file diff --git a/TreeConverter/TreeConversion/syntax_tree_visitor.cs b/TreeConverter/TreeConversion/syntax_tree_visitor.cs index d638f474f..392369881 100644 --- a/TreeConverter/TreeConversion/syntax_tree_visitor.cs +++ b/TreeConverter/TreeConversion/syntax_tree_visitor.cs @@ -15951,7 +15951,14 @@ namespace PascalABCCompiler.TreeConverter if (_var_def_statement.vars_type == null && _var_def_statement.inital_value is SyntaxTree.function_lambda_definition) AddError(get_location(_var_def_statement.inital_value), "IMPOSSIBLE_TO_INFER_TYPES_IN_LAMBDA"); //lroman// - bool is_event = _var_def_statement.is_event; + if (_var_def_statement.vars_type == null && _var_def_statement.inital_value is SyntaxTree.pascal_set_constant pc) + { + if (pc.values==null || pc.values.Count == 0) + AddError(get_location(_var_def_statement.inital_value), "IMPOSSIBLE_TO_INFER_SET_TYPE"); + } + + + bool is_event = _var_def_statement.is_event; if (context.converting_block() == block_type.type_block && context.converted_type.IsInterface && !is_event) diff --git a/bin/Lng/Eng/SemanticErrors_ms.dat b/bin/Lng/Eng/SemanticErrors_ms.dat index 9b5e61c7a..4e33880c6 100644 --- a/bin/Lng/Eng/SemanticErrors_ms.dat +++ b/bin/Lng/Eng/SemanticErrors_ms.dat @@ -18,4 +18,5 @@ ENUMS_CANNOT_BE_GENERIC=Enumerator type cannot be generic PROGRAM_NAME_FOR_TYPE_NAME_IS_PROHIBITED=The name 'program' is prohibited as type name DEFAULT_PARAMS_IN_DELEGATE_TYPE=Procedure type cannot have default parameters CONSTRUCTOR_CALL_FOR_DELEGATE_TYPES_IS_FORBIDDEN=Constructor call for delegate types is forbidden -SELF_NOT_ALLOWED_IN_METHOD_PARAMS=Self is not allowed as method parameter name \ No newline at end of file +SELF_NOT_ALLOWED_IN_METHOD_PARAMS=Self is not allowed as method parameter name +IMPOSSIBLE_TO_INFER_SET_TYPE=Impossible to infer set type \ No newline at end of file diff --git a/bin/Lng/Rus/SemanticErrors_ms.dat b/bin/Lng/Rus/SemanticErrors_ms.dat index 1f1107ec9..959705256 100644 --- a/bin/Lng/Rus/SemanticErrors_ms.dat +++ b/bin/Lng/Rus/SemanticErrors_ms.dat @@ -19,4 +19,5 @@ ENUMS_CANNOT_BE_GENERIC=Перечислимый тип не может быть PROGRAM_NAME_FOR_TYPE_NAME_IS_PROHIBITED=Имя 'program' запрещено в качестве имени типа DEFAULT_PARAMS_IN_DELEGATE_TYPE=В процедурном типе не могут быть параметры по умолчанию CONSTRUCTOR_CALL_FOR_DELEGATE_TYPES_IS_FORBIDDEN=Для типов делегатов запрещен вызов конструктора. Вместо этого присвойте делегату имя подпрограммы или имя другого делегата -SELF_NOT_ALLOWED_IN_METHOD_PARAMS=Параметр метода не может иметь имя Self \ No newline at end of file +SELF_NOT_ALLOWED_IN_METHOD_PARAMS=Параметр метода не может иметь имя Self +IMPOSSIBLE_TO_INFER_SET_TYPE=Нельзя вычислить тип множества \ No newline at end of file