diff --git a/TestSuite/errors/err0313.pas b/TestSuite/errors/err0313.pas new file mode 100644 index 000000000..83335617e --- /dev/null +++ b/TestSuite/errors/err0313.pas @@ -0,0 +1,11 @@ +type + TStatic = static class + end; + +procedure P(); + where T: TStatic; +begin +end; + +begin +end. \ No newline at end of file diff --git a/TreeConverter/TreeConversion/syntax_tree_visitor.cs b/TreeConverter/TreeConversion/syntax_tree_visitor.cs index c8060ca85..30f85ecc5 100644 --- a/TreeConverter/TreeConversion/syntax_tree_visitor.cs +++ b/TreeConverter/TreeConversion/syntax_tree_visitor.cs @@ -12349,7 +12349,7 @@ namespace PascalABCCompiler.TreeConverter { type_node spec_type = ret.visit(ntr); if (spec_type is ref_type_node || spec_type == SystemLibrary.SystemLibrary.void_type || spec_type == SystemLibrary.SystemLibrary.pointer_type) - ErrorsList.Add(new SimpleSemanticError(get_location(specificators[i]), "INAVLID_TYPE")); + AddError(new SimpleSemanticError(get_location(specificators[i]), "INAVLID_TYPE")); if (spec_type.IsInterface) { if (used_interfs[spec_type] != null) @@ -12380,6 +12380,8 @@ namespace PascalABCCompiler.TreeConverter { AddError(get_location(specificators[i]), "ENUM_CAN_NOT_BE_USED_AS_PARENT_SPECIFICATOR"); } + if (spec_type.IsStatic) + AddError(get_location(specificators[i]), "STATIC_CLASS_CAN_NOT_BE_USED_AS_PARENT_SPECIFICATOR"); check_cycle_inheritance(param, spec_type); param.SetBaseType(spec_type); } diff --git a/VisualPascalABCNET/VisualPascalABCNET.csproj b/VisualPascalABCNET/VisualPascalABCNET.csproj index 2f4406c07..6ac83ebf1 100644 --- a/VisualPascalABCNET/VisualPascalABCNET.csproj +++ b/VisualPascalABCNET/VisualPascalABCNET.csproj @@ -21,7 +21,7 @@ 4.0 - v4.7.1 + v4.7.2 false publish\ diff --git a/bin/Lng/Eng/SemanticErrors_ib.dat b/bin/Lng/Eng/SemanticErrors_ib.dat index 084df7249..026f20919 100644 --- a/bin/Lng/Eng/SemanticErrors_ib.dat +++ b/bin/Lng/Eng/SemanticErrors_ib.dat @@ -160,6 +160,7 @@ ARRAY_RANK_CANNOT_BE_GREATER_32=Rank of multidimensional unsized array cannot be CANNOT_GET_POINTER_TO_DISPOSE=Cannot get a pointer to intrinsic procedure Dispose USING_{0}_NOT_ALLOWED_IN_THIS_CONTEXT=Using of {0} is not allowed in this context OPERATORS_IN_INTERFACES_NOT_ALLOWED=Interfaces can not contain operators +STATIC_CLASS_CAN_NOT_BE_USED_AS_PARENT_SPECIFICATOR=Static classes can not be used as generic constraints %PREFIX%=COMPILATIONERROR_ UNIT_MODULE_EXPECTED_LIBRARY_FOUND=Unit expected, library found ASSEMBLY_{0}_READING_ERROR=Error by reading assembly '{0}' diff --git a/bin/Lng/Rus/SemanticErrors_ib.dat b/bin/Lng/Rus/SemanticErrors_ib.dat index 525514fdc..c57d28ab0 100644 --- a/bin/Lng/Rus/SemanticErrors_ib.dat +++ b/bin/Lng/Rus/SemanticErrors_ib.dat @@ -155,6 +155,7 @@ ARRAY_RANK_CANNOT_BE_GREATER_32=Размерность многомерного CANNOT_GET_POINTER_TO_DISPOSE=Нельзя получить указатель на процедуру Dispose USING_{0}_NOT_ALLOWED_IN_THIS_CONTEXT=Использование {0} недопустимо в данном контексте OPERATORS_IN_INTERFACES_NOT_ALLOWED=Интерфейсы не могут содержать операторы +STATIC_CLASS_CAN_NOT_BE_USED_AS_PARENT_SPECIFICATOR=Нельзя использовать статические классы в качестве ограничений %PREFIX%=COMPILATIONERROR_ UNIT_MODULE_EXPECTED_LIBRARY_FOUND=Ожидался модуль, а встречена библиотека ASSEMBLY_{0}_READING_ERROR=Ошибка при чтении сборки '{0}' diff --git a/bin/Lng/Ukr/SemanticErrors_ib.dat b/bin/Lng/Ukr/SemanticErrors_ib.dat index a2ac83875..356d7f98d 100644 --- a/bin/Lng/Ukr/SemanticErrors_ib.dat +++ b/bin/Lng/Ukr/SemanticErrors_ib.dat @@ -152,6 +152,7 @@ ARRAY_RANK_CANNOT_BE_GREATER_32=Размерность многомерного CANNOT_GET_POINTER_TO_DISPOSE=Нельзя получить указатель на процедуру Dispose USING_{0}_NOT_ALLOWED_IN_THIS_CONTEXT=Использование {0} недопустимо в данном контексте OPERATORS_IN_INTERFACES_NOT_ALLOWED=Интерфейсы не могут содержать операторы +STATIC_CLASS_CAN_NOT_BE_USED_AS_PARENT_SPECIFICATOR=Нельзя использовать статические классы в качестве ограничений %PREFIX%=COMPILATIONERROR_ UNIT_MODULE_EXPECTED_LIBRARY_FOUND=Очікувався модуль, а зустріли бібліотеку ASSEMBLY_{0}_READING_ERROR=Помилка при читанні збірки '{0}'