#name: conditional field
#evalFull
-- in.cue --

if b {
	a: "foo"
}
b: true
c: {
	a: 3
	if a > 1 {
		a: 3
	}
}
d: {
	a: int
	if a > 1 {
		a: 3
	}
}
-- out/def --
b: true
a: "foo"
c: {
	a: 3
}
d: {
	a: int
	if a > 1 {
		a: 3
	}
}
-- out/legacy-debug --
<0>{b: true, a: "foo", c: <1>{a: 3}, d: <2>{a: int if (<3>.a > 1) yield <4>{a: 3}}}
-- out/compile --
--- in.cue
{
  if 〈0;b〉 {
    a: "foo"
  }
  b: true
  c: {
    a: 3
    if (〈0;a〉 > 1) {
      a: 3
    }
  }
  d: {
    a: int
    if (〈0;a〉 > 1) {
      a: 3
    }
  }
}
-- out/eval/stats --
Leaks:  0
Freed:  7
Reused: 4
Allocs: 3
Retain: 1

Unifications: 7
Conjuncts:    7
Disjuncts:    7
-- out/evalalpha --
(struct){
  a: (string){ "foo" }
  b: (bool){ true }
  c: (struct){
    a: (int){ 3 }
  }
  d: (_|_){
    // [incomplete] d: non-concrete value int in operand to >:
    //     ./in.cue:14:5
    //     ./in.cue:13:5
    //     ./in.cue:14:2
    a: (_|_){
      // [incomplete] d: non-concrete value int in operand to >:
      //     ./in.cue:14:5
      //     ./in.cue:13:5
      //     ./in.cue:14:2
    }
  }
}
-- diff/-out/evalalpha<==>+out/eval --
diff old new
--- old
+++ new
@@ -5,7 +5,15 @@
     a: (int){ 3 }
   }
   d: (_|_){
-    // [cycle] cycle error:
+    // [incomplete] d: non-concrete value int in operand to >:
     //     ./in.cue:14:5
+    //     ./in.cue:13:5
+    //     ./in.cue:14:2
+    a: (_|_){
+      // [incomplete] d: non-concrete value int in operand to >:
+      //     ./in.cue:14:5
+      //     ./in.cue:13:5
+      //     ./in.cue:14:2
+    }
   }
 }
-- out/eval --
(struct){
  a: (string){ "foo" }
  b: (bool){ true }
  c: (struct){
    a: (int){ 3 }
  }
  d: (_|_){
    // [cycle] cycle error:
    //     ./in.cue:14:5
  }
}
