# DO NOT EDIT; generated by go run testdata/gen.go
#
#name: resolved self-reference cycles with disjunction with defaults
#evalPartial
-- in.cue --
// The disjunction in xa could be resolved, but as disjunctions
// are not resolved for expression, it remains unresolved.
xa1: (xa2 & 8) | *(xa4 & 9)
xa2: xa3 + 2
xa3: 6 & xa1-2
xa4: xa2 + 2

xb1: *(xb2 & 8) | (xb4 & 9)
xb2: xb3 + 2
xb3: *(6 & (xb1 - 2)) | (xb4 & 9)
xb4: xb2 + 2

// Another variant with more disjunctions. xc1 remains with two
// possibilities. Technically, only the first value is valid.
// However, to fully determine that, all options of the remaining
// disjunction will have to be evaluated algebraically, which is
// not done.
xc1: *(xc2 & 8) | (xc4 & 9) | (xc5 & 9)
xc2: xc3 + 2
xc3: 6 & xc1-2
xc4: xc2 + 1
xc5: xc2 + 2

// The above is resolved by setting xd1 explicitly.
xd1: *(xd2 & 8) | xd4 & 9 | xd5 & 9
xd2: xd3 + 2
xd3: 6 & xd1-2
xd4: xd2 + 1
xd5: xd2 + 2

// The above is resolved by setting xd1 explicitly to the wrong
// value, resulting in an error.
xe1: *(xe2 & 8) | xe4 & 9 | xe5 & 9
xe2: xe3 + 2
xe3: 6 & xe1-2
xe4: xe2 + 1
xe5: xe2 + 2
xe1: 9

z1: *(z2 + 1) | z3+5
z2: z3 + 2
z3: z1 - 3
z3: 8
-- out/def --
// The disjunction in xa could be resolved, but as disjunctions
// are not resolved for expression, it remains unresolved.
xa1: 8
xa2: 8
xa4: 10
xa3: 6

// As xb3 is a disjunction, xb2 cannot be resolved and evaluating
// the cycle completely is broken. However, it is not an error
// as the user might still resolve the disjunction.
xb1: 8
xb2: 8
xb4: 10
xb3: 6

// Another variant with more disjunctions. xc1 remains with two
// possibilities. Technically, only the first value is valid.
// However, to fully determine that, all options of the remaining
// disjunction will have to be evaluated algebraically, which is
// not done.
xc1: *8 | 9 | _|_ // conflicting values 10 and 9
xc2: 8
xc4: 9
xc5: 10
xc3: 6

// The above is resolved by setting xd1 explicitly.
xd1: *8 | 9 | _|_ // conflicting values 10 and 9
xd2: 8
xd4: 9
xd5: 10
xd3: 6

// The above is resolved by setting xd1 explicitly to the wrong
// value, resulting in an error.
xe1: _|_ // conflicting values 6 and 7
xe2: _|_ // conflicting values 6 and 7
xe4: _|_ // conflicting values 6 and 7
xe5: _|_ // conflicting values 6 and 7
xe3: _|_ // conflicting values 6 and 7
z1:  *11 | 13
z2:  10
z3:  8
-- out/legacy-debug --
<0>{xa1: 8, xa2: 8, xa4: 10, xa3: 6, xb1: 8, xb2: 8, xb4: 10, xb3: 6, xc1: (*8 | 9), xc2: 8, xc4: 9, xc5: 10, xc3: 6, xd1: (*8 | 9), xd2: 8, xd4: 9, xd5: 10, xd3: 6, xe1: _|_((6 & 7):conflicting values 6 and 7), xe2: _|_((6 & 7):conflicting values 6 and 7), xe4: _|_((6 & 7):conflicting values 6 and 7), xe5: _|_((6 & 7):conflicting values 6 and 7), xe3: _|_((6 & 7):conflicting values 6 and 7), z1: (*11 | 13), z2: 10, z3: 8}
-- out/compile --
--- in.cue
{
  xa1: ((〈0;xa2〉 & 8)|*(〈0;xa4〉 & 9))
  xa2: (〈0;xa3〉 + 2)
  xa3: (6 & (〈0;xa1〉 - 2))
  xa4: (〈0;xa2〉 + 2)
  xb1: (*(〈0;xb2〉 & 8)|(〈0;xb4〉 & 9))
  xb2: (〈0;xb3〉 + 2)
  xb3: (*(6 & (〈0;xb1〉 - 2))|(〈0;xb4〉 & 9))
  xb4: (〈0;xb2〉 + 2)
  xc1: (*(〈0;xc2〉 & 8)|(〈0;xc4〉 & 9)|(〈0;xc5〉 & 9))
  xc2: (〈0;xc3〉 + 2)
  xc3: (6 & (〈0;xc1〉 - 2))
  xc4: (〈0;xc2〉 + 1)
  xc5: (〈0;xc2〉 + 2)
  xd1: (*(〈0;xd2〉 & 8)|(〈0;xd4〉 & 9)|(〈0;xd5〉 & 9))
  xd2: (〈0;xd3〉 + 2)
  xd3: (6 & (〈0;xd1〉 - 2))
  xd4: (〈0;xd2〉 + 1)
  xd5: (〈0;xd2〉 + 2)
  xe1: (*(〈0;xe2〉 & 8)|(〈0;xe4〉 & 9)|(〈0;xe5〉 & 9))
  xe2: (〈0;xe3〉 + 2)
  xe3: (6 & (〈0;xe1〉 - 2))
  xe4: (〈0;xe2〉 + 1)
  xe5: (〈0;xe2〉 + 2)
  xe1: 9
  z1: (*(〈0;z2〉 + 1)|(〈0;z3〉 + 5))
  z2: (〈0;z3〉 + 2)
  z3: (〈0;z1〉 - 3)
  z3: 8
}
-- out/eval --
Errors:
xe1: 2 errors in empty disjunction:
xe1: conflicting values 8 and 9:
    ./in.cue:33:14
    ./in.cue:38:6
xe3: conflicting values 7 and 6:
    ./in.cue:35:6
    ./in.cue:35:10

Result:
(_|_){
  // [eval]
  xa1: (int){ 8 }
  xa2: (int){ 8 }
  xa3: (int){ 6 }
  xa4: (int){ 10 }
  xb1: (int){ 8 }
  xb2: (int){ 8 }
  xb3: (int){ |(*(int){ 6 }, (int){ 9 }) }
  xb4: (int){ 10 }
  xc1: (int){ |(*(int){ 8 }, (int){ 9 }) }
  xc2: (int){ 8 }
  xc3: (int){ 6 }
  xc4: (int){ 9 }
  xc5: (int){ 10 }
  xd1: (int){ |(*(int){ 8 }, (int){ 9 }) }
  xd2: (int){ 8 }
  xd3: (int){ 6 }
  xd4: (int){ 9 }
  xd5: (int){ 10 }
  xe1: (_|_){
    // [eval] xe1: 2 errors in empty disjunction:
    // xe1: conflicting values 8 and 9:
    //     ./in.cue:33:14
    //     ./in.cue:38:6
    // xe3: conflicting values 7 and 6:
    //     ./in.cue:35:6
    //     ./in.cue:35:10
  }
  xe2: (_|_){
    // [eval] xe3: conflicting values 7 and 6:
    //     ./in.cue:35:6
    //     ./in.cue:35:10
  }
  xe3: (_|_){
    // [eval] xe3: conflicting values 7 and 6:
    //     ./in.cue:35:6
    //     ./in.cue:35:10
  }
  xe4: (_|_){
    // [eval] xe3: conflicting values 7 and 6:
    //     ./in.cue:35:6
    //     ./in.cue:35:10
  }
  xe5: (_|_){
    // [eval] xe3: conflicting values 7 and 6:
    //     ./in.cue:35:6
    //     ./in.cue:35:10
  }
  z1: (int){ |(*(int){ 11 }, (int){ 13 }) }
  z2: (int){ 10 }
  z3: (int){ 8 }
}
