bug fix #730
This commit is contained in:
parent
906ffc2c0f
commit
680a9b99b4
5
TestSuite/errors/err0234.pas
Normal file
5
TestSuite/errors/err0234.pas
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
type t1<T> = class end;
|
||||
|
||||
begin
|
||||
var a := t1&<byte>;
|
||||
end.
|
||||
5
TestSuite/errors/err0235.pas
Normal file
5
TestSuite/errors/err0235.pas
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
type t1<T> = class end;
|
||||
|
||||
begin
|
||||
var a := t1&<byte>(t1&<byte>);
|
||||
end.
|
||||
12
TestSuite/generics16.pas
Normal file
12
TestSuite/generics16.pas
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
type TClass = class(List<integer>)
|
||||
procedure test;
|
||||
begin
|
||||
Add(2);
|
||||
self[0] += 2;
|
||||
end;
|
||||
end;
|
||||
begin
|
||||
var o := new TClass;
|
||||
o.test;
|
||||
assert(o[0] = 4);
|
||||
end.
|
||||
|
|
@ -826,7 +826,8 @@ namespace PascalABCCompiler.TreeConverter
|
|||
//\ssyy
|
||||
expression_node en = ret.visit(expr);
|
||||
//expr.semantic_ex = en; // SSM 3.1.17 кешируем для последующего обращения
|
||||
|
||||
if (en == null)
|
||||
AddError(get_location(expr), "EXPRESSION_EXPECTED");
|
||||
//en.loc=get_location(expr);
|
||||
|
||||
return en;
|
||||
|
|
@ -15338,7 +15339,8 @@ namespace PascalABCCompiler.TreeConverter
|
|||
{
|
||||
if (is_event)
|
||||
AddError(get_location(_var_def_statement), "EVENT_MUST_HAVE_TYPE");
|
||||
expression_node cn = convert_strong_to_constant_or_function_call_for_varinit(convert_strong(_var_def_statement.inital_value));
|
||||
var ex = convert_strong(_var_def_statement.inital_value);
|
||||
expression_node cn = convert_strong_to_constant_or_function_call_for_varinit(ex);
|
||||
if (cn is constant_node)
|
||||
(cn as constant_node).SetType(DeduceType(cn.type, get_location(_var_def_statement.inital_value)));
|
||||
inital_value = cn;
|
||||
|
|
|
|||
|
|
@ -138,6 +138,7 @@ OPERATOR_RETURN_TYPE_UNDEFINED_{0}=Return type of operator {0} is not defined an
|
|||
STRUCT_TYPE_DEFINITION_IN_AUTO_CLASS=Field types in auto classes cannot be record or array definition
|
||||
EXTERNAL_METHOD_SHOULD_BE_STATIC=external-methods should be static
|
||||
ABSTRACT_CLASS_CANNOT_BE_SEALED=Abstract classes can not be sealed
|
||||
EXPRESSION_EXPECTED=Expression expected
|
||||
%PREFIX%=COMPILATIONERROR_
|
||||
UNIT_MODULE_EXPECTED_LIBRARY_FOUND=Unit expected, library found
|
||||
ASSEMBLY_{0}_READING_ERROR=Error by reading assembly '{0}'
|
||||
|
|
|
|||
|
|
@ -133,6 +133,7 @@ OPERATOR_RETURN_TYPE_UNDEFINED_{0}=Тип возвращаемого значе
|
|||
STRUCT_TYPE_DEFINITION_IN_AUTO_CLASS=Типы полей авто-класса не могут быть описанием записи или описанием массива с границами
|
||||
EXTERNAL_METHOD_SHOULD_BE_STATIC=external-методы должны быть статическими
|
||||
ABSTRACT_CLASS_CANNOT_BE_SEALED=Абстрактный класс не может иметь атрибут sealed
|
||||
EXPRESSION_EXPECTED=Ожидалось выражение
|
||||
%PREFIX%=COMPILATIONERROR_
|
||||
UNIT_MODULE_EXPECTED_LIBRARY_FOUND=Ожидался модуль, а встречена библиотека
|
||||
ASSEMBLY_{0}_READING_ERROR=Ошибка при чтении сборки '{0}'
|
||||
|
|
|
|||
|
|
@ -131,6 +131,7 @@ OPERATOR_RETURN_TYPE_UNDEFINED_{0}=Тип возвращаемого значе
|
|||
STRUCT_TYPE_DEFINITION_IN_AUTO_CLASS=Типы полей авто-класса не могут быть описанием записи или описанием массива с границами
|
||||
EXTERNAL_METHOD_SHOULD_BE_STATIC=external-методы должны быть статическими
|
||||
ABSTRACT_CLASS_CANNOT_BE_SEALED=Абстрактный класс не может иметь атрибут sealed
|
||||
EXPRESSION_EXPECTED=Ожидалось выражение
|
||||
%PREFIX%=COMPILATIONERROR_
|
||||
UNIT_MODULE_EXPECTED_LIBRARY_FOUND=Очікувався модуль, а зустріли бібліотеку
|
||||
ASSEMBLY_{0}_READING_ERROR=Помилка при читанні збірки '{0}'
|
||||
|
|
|
|||
Loading…
Reference in a new issue