bug fix #2306
This commit is contained in:
parent
067971a5ce
commit
a75e97e423
14
TestSuite/foreach8.pas
Normal file
14
TestSuite/foreach8.pas
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
type
|
||||
t1 = class(List<integer>) end;
|
||||
|
||||
begin
|
||||
var l := new t1;
|
||||
l.Add(1);
|
||||
l.Add(2);
|
||||
var i := 1;
|
||||
foreach var x in l do
|
||||
begin
|
||||
assert(i = x);
|
||||
Inc(i);
|
||||
end;
|
||||
end.
|
||||
|
|
@ -17921,7 +17921,11 @@ namespace PascalABCCompiler.TreeConverter
|
|||
// Попытка реализовать IEnumerable<T> натыкается на необходимость определять GetEnumerator, возвращающий IEnumerator и IEnumerator<T>
|
||||
{
|
||||
if (tn == null || tn is null_type_node || tn.ImplementingInterfaces == null)
|
||||
{
|
||||
if (tn != null && tn.base_type != null)
|
||||
return FindIEnumerableElementType(tn.base_type, ref elem_type, out sys_coll_ienum);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (tn.element_type != null && tn.type_special_kind != SemanticTree.type_special_kind.typed_file) // еще может быть множество set of T - 22.02.16 SSM
|
||||
{
|
||||
|
|
@ -17968,6 +17972,8 @@ namespace PascalABCCompiler.TreeConverter
|
|||
}
|
||||
}
|
||||
}
|
||||
if (tn != null && tn.base_type != null)
|
||||
return FindIEnumerableElementType(tn.base_type, ref elem_type, out sys_coll_ienum);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue