# DO NOT EDIT; generated by go run testdata/gen.go
#
#name: reentrance
#evalFull
-- in.cue --
// This indirection is needed to avoid binding references to fib
// within fib to the instantiated version.
fibRec: {nn: int, out: (fib & {n: nn}).out}
fib: {
	n: int

	if n >= 2 {
		out: (fibRec & {nn: n - 2}).out + (fibRec & {nn: n - 1}).out
	}
	if n < 2 {
		out: n
	}
}
fib2:  (fib & {n: 2}).out
fib7:  (fib & {n: 7}).out
fib12: (fib & {n: 12}).out
-- out/def --
// This indirection is needed to avoid binding references to fib
// within fib to the instantiated version.
fibRec: {
	nn:  int
	out: (fib & {
		n: nn
	}).out
}
fib: {
	n: int
	if n >= 2 {
		out: (fibRec & {
			nn: n - 2
		}).out + (fibRec & {
			nn: n - 1
		}).out
	}
	if n < 2 {
		out: n
	}
}
fib2:  1
fib7:  13
fib12: 144
-- out/legacy-debug --
<0>{fibRec: <1>{nn: int, out: (<2>.fib & <3>{n: <4>.nn}).out}, fib: <5>{n: int if (<6>.n >= 2) yield <7>{out: ((<2>.fibRec & <8>{nn: (<6>.n - 2)}).out + (<2>.fibRec & <9>{nn: (<6>.n - 1)}).out)},  if (<6>.n < 2) yield <10>{out: <6>.n}}, fib2: 1, fib7: 13, fib12: 144}
-- out/compile --
--- in.cue
{
  fibRec: {
    nn: int
    out: (〈1;fib〉 & {
      n: 〈1;nn〉
    }).out
  }
  fib: {
    n: int
    if (〈0;n〉 >= 2) {
      out: ((〈2;fibRec〉 & {
        nn: (〈2;n〉 - 2)
      }).out + (〈2;fibRec〉 & {
        nn: (〈2;n〉 - 1)
      }).out)
    }
    if (〈0;n〉 < 2) {
      out: 〈1;n〉
    }
  }
  fib2: (〈0;fib〉 & {
    n: 2
  }).out
  fib7: (〈0;fib〉 & {
    n: 7
  }).out
  fib12: (〈0;fib〉 & {
    n: 12
  }).out
}
-- out/eval --
(_|_){
  // [structural cycle]
  fibRec: (struct){
    nn: (int){ int }
    out: (_|_){
      // [incomplete] incomplete
      // fibRec.out: undefined field out:
      //     ./in.cue:3:40
    }
  }
  fib: (_|_){
    // [incomplete] incomplete
    n: (int){ int }
  }
  fib2: (int){ 1 }
  fib7: (_|_){
    // [structural cycle]
  }
  fib12: (_|_){
    // [structural cycle]
  }
}
