// Here one comprehension creates a number of distinct values, each of which
// with a disjunction, then another comprehension maps them back to the
// same value, creating a large number of disjunctions.
//
// The disjunctions cannot be identified as equal in the general case. If no
// care is taken, disjunction elimination will be exponential, causing over
// a billion disjuncts to process in the below example. With the proper
// optimizations, there is a small, constant number of disjunction ops per
// disjunct.
//
// Issue #651
-- in.cue --
list: [
	0, 1, 2, 3, 4, 5, 6, 7, 8,
	9, 10, 11, 12, 13, 14, 15, 16,
	17, 18, 19, 20, 21, 22, 23, 24,
	25, 26, 27, 28, 29, 30,
]
a: [X=string]: text: *"default" | string

a: {
	for i in list {
		"\(i)": text: string
	}
}

b: {
	for x in a {
		"\(x.text)":  { text: x.text }
	}
}
-- out/eval --
(struct){
  list: (#list){
    0: (int){ 0 }
    1: (int){ 1 }
    2: (int){ 2 }
    3: (int){ 3 }
    4: (int){ 4 }
    5: (int){ 5 }
    6: (int){ 6 }
    7: (int){ 7 }
    8: (int){ 8 }
    9: (int){ 9 }
    10: (int){ 10 }
    11: (int){ 11 }
    12: (int){ 12 }
    13: (int){ 13 }
    14: (int){ 14 }
    15: (int){ 15 }
    16: (int){ 16 }
    17: (int){ 17 }
    18: (int){ 18 }
    19: (int){ 19 }
    20: (int){ 20 }
    21: (int){ 21 }
    22: (int){ 22 }
    23: (int){ 23 }
    24: (int){ 24 }
    25: (int){ 25 }
    26: (int){ 26 }
    27: (int){ 27 }
    28: (int){ 28 }
    29: (int){ 29 }
    30: (int){ 30 }
  }
  a: (struct){
    "0": (struct){
      text: (string){ |(*(string){ "default" }, (string){ string }) }
    }
    "1": (struct){
      text: (string){ |(*(string){ "default" }, (string){ string }) }
    }
    "2": (struct){
      text: (string){ |(*(string){ "default" }, (string){ string }) }
    }
    "3": (struct){
      text: (string){ |(*(string){ "default" }, (string){ string }) }
    }
    "4": (struct){
      text: (string){ |(*(string){ "default" }, (string){ string }) }
    }
    "5": (struct){
      text: (string){ |(*(string){ "default" }, (string){ string }) }
    }
    "6": (struct){
      text: (string){ |(*(string){ "default" }, (string){ string }) }
    }
    "7": (struct){
      text: (string){ |(*(string){ "default" }, (string){ string }) }
    }
    "8": (struct){
      text: (string){ |(*(string){ "default" }, (string){ string }) }
    }
    "9": (struct){
      text: (string){ |(*(string){ "default" }, (string){ string }) }
    }
    "10": (struct){
      text: (string){ |(*(string){ "default" }, (string){ string }) }
    }
    "11": (struct){
      text: (string){ |(*(string){ "default" }, (string){ string }) }
    }
    "12": (struct){
      text: (string){ |(*(string){ "default" }, (string){ string }) }
    }
    "13": (struct){
      text: (string){ |(*(string){ "default" }, (string){ string }) }
    }
    "14": (struct){
      text: (string){ |(*(string){ "default" }, (string){ string }) }
    }
    "15": (struct){
      text: (string){ |(*(string){ "default" }, (string){ string }) }
    }
    "16": (struct){
      text: (string){ |(*(string){ "default" }, (string){ string }) }
    }
    "17": (struct){
      text: (string){ |(*(string){ "default" }, (string){ string }) }
    }
    "18": (struct){
      text: (string){ |(*(string){ "default" }, (string){ string }) }
    }
    "19": (struct){
      text: (string){ |(*(string){ "default" }, (string){ string }) }
    }
    "20": (struct){
      text: (string){ |(*(string){ "default" }, (string){ string }) }
    }
    "21": (struct){
      text: (string){ |(*(string){ "default" }, (string){ string }) }
    }
    "22": (struct){
      text: (string){ |(*(string){ "default" }, (string){ string }) }
    }
    "23": (struct){
      text: (string){ |(*(string){ "default" }, (string){ string }) }
    }
    "24": (struct){
      text: (string){ |(*(string){ "default" }, (string){ string }) }
    }
    "25": (struct){
      text: (string){ |(*(string){ "default" }, (string){ string }) }
    }
    "26": (struct){
      text: (string){ |(*(string){ "default" }, (string){ string }) }
    }
    "27": (struct){
      text: (string){ |(*(string){ "default" }, (string){ string }) }
    }
    "28": (struct){
      text: (string){ |(*(string){ "default" }, (string){ string }) }
    }
    "29": (struct){
      text: (string){ |(*(string){ "default" }, (string){ string }) }
    }
    "30": (struct){
      text: (string){ |(*(string){ "default" }, (string){ string }) }
    }
  }
  b: (struct){
    default: (struct){
      text: (string){ |(*(string){ "default" }, (string){ string }) }
    }
  }
}
-- out/compile --
--- in.cue
{
  list: [
    0,
    1,
    2,
    3,
    4,
    5,
    6,
    7,
    8,
    9,
    10,
    11,
    12,
    13,
    14,
    15,
    16,
    17,
    18,
    19,
    20,
    21,
    22,
    23,
    24,
    25,
    26,
    27,
    28,
    29,
    30,
  ]
  a: {
    [string]: {
      text: (*"default"|string)
    }
  }
  a: {
    for _, i in 〈1;list〉 {
      "\(〈1;i〉)": {
        text: string
      }
    }
  }
  b: {
    for _, x in 〈1;a〉 {
      "\(〈1;x〉.text)": {
        text: 〈2;x〉.text
      }
    }
  }
}
