This commit is contained in:
Бондарев Иван 2019-03-28 21:09:26 +01:00
parent 9d391b246a
commit d7cbac142d
5 changed files with 33 additions and 0 deletions

View file

@ -0,0 +1,12 @@
type
e1 = (
ef1 = 2,
ef2 = 4,
ef3 = 8
);
begin
var a: array[e1] of byte;
a[ef2] := 4;
readln;
end.

View file

@ -14071,6 +14071,24 @@ namespace PascalABCCompiler.TreeConverter
{
AddError(new OrdinalTypeExpected(get_location(td)));
}
if (tn.IsEnum && tn is common_type_node)
{
common_type_node enum_ctn = tn as common_type_node;
int c = 0;
for (int i = 0; i < enum_ctn.const_defs.Count; i++)
{
class_constant_definition ccdn = enum_ctn.const_defs[i];
if (ccdn.constant_value != null)
{
int nextc = Convert.ToInt32(ccdn.constant_value.value);
if (nextc - c != 1 && i != 0)
AddError(get_location(td), "ENUM_MUST_HAVE_SEQUENCED_VALUES");
else if (nextc != 0 && i == 0)
AddError(get_location(td), "ENUM_MUST_HAVE_SEQUENCED_VALUES");
c = nextc;
}
}
}
if (tn.type_special_kind == SemanticTree.type_special_kind.diap_type)
{
if (tn.base_type == SystemLibrary.SystemLibrary.uint_type || tn.base_type == SystemLibrary.SystemLibrary.int64_type ||

View file

@ -161,6 +161,7 @@ CANNOT_GET_POINTER_TO_DISPOSE=Cannot get a pointer to intrinsic procedure Dispos
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
ENUM_MUST_HAVE_SEQUENCED_VALUES=Enum must have sequenced values
%PREFIX%=COMPILATIONERROR_
UNIT_MODULE_EXPECTED_LIBRARY_FOUND=Unit expected, library found
ASSEMBLY_{0}_READING_ERROR=Error by reading assembly '{0}'

View file

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

View file

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