This commit is contained in:
Бондарев Иван 2019-01-02 22:40:04 +01:00
parent 35182456a1
commit 053d012565
5 changed files with 12 additions and 0 deletions

View file

@ -0,0 +1,7 @@
type
I1 = interface
procedure operator+=(x, y: I1);
end;
begin
end.

View file

@ -9823,6 +9823,8 @@ namespace PascalABCCompiler.TreeConverter
definition_node def_temp = null;
SyntaxTree.template_type_name ttn = null;
bool is_operator = _method_name.meth_name is SyntaxTree.operator_name_ident;
if (is_operator && context.converted_type != null && context.converted_type.IsInterface)
AddError(get_location(_method_name), "OPERATORS_IN_INTERFACES_NOT_ALLOWED");
SyntaxTree.Operators op = PascalABCCompiler.SyntaxTree.Operators.Undefined;
if(is_operator)
op=(_method_name.meth_name as SyntaxTree.operator_name_ident).operator_type;

View file

@ -159,6 +159,7 @@ INTERFACE_PROPERTIES_CANNOT_BE_STATIC=Interface properties can not be static
ARRAY_RANK_CANNOT_BE_GREATER_32=Rank of multidimensional unsized array cannot be greater 32
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
%PREFIX%=COMPILATIONERROR_
UNIT_MODULE_EXPECTED_LIBRARY_FOUND=Unit expected, library found
ASSEMBLY_{0}_READING_ERROR=Error by reading assembly '{0}'

View file

@ -154,6 +154,7 @@ INTERFACE_PROPERTIES_CANNOT_BE_STATIC=Свойства интерфейса не
ARRAY_RANK_CANNOT_BE_GREATER_32=Размерность многомерного динамического массива не может быть больше 32
CANNOT_GET_POINTER_TO_DISPOSE=Нельзя получить указатель на процедуру Dispose
USING_{0}_NOT_ALLOWED_IN_THIS_CONTEXT=Использование {0} недопустимо в данном контексте
OPERATORS_IN_INTERFACES_NOT_ALLOWED=Интерфейсы не могут содержать операторы
%PREFIX%=COMPILATIONERROR_
UNIT_MODULE_EXPECTED_LIBRARY_FOUND=Ожидался модуль, а встречена библиотека
ASSEMBLY_{0}_READING_ERROR=Ошибка при чтении сборки '{0}'

View file

@ -151,6 +151,7 @@ INTERFACE_PROPERTIES_CANNOT_BE_STATIC=Свойства интерфейса не
ARRAY_RANK_CANNOT_BE_GREATER_32=Размерность многомерного динамического массива не может быть больше 32
CANNOT_GET_POINTER_TO_DISPOSE=Нельзя получить указатель на процедуру Dispose
USING_{0}_NOT_ALLOWED_IN_THIS_CONTEXT=Использование {0} недопустимо в данном контексте
OPERATORS_IN_INTERFACES_NOT_ALLOWED=Интерфейсы не могут содержать операторы
%PREFIX%=COMPILATIONERROR_
UNIT_MODULE_EXPECTED_LIBRARY_FOUND=Очікувався модуль, а зустріли бібліотеку
ASSEMBLY_{0}_READING_ERROR=Помилка при читанні збірки '{0}'