fix #1234
This commit is contained in:
parent
f158dc18e5
commit
64d173f3bd
6
TestSuite/errors/err0270.pas
Normal file
6
TestSuite/errors/err0270.pas
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
type
|
||||
IInterface = abstract interface
|
||||
end;
|
||||
|
||||
begin
|
||||
end.
|
||||
|
|
@ -3545,18 +3545,20 @@ namespace PascalABCCompiler.TreeConverter
|
|||
}
|
||||
|
||||
if (_class_definition.attribute != class_attribute.None && _class_definition.body == null)
|
||||
ErrorsList.Add(new SimpleSemanticError(get_location(_class_definition), "CLASS_ATTRIBUTE_NOT_ALLOWED_IN_CLASS_PREDEFINTIONS"));
|
||||
AddError(new SimpleSemanticError(get_location(_class_definition), "CLASS_ATTRIBUTE_NOT_ALLOWED_IN_CLASS_PREDEFINTIONS"));
|
||||
if ((_class_definition.attribute & PascalABCCompiler.SyntaxTree.class_attribute.Sealed) == SyntaxTree.class_attribute.Sealed)
|
||||
{
|
||||
context.converted_type.SetIsSealed(true);
|
||||
if (_class_definition.keyword == SyntaxTree.class_keyword.Interface || _class_definition.keyword == SyntaxTree.class_keyword.TemplateInterface)
|
||||
ErrorsList.Add(new SimpleSemanticError(get_location(_class_definition), "INTERFACE_CANNOT_BE_SEALED"));
|
||||
AddError(new SimpleSemanticError(get_location(_class_definition), "INTERFACE_CANNOT_BE_SEALED"));
|
||||
}
|
||||
if ((_class_definition.attribute & PascalABCCompiler.SyntaxTree.class_attribute.Abstract) == SyntaxTree.class_attribute.Abstract &&
|
||||
(_class_definition.attribute & PascalABCCompiler.SyntaxTree.class_attribute.Sealed) == SyntaxTree.class_attribute.Sealed)
|
||||
AddError(get_location(_class_definition), "ABSTRACT_CLASS_CANNOT_BE_SEALED");
|
||||
if ((_class_definition.attribute & PascalABCCompiler.SyntaxTree.class_attribute.Abstract) == SyntaxTree.class_attribute.Abstract)
|
||||
{
|
||||
if (_class_definition.keyword != SyntaxTree.class_keyword.Class)
|
||||
AddError(get_location(_class_definition), "ATTRIBUTE_{0}_NOT_ALLOWED", "abstract");
|
||||
context.converted_type.SetIsAbstract(true);
|
||||
}
|
||||
switch (_class_definition.keyword)
|
||||
|
|
|
|||
|
|
@ -145,6 +145,7 @@ ATTRIBUTE_CANNOT_BE_GENERIC=Attributes cannot be generic
|
|||
EXTERNAL_METHOD_CANNOT_BE_DECLARED_IN_GENERIC_TYPE=external-methods can not be declared in generic type
|
||||
EXTERNAL_METHOD_CANNOT_BE_GENERIC=external-methods can not be generic
|
||||
WHERE_SPECIFIER_MISMATCH=where specifier contradicts with where specifier of base class
|
||||
ATTRIBUTE_{0}_NOT_ALLOWED=Attribute {0} is not allowed in this context
|
||||
%PREFIX%=COMPILATIONERROR_
|
||||
UNIT_MODULE_EXPECTED_LIBRARY_FOUND=Unit expected, library found
|
||||
ASSEMBLY_{0}_READING_ERROR=Error by reading assembly '{0}'
|
||||
|
|
|
|||
|
|
@ -140,6 +140,7 @@ ATTRIBUTE_CANNOT_BE_GENERIC=Атрибуты не могут быть генер
|
|||
EXTERNAL_METHOD_CANNOT_BE_DECLARED_IN_GENERIC_TYPE=external-методы нельзя описывать в генерик-классах
|
||||
EXTERNAL_METHOD_CANNOT_BE_GENERIC=external-методы не могут быть генериками
|
||||
WHERE_SPECIFIER_MISMATCH=Несоответствие спецификатора whеre спецификатору where базового класса
|
||||
ATTRIBUTE_{0}_NOT_ALLOWED=Атрибут {0} недопустим в данном контексте
|
||||
%PREFIX%=COMPILATIONERROR_
|
||||
UNIT_MODULE_EXPECTED_LIBRARY_FOUND=Ожидался модуль, а встречена библиотека
|
||||
ASSEMBLY_{0}_READING_ERROR=Ошибка при чтении сборки '{0}'
|
||||
|
|
|
|||
|
|
@ -138,6 +138,7 @@ ATTRIBUTE_CANNOT_BE_GENERIC=Атрибуты не могут быть генер
|
|||
EXTERNAL_METHOD_CANNOT_BE_DECLARED_IN_GENERIC_TYPE=external-методы нельзя описывать в генерик-классах
|
||||
EXTERNAL_METHOD_CANNOT_BE_GENERIC=external-методы не могут быть генериками
|
||||
WHERE_SPECIFIER_MISMATCH=Несоответствие спецификатора whеre спецификатору where базового классе
|
||||
ATTRIBUTE_{0}_NOT_ALLOWED=Атрибут {0} недопустим в данном контексте
|
||||
%PREFIX%=COMPILATIONERROR_
|
||||
UNIT_MODULE_EXPECTED_LIBRARY_FOUND=Очікувався модуль, а зустріли бібліотеку
|
||||
ASSEMBLY_{0}_READING_ERROR=Помилка при читанні збірки '{0}'
|
||||
|
|
|
|||
Loading…
Reference in a new issue