cuelang.org/go@v0.10.1/cue/testdata/eval/let.txtar (about)

     1  -- in.cue --
     2   let A = 3 * 3
     3  let B = A + A
     4  let C = B + B
     5  let D = C + C
     6  let E = D + D
     7  let F = E + E
     8  b: {
     9  	let G = F + F
    10  	let H = G + G
    11  	let I = H + H
    12  	let J = I + I
    13  	let K = J + J
    14  	let L = K + K
    15  	let M = L + L
    16  	let N = M + M
    17  	let O = N + N
    18  	let P = O + O
    19  	let Q = P + P
    20  	let R = Q + Q
    21  	let S = R + R
    22  	let T = S + S
    23  
    24  	a: T
    25  	b: F
    26  }
    27  issue1828: {
    28  	volumes: L3
    29  
    30  	let L3 = {
    31  		for v2 in [for v1 in L2 {}] {}
    32  	}
    33  
    34  	let L2 = L1
    35  	let L1 = []
    36  }
    37  ignoreErrorInLet: {
    38  	let X = 1 & 2
    39  	disjunction: *X | 3
    40  }
    41  -- incomprehension.cue --
    42  // for comprehensions in list do not have to split the let as each instance
    43  // is already associated with a separate environment.
    44  list: {
    45  	l: [ 1, 2, 3 ]
    46  	c: [
    47  		for v in l {
    48  			let X = v*4 // can share
    49  			X
    50  		}
    51  	]
    52  }
    53  
    54  referencesForDirectly: {
    55  	l: [ 1, 2, 3 ]
    56  	for k, v in l {
    57  		let Y = v*4 // multi
    58  		"\(k)": Y
    59  	}
    60  }
    61  
    62  referencesForViaLet: {
    63  	l: [ 1, 2, 3 ]
    64  	for k, v in l let X = v*4 {
    65  		let Y = X // multi
    66  		"\(k)": Y
    67  	}
    68  }
    69  
    70  letClauseReferencesInert: {
    71  	x: 2
    72  	l: [ 1, 2, 3 ]
    73  	for k, v in l let X = x {
    74  		let Y = X // can share
    75  		"\(k)": Y
    76  	}
    77  }
    78  
    79  // for indirect references, it is okay to not "split" a let clause, as the
    80  // it will only fail as a result of not splitting if the referred values
    81  // would fail as well.
    82  indirectReference: {
    83  	l: [ 1, 2, 3 ]
    84  	for k, v in l {
    85  		y: v // fails if v differs for each y.
    86  		let X = y*4 // can share, as y fails if let fails.
    87  		"\(k)": X
    88  	}
    89  }
    90  
    91  nestedFor: {
    92  	for k, y in [ 4, 5 ] {
    93  		let X = {
    94  			for x in [ 1, 2 ] {
    95  				let X = x
    96  				"\(X)": X
    97  			}
    98  		}
    99  		"\(k)": X
   100  	}
   101  }
   102  
   103  -- issue2166.cue --
   104  letWithDynamicInComprehension: {
   105  	_i: {
   106  		a: "d"
   107  		b: "e"
   108  	}
   109  
   110  	for k, v in _i {
   111  		let T = v
   112  		(T): "1"
   113  	}
   114  }
   115  -- issue2218.cue --
   116  _parent_configs: {
   117  	PARENT: true
   118  }
   119  _configs: {
   120  	CHILD1: {
   121  		property: true
   122  	}
   123  	CHILD2: {
   124  		property: true
   125  		parent:      "PARENT"
   126  	}
   127  }
   128  disabled_parent_test: {for k, v in _configs {
   129  	let parent_config = (*_parent_configs[v.parent] | false)
   130  	"\(k)": {
   131  		"parent_config": parent_config
   132  	}
   133  }}
   134  -- issue2063.cue --
   135  import (
   136  	"encoding/yaml"
   137  	"strings"
   138  )
   139  
   140  // Issue #2063
   141  keepDescending: t1: {
   142  	ec: {}
   143  	bs: {
   144  		let m = ec.b
   145  		if m == _|_ { }
   146  		x: y: ""
   147  	}
   148  }
   149  
   150  keepDescending: t2: {
   151  	x: yaml.Marshal(bs)
   152  
   153  	ec: {}
   154  	bs: {
   155  		let m = ec.b
   156  		if m.b == _|_ { }
   157  		X: Y: strings.Join([], "")
   158  	}
   159  }
   160  
   161  -- out/evalalpha/stats --
   162  Leaks:  226
   163  Freed:  16
   164  Reused: 16
   165  Allocs: 226
   166  Retain: 0
   167  
   168  Unifications: 210
   169  Conjuncts:    1451
   170  Disjuncts:    32
   171  -- out/evalalpha --
   172  Errors:
   173  indirectReference.y: conflicting values 2 and 1:
   174      ./incomprehension.cue:42:7
   175      ./incomprehension.cue:42:10
   176  indirectReference.y: conflicting values 3 and 1:
   177      ./incomprehension.cue:42:7
   178      ./incomprehension.cue:42:13
   179  
   180  Result:
   181  (_|_){
   182    // [eval]
   183    let A#1 = (int){ 9 }
   184    let B#2 = (int){ 18 }
   185    let C#3 = (int){ 36 }
   186    let D#4 = (int){ 72 }
   187    let E#5 = (int){ 144 }
   188    let F#6 = (int){ 288 }
   189    b: (struct){
   190      let G#7 = (int){ 576 }
   191      let H#8 = (int){ 1152 }
   192      let I#9 = (int){ 2304 }
   193      let J#A = (int){ 4608 }
   194      let K#B = (int){ 9216 }
   195      let L#C = (int){ 18432 }
   196      let M#D = (int){ 36864 }
   197      let N#E = (int){ 73728 }
   198      let O#F = (int){ 147456 }
   199      let P#10 = (int){ 294912 }
   200      let Q#11 = (int){ 589824 }
   201      let R#12 = (int){ 1179648 }
   202      let S#13 = (int){ 2359296 }
   203      let T#14 = (int){ 4718592 }
   204      a: (int){ 4718592 }
   205      b: (int){ 288 }
   206    }
   207    issue1828: (struct){
   208      volumes: (struct){
   209      }
   210      let L3#15 = (struct){
   211      }
   212      let L2#16 = (#list){
   213      }
   214      let L1#17 = (#list){
   215      }
   216    }
   217    ignoreErrorInLet: (struct){
   218      let X#18 = (_|_){
   219        // [eval] ignoreErrorInLet.X: conflicting values 2 and 1:
   220        //     ./in.cue:37:10
   221        //     ./in.cue:37:14
   222      }
   223      disjunction: (int){ 3 }
   224    }
   225    list: (struct){
   226      l: (#list){
   227        0: (int){ 1 }
   228        1: (int){ 2 }
   229        2: (int){ 3 }
   230      }
   231      c: (#list){
   232        0: (int){
   233          4
   234          let X#19 = (int){ 4 }
   235        }
   236        1: (int){
   237          8
   238          let X#19 = (int){ 8 }
   239        }
   240        2: (int){
   241          12
   242          let X#19 = (int){ 12 }
   243        }
   244      }
   245    }
   246    referencesForDirectly: (struct){
   247      l: (#list){
   248        0: (int){ 1 }
   249        1: (int){ 2 }
   250        2: (int){ 3 }
   251      }
   252      let Y#1Amulti = (〈1;v〉 * 4)
   253      "0": (int){ 4 }
   254      "1": (int){ 8 }
   255      "2": (int){ 12 }
   256    }
   257    referencesForViaLet: (struct){
   258      l: (#list){
   259        0: (int){ 1 }
   260        1: (int){ 2 }
   261        2: (int){ 3 }
   262      }
   263      let Y#1Bmulti = 〈1;X〉
   264      "0": (int){ 4 }
   265      "1": (int){ 8 }
   266      "2": (int){ 12 }
   267    }
   268    letClauseReferencesInert: (struct){
   269      x: (int){ 2 }
   270      l: (#list){
   271        0: (int){ 1 }
   272        1: (int){ 2 }
   273        2: (int){ 3 }
   274      }
   275      let Y#1C = (int){ 2 }
   276      "0": (int){ 2 }
   277      "1": (int){ 2 }
   278      "2": (int){ 2 }
   279    }
   280    indirectReference: (_|_){
   281      // [eval]
   282      l: (#list){
   283        0: (int){ 1 }
   284        1: (int){ 2 }
   285        2: (int){ 3 }
   286      }
   287      y: (_|_){
   288        // [eval] indirectReference.y: conflicting values 2 and 1:
   289        //     ./incomprehension.cue:42:7
   290        //     ./incomprehension.cue:42:10
   291        // indirectReference.y: conflicting values 3 and 1:
   292        //     ./incomprehension.cue:42:7
   293        //     ./incomprehension.cue:42:13
   294      }
   295      let X#1D = (_|_){
   296        // [eval] indirectReference.y: conflicting values 2 and 1:
   297        //     ./incomprehension.cue:42:7
   298        //     ./incomprehension.cue:42:10
   299        // indirectReference.y: conflicting values 3 and 1:
   300        //     ./incomprehension.cue:42:7
   301        //     ./incomprehension.cue:42:13
   302      }
   303      "0": (_|_){
   304        // [eval] indirectReference.y: conflicting values 2 and 1:
   305        //     ./incomprehension.cue:42:7
   306        //     ./incomprehension.cue:42:10
   307        // indirectReference.y: conflicting values 3 and 1:
   308        //     ./incomprehension.cue:42:7
   309        //     ./incomprehension.cue:42:13
   310      }
   311      "1": (_|_){
   312        // [eval] indirectReference.y: conflicting values 2 and 1:
   313        //     ./incomprehension.cue:42:7
   314        //     ./incomprehension.cue:42:10
   315        // indirectReference.y: conflicting values 3 and 1:
   316        //     ./incomprehension.cue:42:7
   317        //     ./incomprehension.cue:42:13
   318      }
   319      "2": (_|_){
   320        // [eval] indirectReference.y: conflicting values 2 and 1:
   321        //     ./incomprehension.cue:42:7
   322        //     ./incomprehension.cue:42:10
   323        // indirectReference.y: conflicting values 3 and 1:
   324        //     ./incomprehension.cue:42:7
   325        //     ./incomprehension.cue:42:13
   326      }
   327    }
   328    nestedFor: (struct){
   329      let X#1Emulti = {
   330        for _, x in [
   331          1,
   332          2,
   333        ] {
   334          let X#1Fmulti = 〈1;x〉
   335          "\(〈0;let X#1F〉)": 〈0;let X#1F〉
   336        }
   337      }
   338      "0": (struct){
   339        let X#1Fmulti = 〈1;x〉
   340        "2": (int){ 2 }
   341        "1": (int){ 1 }
   342      }
   343      "1": (struct){
   344        let X#1Fmulti = 〈1;x〉
   345        "2": (int){ 2 }
   346        "1": (int){ 1 }
   347      }
   348    }
   349    keepDescending: (struct){
   350      t1: (struct){
   351        ec: (struct){
   352        }
   353        bs: (struct){
   354          let m#21 = (_|_){
   355            // [incomplete] keepDescending.t1.bs.m: undefined field: b:
   356            //     ./issue2063.cue:10:14
   357          }
   358          x: (struct){
   359            y: (string){ "" }
   360          }
   361        }
   362      }
   363      t2: (struct){
   364        x: (string){ "X:\n  \"Y\": \"\"\n" }
   365        ec: (struct){
   366        }
   367        bs: (struct){
   368          let m#22 = (_|_){
   369            // [incomplete] keepDescending.t2.bs.m: undefined field: b:
   370            //     ./issue2063.cue:21:14
   371          }
   372          X: (struct){
   373            Y: (string){ "" }
   374          }
   375        }
   376      }
   377    }
   378    letWithDynamicInComprehension: (struct){
   379      _i: (struct){
   380        a: (string){ "d" }
   381        b: (string){ "e" }
   382      }
   383      let T#23multi = 〈1;v〉
   384      e: (string){ "1" }
   385      d: (string){ "1" }
   386    }
   387    _parent_configs: (struct){
   388      PARENT: (bool){ true }
   389    }
   390    _configs: (struct){
   391      CHILD1: (struct){
   392        property: (bool){ true }
   393      }
   394      CHILD2: (struct){
   395        property: (bool){ true }
   396        parent: (string){ "PARENT" }
   397      }
   398    }
   399    disabled_parent_test: (struct){
   400      let parent_config#24multi = (*〈3;_parent_configs〉[〈1;v〉.parent]|false)
   401      CHILD1: (struct){
   402        parent_config: (bool){ false }
   403      }
   404      CHILD2: (struct){
   405        parent_config: (bool){ |(*(bool){ true }, (bool){ false }) }
   406      }
   407    }
   408  }
   409  -- diff/-out/evalalpha<==>+out/eval --
   410  diff old new
   411  --- old
   412  +++ new
   413  @@ -2,13 +2,9 @@
   414   indirectReference.y: conflicting values 2 and 1:
   415       ./incomprehension.cue:42:7
   416       ./incomprehension.cue:42:10
   417  -    ./incomprehension.cue:43:2
   418  -    ./incomprehension.cue:44:6
   419   indirectReference.y: conflicting values 3 and 1:
   420       ./incomprehension.cue:42:7
   421       ./incomprehension.cue:42:13
   422  -    ./incomprehension.cue:43:2
   423  -    ./incomprehension.cue:44:6
   424   
   425   Result:
   426   (_|_){
   427  @@ -121,61 +117,41 @@
   428         // [eval] indirectReference.y: conflicting values 2 and 1:
   429         //     ./incomprehension.cue:42:7
   430         //     ./incomprehension.cue:42:10
   431  -      //     ./incomprehension.cue:43:2
   432  -      //     ./incomprehension.cue:44:6
   433  -      // indirectReference.y: conflicting values 3 and 1:
   434  -      //     ./incomprehension.cue:42:7
   435  -      //     ./incomprehension.cue:42:13
   436  -      //     ./incomprehension.cue:43:2
   437  -      //     ./incomprehension.cue:44:6
   438  +      // indirectReference.y: conflicting values 3 and 1:
   439  +      //     ./incomprehension.cue:42:7
   440  +      //     ./incomprehension.cue:42:13
   441       }
   442       let X#1D = (_|_){
   443         // [eval] indirectReference.y: conflicting values 2 and 1:
   444         //     ./incomprehension.cue:42:7
   445         //     ./incomprehension.cue:42:10
   446  -      //     ./incomprehension.cue:43:2
   447  -      //     ./incomprehension.cue:44:6
   448  -      // indirectReference.y: conflicting values 3 and 1:
   449  -      //     ./incomprehension.cue:42:7
   450  -      //     ./incomprehension.cue:42:13
   451  -      //     ./incomprehension.cue:43:2
   452  -      //     ./incomprehension.cue:44:6
   453  +      // indirectReference.y: conflicting values 3 and 1:
   454  +      //     ./incomprehension.cue:42:7
   455  +      //     ./incomprehension.cue:42:13
   456       }
   457       "0": (_|_){
   458         // [eval] indirectReference.y: conflicting values 2 and 1:
   459         //     ./incomprehension.cue:42:7
   460         //     ./incomprehension.cue:42:10
   461  -      //     ./incomprehension.cue:43:2
   462  -      //     ./incomprehension.cue:44:6
   463  -      // indirectReference.y: conflicting values 3 and 1:
   464  -      //     ./incomprehension.cue:42:7
   465  -      //     ./incomprehension.cue:42:13
   466  -      //     ./incomprehension.cue:43:2
   467  -      //     ./incomprehension.cue:44:6
   468  +      // indirectReference.y: conflicting values 3 and 1:
   469  +      //     ./incomprehension.cue:42:7
   470  +      //     ./incomprehension.cue:42:13
   471       }
   472       "1": (_|_){
   473         // [eval] indirectReference.y: conflicting values 2 and 1:
   474         //     ./incomprehension.cue:42:7
   475         //     ./incomprehension.cue:42:10
   476  -      //     ./incomprehension.cue:43:2
   477  -      //     ./incomprehension.cue:44:6
   478  -      // indirectReference.y: conflicting values 3 and 1:
   479  -      //     ./incomprehension.cue:42:7
   480  -      //     ./incomprehension.cue:42:13
   481  -      //     ./incomprehension.cue:43:2
   482  -      //     ./incomprehension.cue:44:6
   483  +      // indirectReference.y: conflicting values 3 and 1:
   484  +      //     ./incomprehension.cue:42:7
   485  +      //     ./incomprehension.cue:42:13
   486       }
   487       "2": (_|_){
   488         // [eval] indirectReference.y: conflicting values 2 and 1:
   489         //     ./incomprehension.cue:42:7
   490         //     ./incomprehension.cue:42:10
   491  -      //     ./incomprehension.cue:43:2
   492  -      //     ./incomprehension.cue:44:6
   493  -      // indirectReference.y: conflicting values 3 and 1:
   494  -      //     ./incomprehension.cue:42:7
   495  -      //     ./incomprehension.cue:42:13
   496  -      //     ./incomprehension.cue:43:2
   497  -      //     ./incomprehension.cue:44:6
   498  +      // indirectReference.y: conflicting values 3 and 1:
   499  +      //     ./incomprehension.cue:42:7
   500  +      //     ./incomprehension.cue:42:13
   501       }
   502     }
   503     nestedFor: (struct){
   504  @@ -190,13 +166,13 @@
   505       }
   506       "0": (struct){
   507         let X#1Fmulti = 〈1;x〉
   508  -      "1": (int){ 1 }
   509  -      "2": (int){ 2 }
   510  +      "2": (int){ 2 }
   511  +      "1": (int){ 1 }
   512       }
   513       "1": (struct){
   514         let X#1Fmulti = 〈1;x〉
   515  -      "1": (int){ 1 }
   516  -      "2": (int){ 2 }
   517  +      "2": (int){ 2 }
   518  +      "1": (int){ 1 }
   519       }
   520     }
   521     keepDescending: (struct){
   522  @@ -234,8 +210,8 @@
   523         b: (string){ "e" }
   524       }
   525       let T#23multi = 〈1;v〉
   526  -    d: (string){ "1" }
   527       e: (string){ "1" }
   528  +    d: (string){ "1" }
   529     }
   530     _parent_configs: (struct){
   531       PARENT: (bool){ true }
   532  -- diff/-out/evalalpha/stats<==>+out/eval/stats --
   533  diff old new
   534  --- old
   535  +++ new
   536  @@ -1,9 +1,9 @@
   537  -Leaks:  51
   538  -Freed:  159
   539  -Reused: 150
   540  -Allocs: 60
   541  -Retain: 188
   542  +Leaks:  226
   543  +Freed:  16
   544  +Reused: 16
   545  +Allocs: 226
   546  +Retain: 0
   547   
   548  -Unifications: 196
   549  -Conjuncts:    373
   550  -Disjuncts:    248
   551  +Unifications: 210
   552  +Conjuncts:    1451
   553  +Disjuncts:    32
   554  -- out/eval/stats --
   555  Leaks:  52
   556  Freed:  158
   557  Reused: 149
   558  Allocs: 61
   559  Retain: 184
   560  
   561  Unifications: 196
   562  Conjuncts:    365
   563  Disjuncts:    241
   564  -- out/eval --
   565  Errors:
   566  indirectReference.y: conflicting values 2 and 1:
   567      ./incomprehension.cue:42:7
   568      ./incomprehension.cue:42:10
   569      ./incomprehension.cue:43:2
   570      ./incomprehension.cue:44:6
   571  indirectReference.y: conflicting values 3 and 1:
   572      ./incomprehension.cue:42:7
   573      ./incomprehension.cue:42:13
   574      ./incomprehension.cue:43:2
   575      ./incomprehension.cue:44:6
   576  
   577  Result:
   578  (_|_){
   579    // [eval]
   580    let A#1 = (int){ 9 }
   581    let B#2 = (int){ 18 }
   582    let C#3 = (int){ 36 }
   583    let D#4 = (int){ 72 }
   584    let E#5 = (int){ 144 }
   585    let F#6 = (int){ 288 }
   586    b: (struct){
   587      let G#7 = (int){ 576 }
   588      let H#8 = (int){ 1152 }
   589      let I#9 = (int){ 2304 }
   590      let J#A = (int){ 4608 }
   591      let K#B = (int){ 9216 }
   592      let L#C = (int){ 18432 }
   593      let M#D = (int){ 36864 }
   594      let N#E = (int){ 73728 }
   595      let O#F = (int){ 147456 }
   596      let P#10 = (int){ 294912 }
   597      let Q#11 = (int){ 589824 }
   598      let R#12 = (int){ 1179648 }
   599      let S#13 = (int){ 2359296 }
   600      let T#14 = (int){ 4718592 }
   601      a: (int){ 4718592 }
   602      b: (int){ 288 }
   603    }
   604    issue1828: (struct){
   605      volumes: (struct){
   606      }
   607      let L3#15 = (struct){
   608      }
   609      let L2#16 = (#list){
   610      }
   611      let L1#17 = (#list){
   612      }
   613    }
   614    ignoreErrorInLet: (struct){
   615      let X#18 = (_|_){
   616        // [eval] ignoreErrorInLet.X: conflicting values 2 and 1:
   617        //     ./in.cue:37:10
   618        //     ./in.cue:37:14
   619      }
   620      disjunction: (int){ 3 }
   621    }
   622    list: (struct){
   623      l: (#list){
   624        0: (int){ 1 }
   625        1: (int){ 2 }
   626        2: (int){ 3 }
   627      }
   628      c: (#list){
   629        0: (int){
   630          4
   631          let X#19 = (int){ 4 }
   632        }
   633        1: (int){
   634          8
   635          let X#19 = (int){ 8 }
   636        }
   637        2: (int){
   638          12
   639          let X#19 = (int){ 12 }
   640        }
   641      }
   642    }
   643    referencesForDirectly: (struct){
   644      l: (#list){
   645        0: (int){ 1 }
   646        1: (int){ 2 }
   647        2: (int){ 3 }
   648      }
   649      let Y#1Amulti = (〈1;v〉 * 4)
   650      "0": (int){ 4 }
   651      "1": (int){ 8 }
   652      "2": (int){ 12 }
   653    }
   654    referencesForViaLet: (struct){
   655      l: (#list){
   656        0: (int){ 1 }
   657        1: (int){ 2 }
   658        2: (int){ 3 }
   659      }
   660      let Y#1Bmulti = 〈1;X〉
   661      "0": (int){ 4 }
   662      "1": (int){ 8 }
   663      "2": (int){ 12 }
   664    }
   665    letClauseReferencesInert: (struct){
   666      x: (int){ 2 }
   667      l: (#list){
   668        0: (int){ 1 }
   669        1: (int){ 2 }
   670        2: (int){ 3 }
   671      }
   672      let Y#1C = (int){ 2 }
   673      "0": (int){ 2 }
   674      "1": (int){ 2 }
   675      "2": (int){ 2 }
   676    }
   677    indirectReference: (_|_){
   678      // [eval]
   679      l: (#list){
   680        0: (int){ 1 }
   681        1: (int){ 2 }
   682        2: (int){ 3 }
   683      }
   684      y: (_|_){
   685        // [eval] indirectReference.y: conflicting values 2 and 1:
   686        //     ./incomprehension.cue:42:7
   687        //     ./incomprehension.cue:42:10
   688        //     ./incomprehension.cue:43:2
   689        //     ./incomprehension.cue:44:6
   690        // indirectReference.y: conflicting values 3 and 1:
   691        //     ./incomprehension.cue:42:7
   692        //     ./incomprehension.cue:42:13
   693        //     ./incomprehension.cue:43:2
   694        //     ./incomprehension.cue:44:6
   695      }
   696      let X#1D = (_|_){
   697        // [eval] indirectReference.y: conflicting values 2 and 1:
   698        //     ./incomprehension.cue:42:7
   699        //     ./incomprehension.cue:42:10
   700        //     ./incomprehension.cue:43:2
   701        //     ./incomprehension.cue:44:6
   702        // indirectReference.y: conflicting values 3 and 1:
   703        //     ./incomprehension.cue:42:7
   704        //     ./incomprehension.cue:42:13
   705        //     ./incomprehension.cue:43:2
   706        //     ./incomprehension.cue:44:6
   707      }
   708      "0": (_|_){
   709        // [eval] indirectReference.y: conflicting values 2 and 1:
   710        //     ./incomprehension.cue:42:7
   711        //     ./incomprehension.cue:42:10
   712        //     ./incomprehension.cue:43:2
   713        //     ./incomprehension.cue:44:6
   714        // indirectReference.y: conflicting values 3 and 1:
   715        //     ./incomprehension.cue:42:7
   716        //     ./incomprehension.cue:42:13
   717        //     ./incomprehension.cue:43:2
   718        //     ./incomprehension.cue:44:6
   719      }
   720      "1": (_|_){
   721        // [eval] indirectReference.y: conflicting values 2 and 1:
   722        //     ./incomprehension.cue:42:7
   723        //     ./incomprehension.cue:42:10
   724        //     ./incomprehension.cue:43:2
   725        //     ./incomprehension.cue:44:6
   726        // indirectReference.y: conflicting values 3 and 1:
   727        //     ./incomprehension.cue:42:7
   728        //     ./incomprehension.cue:42:13
   729        //     ./incomprehension.cue:43:2
   730        //     ./incomprehension.cue:44:6
   731      }
   732      "2": (_|_){
   733        // [eval] indirectReference.y: conflicting values 2 and 1:
   734        //     ./incomprehension.cue:42:7
   735        //     ./incomprehension.cue:42:10
   736        //     ./incomprehension.cue:43:2
   737        //     ./incomprehension.cue:44:6
   738        // indirectReference.y: conflicting values 3 and 1:
   739        //     ./incomprehension.cue:42:7
   740        //     ./incomprehension.cue:42:13
   741        //     ./incomprehension.cue:43:2
   742        //     ./incomprehension.cue:44:6
   743      }
   744    }
   745    nestedFor: (struct){
   746      let X#1Emulti = {
   747        for _, x in [
   748          1,
   749          2,
   750        ] {
   751          let X#1Fmulti = 〈1;x〉
   752          "\(〈0;let X#1F〉)": 〈0;let X#1F〉
   753        }
   754      }
   755      "0": (struct){
   756        let X#1Fmulti = 〈1;x〉
   757        "1": (int){ 1 }
   758        "2": (int){ 2 }
   759      }
   760      "1": (struct){
   761        let X#1Fmulti = 〈1;x〉
   762        "1": (int){ 1 }
   763        "2": (int){ 2 }
   764      }
   765    }
   766    keepDescending: (struct){
   767      t1: (struct){
   768        ec: (struct){
   769        }
   770        bs: (struct){
   771          let m#21 = (_|_){
   772            // [incomplete] keepDescending.t1.bs.m: undefined field: b:
   773            //     ./issue2063.cue:10:14
   774          }
   775          x: (struct){
   776            y: (string){ "" }
   777          }
   778        }
   779      }
   780      t2: (struct){
   781        x: (string){ "X:\n  \"Y\": \"\"\n" }
   782        ec: (struct){
   783        }
   784        bs: (struct){
   785          let m#22 = (_|_){
   786            // [incomplete] keepDescending.t2.bs.m: undefined field: b:
   787            //     ./issue2063.cue:21:14
   788          }
   789          X: (struct){
   790            Y: (string){ "" }
   791          }
   792        }
   793      }
   794    }
   795    letWithDynamicInComprehension: (struct){
   796      _i: (struct){
   797        a: (string){ "d" }
   798        b: (string){ "e" }
   799      }
   800      let T#23multi = 〈1;v〉
   801      d: (string){ "1" }
   802      e: (string){ "1" }
   803    }
   804    _parent_configs: (struct){
   805      PARENT: (bool){ true }
   806    }
   807    _configs: (struct){
   808      CHILD1: (struct){
   809        property: (bool){ true }
   810      }
   811      CHILD2: (struct){
   812        property: (bool){ true }
   813        parent: (string){ "PARENT" }
   814      }
   815    }
   816    disabled_parent_test: (struct){
   817      let parent_config#24multi = (*〈3;_parent_configs〉[〈1;v〉.parent]|false)
   818      CHILD1: (struct){
   819        parent_config: (bool){ false }
   820      }
   821      CHILD2: (struct){
   822        parent_config: (bool){ |(*(bool){ true }, (bool){ false }) }
   823      }
   824    }
   825  }
   826  -- out/compile --
   827  --- in.cue
   828  {
   829    let A#1 = (3 * 3)
   830    let B#2 = (〈0;let A#1〉 + 〈0;let A#1〉)
   831    let C#3 = (〈0;let B#2〉 + 〈0;let B#2〉)
   832    let D#4 = (〈0;let C#3〉 + 〈0;let C#3〉)
   833    let E#5 = (〈0;let D#4〉 + 〈0;let D#4〉)
   834    let F#6 = (〈0;let E#5〉 + 〈0;let E#5〉)
   835    b: {
   836      let G#7 = (〈1;let F#6〉 + 〈1;let F#6〉)
   837      let H#8 = (〈0;let G#7〉 + 〈0;let G#7〉)
   838      let I#9 = (〈0;let H#8〉 + 〈0;let H#8〉)
   839      let J#A = (〈0;let I#9〉 + 〈0;let I#9〉)
   840      let K#B = (〈0;let J#A〉 + 〈0;let J#A〉)
   841      let L#C = (〈0;let K#B〉 + 〈0;let K#B〉)
   842      let M#D = (〈0;let L#C〉 + 〈0;let L#C〉)
   843      let N#E = (〈0;let M#D〉 + 〈0;let M#D〉)
   844      let O#F = (〈0;let N#E〉 + 〈0;let N#E〉)
   845      let P#10 = (〈0;let O#F〉 + 〈0;let O#F〉)
   846      let Q#11 = (〈0;let P#10〉 + 〈0;let P#10〉)
   847      let R#12 = (〈0;let Q#11〉 + 〈0;let Q#11〉)
   848      let S#13 = (〈0;let R#12〉 + 〈0;let R#12〉)
   849      let T#14 = (〈0;let S#13〉 + 〈0;let S#13〉)
   850      a: 〈0;let T#14〉
   851      b: 〈1;let F#6〉
   852    }
   853    issue1828: {
   854      volumes: 〈0;let L3#15〉
   855      let L3#15 = {
   856        for _, v2 in [
   857          for _, v1 in 〈2;let L2#16〉 {},
   858        ] {}
   859      }
   860      let L2#16 = 〈0;let L1#17〉
   861      let L1#17 = []
   862    }
   863    ignoreErrorInLet: {
   864      let X#18 = (1 & 2)
   865      disjunction: (*〈0;let X#18〉|3)
   866    }
   867  }
   868  --- incomprehension.cue
   869  {
   870    list: {
   871      l: [
   872        1,
   873        2,
   874        3,
   875      ]
   876      c: [
   877        for _, v in 〈1;l〉 {
   878          let X#19 = (〈1;v〉 * 4)
   879          〈0;let X#19〉
   880        },
   881      ]
   882    }
   883    referencesForDirectly: {
   884      l: [
   885        1,
   886        2,
   887        3,
   888      ]
   889      for k, v in 〈0;l〉 {
   890        let Y#1Amulti = (〈1;v〉 * 4)
   891        "\(〈1;k〉)": 〈0;let Y#1A〉
   892      }
   893    }
   894    referencesForViaLet: {
   895      l: [
   896        1,
   897        2,
   898        3,
   899      ]
   900      for k, v in 〈0;l〉 let X = (〈0;v〉 * 4) {
   901        let Y#1Bmulti = 〈1;X〉
   902        "\(〈2;k〉)": 〈0;let Y#1B〉
   903      }
   904    }
   905    letClauseReferencesInert: {
   906      x: 2
   907      l: [
   908        1,
   909        2,
   910        3,
   911      ]
   912      for k, v in 〈0;l〉 let X = 〈1;x〉 {
   913        let Y#1C = 〈1;X〉
   914        "\(〈2;k〉)": 〈0;let Y#1C〉
   915      }
   916    }
   917    indirectReference: {
   918      l: [
   919        1,
   920        2,
   921        3,
   922      ]
   923      for k, v in 〈0;l〉 {
   924        y: 〈1;v〉
   925        let X#1D = (〈0;y〉 * 4)
   926        "\(〈1;k〉)": 〈0;let X#1D〉
   927      }
   928    }
   929    nestedFor: {
   930      for k, y in [
   931        4,
   932        5,
   933      ] {
   934        let X#1Emulti = {
   935          for _, x in [
   936            1,
   937            2,
   938          ] {
   939            let X#1Fmulti = 〈1;x〉
   940            "\(〈0;let X#1F〉)": 〈0;let X#1F〉
   941          }
   942        }
   943        "\(〈1;k〉)": 〈0;let X#1E〉
   944      }
   945    }
   946  }
   947  --- issue2063.cue
   948  {
   949    keepDescending: {
   950      t1: {
   951        ec: {}
   952        bs: {
   953          let m#21 = 〈1;ec〉.b
   954          if (〈0;let m#21〉 == _|_(explicit error (_|_ literal) in source)) {}
   955          x: {
   956            y: ""
   957          }
   958        }
   959      }
   960    }
   961    keepDescending: {
   962      t2: {
   963        x: 〈import;"encoding/yaml"〉.Marshal(〈0;bs〉)
   964        ec: {}
   965        bs: {
   966          let m#22 = 〈1;ec〉.b
   967          if (〈0;let m#22〉.b == _|_(explicit error (_|_ literal) in source)) {}
   968          X: {
   969            Y: 〈import;strings〉.Join([], "")
   970          }
   971        }
   972      }
   973    }
   974  }
   975  --- issue2166.cue
   976  {
   977    letWithDynamicInComprehension: {
   978      _i: {
   979        a: "d"
   980        b: "e"
   981      }
   982      for k, v in 〈0;_i〉 {
   983        let T#23multi = 〈1;v〉
   984        〈0;let T#23〉: "1"
   985      }
   986    }
   987  }
   988  --- issue2218.cue
   989  {
   990    _parent_configs: {
   991      PARENT: true
   992    }
   993    _configs: {
   994      CHILD1: {
   995        property: true
   996      }
   997      CHILD2: {
   998        property: true
   999        parent: "PARENT"
  1000      }
  1001    }
  1002    disabled_parent_test: {
  1003      for k, v in 〈1;_configs〉 {
  1004        let parent_config#24multi = (*〈3;_parent_configs〉[〈1;v〉.parent]|false)
  1005        "\(〈1;k〉)": {
  1006          parent_config: 〈1;let parent_config#24〉
  1007        }
  1008      }
  1009    }
  1010  }