parent
4893429c2b
commit
16274ab958
4
TestSuite/errors/err0401.pas
Normal file
4
TestSuite/errors/err0401.pas
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
begin
|
||||||
|
var s: sequence of byte;
|
||||||
|
var e: IEnumerator<char> := s.OrderBy(b->b).GetEnumerator;
|
||||||
|
end.
|
||||||
9
TestSuite/generics45.pas
Normal file
9
TestSuite/generics45.pas
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
begin
|
||||||
|
var s: sequence of integer := Arr(3,2,1).AsEnumerable();
|
||||||
|
var e: IEnumerator<integer> := s.OrderBy(b->b).GetEnumerator;
|
||||||
|
e.MoveNext();
|
||||||
|
assert(e.Current = 1);
|
||||||
|
var e2: IEnumerator<integer> := s.OrderBy(b->b).GetEnumerator();
|
||||||
|
e2.MoveNext();
|
||||||
|
assert(e2.Current = 1);
|
||||||
|
end.
|
||||||
6
TestSuite/generics46.pas
Normal file
6
TestSuite/generics46.pas
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
begin
|
||||||
|
var o: ICollection<integer> := Arr(1,2,3);
|
||||||
|
var enm: IEnumerator<integer> := o.GetEnumerator;
|
||||||
|
enm.MoveNext();
|
||||||
|
assert(enm.Current = 1);
|
||||||
|
end.
|
||||||
|
|
@ -663,7 +663,7 @@ namespace PascalABCCompiler.TreeConverter
|
||||||
en.location = loc;
|
en.location = loc;
|
||||||
if (en.type is delegated_methods dm && dm.proper_methods[0].parameters.Count == 0 && dm.proper_methods[0].ret_type != null)
|
if (en.type is delegated_methods dm && dm.proper_methods[0].parameters.Count == 0 && dm.proper_methods[0].ret_type != null)
|
||||||
{
|
{
|
||||||
if (to != SystemLibrary.SystemLibrary.object_type)
|
if (to != SystemLibrary.SystemLibrary.object_type && to.IsDelegate)
|
||||||
AddError(new CanNotConvertTypes(en, dm.proper_methods[0].ret_type, to, loc)); // SSM 18/06/20 #2261
|
AddError(new CanNotConvertTypes(en, dm.proper_methods[0].ret_type, to, loc)); // SSM 18/06/20 #2261
|
||||||
else
|
else
|
||||||
return en;
|
return en;
|
||||||
|
|
|
||||||
|
|
@ -16570,6 +16570,13 @@ namespace PascalABCCompiler.TreeConverter
|
||||||
_var_def_statement.inital_value = get_possible_array_const(_var_def_statement.inital_value,tn);
|
_var_def_statement.inital_value = get_possible_array_const(_var_def_statement.inital_value,tn);
|
||||||
var ivc = convert_strong(_var_def_statement.inital_value);
|
var ivc = convert_strong(_var_def_statement.inital_value);
|
||||||
inital_value = convert_strong_to_constant_or_function_call_for_varinit(ivc, tn);
|
inital_value = convert_strong_to_constant_or_function_call_for_varinit(ivc, tn);
|
||||||
|
if (!tn.IsDelegate && tn != SystemLibrary.SystemLibrary.object_type && inital_value is typed_expression && _var_def_statement.inital_value is addressed_value)
|
||||||
|
{
|
||||||
|
method_call mc = new method_call();
|
||||||
|
mc.dereferencing_value = _var_def_statement.inital_value as addressed_value;
|
||||||
|
ivc = convert_strong(mc);
|
||||||
|
inital_value = convert_strong_to_constant_or_function_call_for_varinit(ivc, tn);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue