some semantic checks for explicit implemented properties
This commit is contained in:
parent
08b67078ec
commit
b1adbc3933
|
|
@ -4275,9 +4275,14 @@ namespace PascalABCCompiler.TreeConverter
|
|||
|
||||
List<SymbolInfo> sil = context.find_definition_node(ntr, get_location(_simple_property.property_name), true);
|
||||
if (!(sil[0].sym_info as type_node).IsInterface)
|
||||
AddError(get_location(_simple_property.property_name), "INTERFACE_AWAITED");
|
||||
AddError(get_location(_simple_property.property_name), "EXPECTED_INTERFACE");
|
||||
name = (sil[0].sym_info as type_node).BaseFullName + "." + name;
|
||||
expl_interface = sil[0].sym_info as type_node;
|
||||
sil = expl_interface.find_in_type(_simple_property.property_name.name);
|
||||
if (sil == null)
|
||||
AddError(new MemberIsNotDeclaredInType(_simple_property.property_name, get_location(_simple_property.property_name), expl_interface));
|
||||
if (!(sil[0].sym_info is property_node))
|
||||
AddError(get_location(_simple_property.property_name), "EXPECTED_PROPERTY");
|
||||
}
|
||||
common_property_node pn = context.add_property(name, get_location(_simple_property.property_name));
|
||||
assign_doc_info(pn, _simple_property);
|
||||
|
|
|
|||
|
|
@ -169,7 +169,8 @@ PARTIAL_CLASS_PARENTS_MISMATCH=Partial declarations must not specify different b
|
|||
PARAMETER_{0}_HAS_TYPE_{1}_FROM_UNIT_{2}=Parameter {0} has type {1} from unit {2}. Add unit {2} to uses section.
|
||||
PARTIAL_CLASS_PREDEFINITION_NOT_ALLOWED=Predefinitions of partial classes are not allowed
|
||||
AMBIGUOUS_DELEGATES=Ambiguous delegates detected
|
||||
INTERFACE_AWAITED=Interface expected
|
||||
EXPECTED_INTERFACE=Interface expected
|
||||
EXPECTED_PROPERTY=Property expected
|
||||
%PREFIX%=COMPILATIONERROR_
|
||||
UNIT_MODULE_EXPECTED_LIBRARY_FOUND=Unit expected, library found
|
||||
ASSEMBLY_{0}_READING_ERROR=Error by reading assembly '{0}'
|
||||
|
|
|
|||
|
|
@ -164,7 +164,8 @@ PARTIAL_CLASS_PARENTS_MISMATCH=partial-класс не может иметь и
|
|||
PARAMETER_{0}_HAS_TYPE_{1}_FROM_UNIT_{2}=Параметр {0} имеет тип {1} из неподключенного модуля {2}. Добавьте модуль {2} в секцию uses.
|
||||
PARTIAL_CLASS_PREDEFINITION_NOT_ALLOWED=Предописания partial-классов недопустимы
|
||||
AMBIGUOUS_DELEGATES=Невозможно выбрать конкретный делегат из перегруженных
|
||||
INTERFACE_AWAITED=Ожидалось имя интерфейса
|
||||
EXPECTED_INTERFACE=Ожидалось имя интерфейса
|
||||
EXPECTED_PROPERTY=Ожидалось свойство
|
||||
%PREFIX%=COMPILATIONERROR_
|
||||
UNIT_MODULE_EXPECTED_LIBRARY_FOUND=Ожидался модуль, а встречена библиотека
|
||||
ASSEMBLY_{0}_READING_ERROR=Ошибка при чтении сборки '{0}'
|
||||
|
|
|
|||
|
|
@ -161,7 +161,8 @@ PARTIAL_CLASS_PARENTS_MISMATCH=partial-класс не может иметь и
|
|||
PARAMETER_{0}_HAS_TYPE_{1}_FROM_UNIT_{2}=Параметр {0} имеет тип {1} из неподключенного модуля {2}. Добавьте модуль {2} в секцию uses.
|
||||
PARTIAL_CLASS_PREDEFINITION_NOT_ALLOWED=Предописания partial-классов недопустимы#
|
||||
AMBIGUOUS_DELEGATES=Невозможно выбрать конкретный делегат из перегруженных
|
||||
INTERFACE_AWAITED=Ожидалось имя интерфейса
|
||||
EXPECTED_INTERFACE=Ожидалось имя интерфейса
|
||||
EXPECTED_PROPERTY=Ожидалось свойство
|
||||
%PREFIX%=COMPILATIONERROR_
|
||||
UNIT_MODULE_EXPECTED_LIBRARY_FOUND=Очікувався модуль, а зустріли бібліотеку
|
||||
ASSEMBLY_{0}_READING_ERROR=Помилка при читанні збірки '{0}'
|
||||
|
|
|
|||
Loading…
Reference in a new issue