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>
|
// Попытка реализовать IEnumerable<T> натыкается на необходимость определять GetEnumerator, возвращающий IEnumerator и IEnumerator<T>
|
||||||
{
|
{
|
||||||
if (tn == null || tn is null_type_node || tn.ImplementingInterfaces == null)
|
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;
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
if (tn.element_type != null && tn.type_special_kind != SemanticTree.type_special_kind.typed_file) // еще может быть множество set of T - 22.02.16 SSM
|
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;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue