This commit is contained in:
Бондарев Иван 2019-03-10 12:31:05 +01:00
parent 5c7f2d29d7
commit acfab8fcf6
3 changed files with 13 additions and 1 deletions

View file

@ -0,0 +1,7 @@
type
I0 = interface
const x = 5;
end;
begin
end.

View file

@ -11096,6 +11096,11 @@ namespace PascalABCCompiler.TreeConverter
public override void visit(SyntaxTree.simple_const_definition _simple_const_definition)
{
if (context.converting_block() == block_type.type_block &&
context.converted_type.IsInterface)
{
AddError(get_location(_simple_const_definition), "INVALID_INTERFACE_MEMBER");
}
constant_definition_node cdn = context.add_const_definition(_simple_const_definition.const_name.name, get_location(_simple_const_definition.const_name));
cdn.const_value = convert_strong_to_constant_node(_simple_const_definition.const_value);
cdn.const_value.SetType(DeduceType(cdn.const_value.type, cdn.const_value.location));

View file

@ -4,7 +4,7 @@ TEMPLATE_ARGUMENTS_COUNT_MISMATCH=Неправильное число парам
TEMPLATE_PARAMETER_{0}_REDEFINITION=Повторное описание параметра {0}
INHERITED_CONSTRUCTOR_CALL_MUST_BE_FIRST=Вызов конструктора предка должен быть первым в теле конструктора
INHERITED_CONSTRUCTOR_CALL_EXPECTED=Необходимо вызвать конструктор предка
INVALID_INTERFACE_MEMBER=Члены интерфейса не могут иметь определение
INVALID_INTERFACE_MEMBER=Члены интерфейса не могут иметь поля, константы и реализацию методов
{0}_IS_NOT_INTERFACE={0} не является интерфейсом
INTERFACE_FUNCTION_WITH_BODY=Нельзя определять тело функции или процедуры интерфейса
CONSTRUCTOR_IN_INTERFACE=Интерфейс не может содержать конструкторы