-- in.cue --
// Given the existence of this field, embedDefault is a struct. This
// means that embedding this conjunction into `embedDefault` itself should
// make it resolve to `{a: 2}`.

default: {
    y: *1 | {a: 2}
    y
}

unambiguous: {
    y: 1 | {a: 2}
    y
}

forDefault: {
    y: *1 | {a: 2}
    for x in [1] {y}
}

// Carry over default to first disjunct.
openDefault: {
    #y: *1 | {a: 2}
    #y
}

openAmbiguous: {
    #y: 1 | {a: 2}
    #y
}

forceStruct: {
    #y: 1 | {a: 2}
    #y
    {}
}

defaultsMulti: {
    a: {
        #def: {
            *{} | {a: string} | {b: string}
            *{} | {c: string} | {d: string}
        }

        a: #def & {a: "foo"}
    }

    b: {
        #def: {
            *{} | {a: string} | {b: string}
            *{} | {c: string} | {d: string}
            *{} | {d: string} | {e: string}
        }

        a: #def & {a: "foo", e: "bar"}
    }
}

nested: {
	a: 1 | 2 | *(
		(3 | 4 | *( 5 | 6 | *7)) & ( 3 | 4 | ( *7 | 8 )))
}

-- out/eval --
(struct){
  default: (struct){
    y: ((int|struct)){ |(*(int){ 1 }, (struct){
        a: (int){ 2 }
      }) }
    a: (int){ 2 }
  }
  unambiguous: (struct){
    y: ((int|struct)){ |((int){ 1 }, (struct){
        a: (int){ 2 }
      }) }
    a: (int){ 2 }
  }
  forDefault: (struct){
    y: ((int|struct)){ |(*(int){ 1 }, (struct){
        a: (int){ 2 }
      }) }
    a: (int){ 2 }
  }
  openDefault: ((int|struct)){ |(*(int){
      1
      #y: ((int|struct)){ |(*(int){ 1 }, (#struct){
          a: (int){ 2 }
        }) }
    }, (#struct){
      #y: ((int|struct)){ |(*(int){ 1 }, (#struct){
          a: (int){ 2 }
        }) }
      a: (int){ 2 }
    }) }
  openAmbiguous: ((int|struct)){ |((int){
      1
      #y: ((int|struct)){ |((int){ 1 }, (#struct){
          a: (int){ 2 }
        }) }
    }, (#struct){
      #y: ((int|struct)){ |((int){ 1 }, (#struct){
          a: (int){ 2 }
        }) }
      a: (int){ 2 }
    }) }
  forceStruct: (#struct){
    #y: ((int|struct)){ |((int){ 1 }, (#struct){
        a: (int){ 2 }
      }) }
    a: (int){ 2 }
  }
  defaultsMulti: (struct){
    a: (struct){
      #def: (struct){ |(*(#struct){
        }, (#struct){
          c: (string){ string }
        }, (#struct){
          d: (string){ string }
        }, (#struct){
          a: (string){ string }
        }, (#struct){
          a: (string){ string }
          c: (string){ string }
        }, (#struct){
          a: (string){ string }
          d: (string){ string }
        }, (#struct){
          b: (string){ string }
        }, (#struct){
          b: (string){ string }
          c: (string){ string }
        }, (#struct){
          b: (string){ string }
          d: (string){ string }
        }) }
      a: (struct){ |(*(#struct){
          a: (string){ "foo" }
        }, (#struct){
          a: (string){ "foo" }
          c: (string){ string }
        }, (#struct){
          a: (string){ "foo" }
          d: (string){ string }
        }) }
    }
    b: (struct){
      #def: (struct){ |(*(#struct){
        }, (#struct){
          d: (string){ string }
        }, (#struct){
          e: (string){ string }
        }, (#struct){
          c: (string){ string }
        }, (#struct){
          c: (string){ string }
          d: (string){ string }
        }, (#struct){
          c: (string){ string }
          e: (string){ string }
        }, (#struct){
          d: (string){ string }
        }, (#struct){
          d: (string){ string }
        }, (#struct){
          d: (string){ string }
          e: (string){ string }
        }, (#struct){
          a: (string){ string }
        }, (#struct){
          a: (string){ string }
          d: (string){ string }
        }, (#struct){
          a: (string){ string }
          e: (string){ string }
        }, (#struct){
          a: (string){ string }
          c: (string){ string }
        }, (#struct){
          a: (string){ string }
          c: (string){ string }
          d: (string){ string }
        }, (#struct){
          a: (string){ string }
          c: (string){ string }
          e: (string){ string }
        }, (#struct){
          a: (string){ string }
          d: (string){ string }
        }, (#struct){
          a: (string){ string }
          d: (string){ string }
        }, (#struct){
          a: (string){ string }
          d: (string){ string }
          e: (string){ string }
        }, (#struct){
          b: (string){ string }
        }, (#struct){
          b: (string){ string }
          d: (string){ string }
        }, (#struct){
          b: (string){ string }
          e: (string){ string }
        }, (#struct){
          b: (string){ string }
          c: (string){ string }
        }, (#struct){
          b: (string){ string }
          c: (string){ string }
          d: (string){ string }
        }, (#struct){
          b: (string){ string }
          c: (string){ string }
          e: (string){ string }
        }, (#struct){
          b: (string){ string }
          d: (string){ string }
        }, (#struct){
          b: (string){ string }
          d: (string){ string }
        }, (#struct){
          b: (string){ string }
          d: (string){ string }
          e: (string){ string }
        }) }
      a: (struct){ |(*(#struct){
          a: (string){ "foo" }
          e: (string){ "bar" }
        }, (#struct){
          a: (string){ "foo" }
          e: (string){ "bar" }
          c: (string){ string }
        }, (#struct){
          a: (string){ "foo" }
          e: (string){ "bar" }
          d: (string){ string }
        }) }
    }
  }
  nested: (struct){
    a: (int){ |(*(int){ 7 }, (int){ 2 }, (int){ 3 }, (int){ 4 }, (int){ 1 }) }
  }
}
-- out/compile --
--- in.cue
{
  default: {
    y: (*1|{
      a: 2
    })
    〈0;y〉
  }
  unambiguous: {
    y: (1|{
      a: 2
    })
    〈0;y〉
  }
  forDefault: {
    y: (*1|{
      a: 2
    })
    for _, x in [
      1,
    ] {
      〈2;y〉
    }
  }
  openDefault: {
    #y: (*1|{
      a: 2
    })
    〈0;#y〉
  }
  openAmbiguous: {
    #y: (1|{
      a: 2
    })
    〈0;#y〉
  }
  forceStruct: {
    #y: (1|{
      a: 2
    })
    〈0;#y〉
    {}
  }
  defaultsMulti: {
    a: {
      #def: {
        (*{}|{
          a: string
        }|{
          b: string
        })
        (*{}|{
          c: string
        }|{
          d: string
        })
      }
      a: (〈0;#def〉 & {
        a: "foo"
      })
    }
    b: {
      #def: {
        (*{}|{
          a: string
        }|{
          b: string
        })
        (*{}|{
          c: string
        }|{
          d: string
        })
        (*{}|{
          d: string
        }|{
          e: string
        })
      }
      a: (〈0;#def〉 & {
        a: "foo"
        e: "bar"
      })
    }
  }
  nested: {
    a: (1|2|*((3|4|*(5|6|*7)) & (3|4|(*7|8))))
  }
}
