// RUN: tblgen %s | FileCheck %s
// XFAIL: vg_leak

//===----------------------------------------------------------------------===//
// Substitution of an int.
def X1;

class C1<int N> {
  dag d = (X1 N);
}

def VAL1 : C1<13>;

// CHECK: def VAL1 {
// CHECK-NEXT: dag d = (X1 13)


//===----------------------------------------------------------------------===//
// Substitution of a DAG.
def X2;

class yclass;
def Y2 : yclass;

class C2<yclass N> {
  dag d = (X2 N);
  dag e = (N X2);
}

def VAL2 : C2<Y2>;

// CHECK: def VAL2 {
// CHECK-NEXT: dag d = (X2 Y2)
// CHECK-NEXT: dag e = (Y2 X2)


//===----------------------------------------------------------------------===//
// Complex dag operator (F.TheOp).

class operator;
def somedef1 : operator;
def somedef2 : operator;

class foo<operator a> {
 operator TheOp = a;
}

class bar<foo F, operator a> {
  dag Dag1 = (somedef1 1);
  dag Dag2 = (a 2);
  dag Dag3 = (F.TheOp 2);
}

def foo1 : foo<somedef1>;
def foo2 : foo<somedef2>;

def VAL3 : bar<foo1, somedef1>;

// CHECK:     def VAL3 {	// bar
// CHECK-NEXT:  dag Dag1 = (somedef1 1);
// CHECK-NEXT:  dag Dag2 = (somedef1 2);
// CHECK-NEXT:  dag Dag3 = (somedef1 2);
// CHECK-NEXT: }


def VAL4 : bar<foo2, somedef2>;
// CHECK:      def VAL4 {
// CHECK-NEXT:  dag Dag1 = (somedef1 1);
// CHECK-NEXT:  dag Dag2 = (somedef2 2);
// CHECK-NEXT:  dag Dag3 = (somedef2 2);
// CHECK-NEXT: }
