// 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]>;
