| // RUN: llvm-tblgen %s | FileCheck %s | |
| // XFAIL: vg_leak | |
| // CHECK: --- Classes --- | |
| // CHECK: list<int> ret = !foreach(a, | |
| // CHECK: --- Defs --- | |
| // CHECK: def C0 { | |
| // CHECK: list<list<int>> ret = {{\[}}[1, 2, 3], [1, 2, 3]]; | |
| // CHECK: } | |
| // The variable name 'a' is used both in the "inner" and in the "outer" foreach. | |
| // The test ensure that the inner declaration of 'a' properly shadows the outer | |
| // one. | |
| class A<list<int> lst> { | |
| list<int> ret = !foreach(a, lst, !add(a, 1)); | |
| } | |
| class B<list<int> lst1, list<int> lst2> { | |
| list<list<int>> ret = !foreach(a, lst1, A<lst2>.ret); | |
| } | |
| class C<list<int> lst2> { | |
| list<list<int>> ret = B<[0, 1], lst2>.ret; | |
| } | |
| def C0 : C<[0, 1, 2]>; |