cuelang.org/go@v0.13.0/cue/testdata/comprehensions/issue3763.txtar (about)

     1  -- reduced.cue --
     2  reduced: {
     3  	A: x1: y?: int // needs to be optional
     4  	A: x2: y?: int
     5  	A: x3: y?: int
     6  
     7  	if true {
     8  		let Z = [for _, x in A {x}]
     9  		B: [for z in Z if z.y != _|_ { b: 1 }]
    10  	}
    11  }
    12  -- full.cue --
    13  full: {
    14  	_core_v1: {
    15  		#cp: {
    16  			hostPort?: int32
    17  			cp:        int32
    18  		}
    19  	}
    20  
    21  	k: n: n1: {
    22  		_CL: "l"
    23  	}
    24  
    25  	let nc = {
    26  		_ports: [ID=_]: _core_v1.#cp
    27  	}
    28  
    29  	_cl: [ID=_]: nc & {
    30  		_ports: {
    31  			"1": {}
    32  			"2": {}
    33  			"3": {}
    34  		}
    35  	}
    36  
    37  	k: n: [ID=_]: {
    38  		_CL: string
    39  		_cs: (_CL): _cl[(_CL)]
    40  	}
    41  
    42  	for _, n in k.n {
    43  		let cps = [for _, c in n._cs for _, cps in c._ports {cps}]
    44  		ports: [for cp in cps if cp.hostPort != _|_ {
    45  			port: "\(cp.hostPort)"
    46  		}]
    47  	}
    48  
    49  	_cl: l: {}
    50  }
    51  -- out/eval/stats --
    52  Leaks:  4
    53  Freed:  66
    54  Reused: 58
    55  Allocs: 12
    56  Retain: 10
    57  
    58  Unifications: 70
    59  Conjuncts:    129
    60  Disjuncts:    76
    61  -- out/evalalpha --
    62  (struct){
    63    full: (struct){
    64      _core_v1: (struct){
    65        #cp: (#struct){
    66          hostPort?: (int){ &(>=-2147483648, <=2147483647, int) }
    67          cp: (int){ &(>=-2147483648, <=2147483647, int) }
    68        }
    69      }
    70      k: (struct){
    71        n: (struct){
    72          n1: (struct){
    73            _CL: (string){ "l" }
    74            _cs: (struct){
    75              l: ~(full._cl.l)
    76            }
    77          }
    78        }
    79      }
    80      let nc#1 = (struct){
    81        _ports: (struct){
    82        }
    83      }
    84      _cl: (struct){
    85        l: (struct){
    86          _ports: (struct){
    87            "1": (#struct){
    88              hostPort?: (int){ &(>=-2147483648, <=2147483647, int) }
    89              cp: (int){ &(>=-2147483648, <=2147483647, int) }
    90            }
    91            "2": (#struct){
    92              hostPort?: (int){ &(>=-2147483648, <=2147483647, int) }
    93              cp: (int){ &(>=-2147483648, <=2147483647, int) }
    94            }
    95            "3": (#struct){
    96              hostPort?: (int){ &(>=-2147483648, <=2147483647, int) }
    97              cp: (int){ &(>=-2147483648, <=2147483647, int) }
    98            }
    99          }
   100        }
   101      }
   102      let cps#2multi = [
   103        for _, c in 〈2;n〉._cs for _, cps in 〈0;c〉._ports {
   104          〈1;cps〉
   105        },
   106      ]
   107      ports: (#list){
   108      }
   109    }
   110    reduced: (struct){
   111      A: (struct){
   112        x1: (struct){
   113          y?: (int){ int }
   114        }
   115        x2: (struct){
   116          y?: (int){ int }
   117        }
   118        x3: (struct){
   119          y?: (int){ int }
   120        }
   121      }
   122      let Z#3multi = [
   123        for _, x in 〈2;A〉 {
   124          〈1;x〉
   125        },
   126      ]
   127      B: (#list){
   128      }
   129    }
   130  }
   131  -- diff/-out/evalalpha<==>+out/eval --
   132  diff old new
   133  --- old
   134  +++ new
   135  @@ -11,22 +11,7 @@
   136           n1: (struct){
   137             _CL: (string){ "l" }
   138             _cs: (struct){
   139  -            l: (struct){
   140  -              _ports: (struct){
   141  -                "1": (#struct){
   142  -                  hostPort?: (int){ &(>=-2147483648, <=2147483647, int) }
   143  -                  cp: (int){ &(>=-2147483648, <=2147483647, int) }
   144  -                }
   145  -                "2": (#struct){
   146  -                  hostPort?: (int){ &(>=-2147483648, <=2147483647, int) }
   147  -                  cp: (int){ &(>=-2147483648, <=2147483647, int) }
   148  -                }
   149  -                "3": (#struct){
   150  -                  hostPort?: (int){ &(>=-2147483648, <=2147483647, int) }
   151  -                  cp: (int){ &(>=-2147483648, <=2147483647, int) }
   152  -                }
   153  -              }
   154  -            }
   155  +            l: ~(full._cl.l)
   156             }
   157           }
   158         }
   159  @@ -73,17 +58,11 @@
   160           y?: (int){ int }
   161         }
   162       }
   163  -    let Z#3 = (#list){
   164  -      0: (struct){
   165  -        y?: (int){ int }
   166  -      }
   167  -      1: (struct){
   168  -        y?: (int){ int }
   169  -      }
   170  -      2: (struct){
   171  -        y?: (int){ int }
   172  -      }
   173  -    }
   174  +    let Z#3multi = [
   175  +      for _, x in 〈2;A〉 {
   176  +        〈1;x〉
   177  +      },
   178  +    ]
   179       B: (#list){
   180       }
   181     }
   182  -- out/eval --
   183  (struct){
   184    full: (struct){
   185      _core_v1: (struct){
   186        #cp: (#struct){
   187          hostPort?: (int){ &(>=-2147483648, <=2147483647, int) }
   188          cp: (int){ &(>=-2147483648, <=2147483647, int) }
   189        }
   190      }
   191      k: (struct){
   192        n: (struct){
   193          n1: (struct){
   194            _CL: (string){ "l" }
   195            _cs: (struct){
   196              l: (struct){
   197                _ports: (struct){
   198                  "1": (#struct){
   199                    hostPort?: (int){ &(>=-2147483648, <=2147483647, int) }
   200                    cp: (int){ &(>=-2147483648, <=2147483647, int) }
   201                  }
   202                  "2": (#struct){
   203                    hostPort?: (int){ &(>=-2147483648, <=2147483647, int) }
   204                    cp: (int){ &(>=-2147483648, <=2147483647, int) }
   205                  }
   206                  "3": (#struct){
   207                    hostPort?: (int){ &(>=-2147483648, <=2147483647, int) }
   208                    cp: (int){ &(>=-2147483648, <=2147483647, int) }
   209                  }
   210                }
   211              }
   212            }
   213          }
   214        }
   215      }
   216      let nc#1 = (struct){
   217        _ports: (struct){
   218        }
   219      }
   220      _cl: (struct){
   221        l: (struct){
   222          _ports: (struct){
   223            "1": (#struct){
   224              hostPort?: (int){ &(>=-2147483648, <=2147483647, int) }
   225              cp: (int){ &(>=-2147483648, <=2147483647, int) }
   226            }
   227            "2": (#struct){
   228              hostPort?: (int){ &(>=-2147483648, <=2147483647, int) }
   229              cp: (int){ &(>=-2147483648, <=2147483647, int) }
   230            }
   231            "3": (#struct){
   232              hostPort?: (int){ &(>=-2147483648, <=2147483647, int) }
   233              cp: (int){ &(>=-2147483648, <=2147483647, int) }
   234            }
   235          }
   236        }
   237      }
   238      let cps#2multi = [
   239        for _, c in 〈2;n〉._cs for _, cps in 〈0;c〉._ports {
   240          〈1;cps〉
   241        },
   242      ]
   243      ports: (#list){
   244      }
   245    }
   246    reduced: (struct){
   247      A: (struct){
   248        x1: (struct){
   249          y?: (int){ int }
   250        }
   251        x2: (struct){
   252          y?: (int){ int }
   253        }
   254        x3: (struct){
   255          y?: (int){ int }
   256        }
   257      }
   258      let Z#3 = (#list){
   259        0: (struct){
   260          y?: (int){ int }
   261        }
   262        1: (struct){
   263          y?: (int){ int }
   264        }
   265        2: (struct){
   266          y?: (int){ int }
   267        }
   268      }
   269      B: (#list){
   270      }
   271    }
   272  }
   273  -- out/compile --
   274  --- full.cue
   275  {
   276    full: {
   277      _core_v1: {
   278        #cp: {
   279          hostPort?: &(int, >=-2147483648, <=2147483647)
   280          cp: &(int, >=-2147483648, <=2147483647)
   281        }
   282      }
   283      k: {
   284        n: {
   285          n1: {
   286            _CL: "l"
   287          }
   288        }
   289      }
   290      let nc#1 = {
   291        _ports: {
   292          [_]: 〈2;_core_v1〉.#cp
   293        }
   294      }
   295      _cl: {
   296        [_]: (〈1;let nc#1〉 & {
   297          _ports: {
   298            "1": {}
   299            "2": {}
   300            "3": {}
   301          }
   302        })
   303      }
   304      k: {
   305        n: {
   306          [_]: {
   307            _CL: string
   308            _cs: {
   309              〈1;_CL〉: 〈4;_cl〉[〈1;_CL〉]
   310            }
   311          }
   312        }
   313      }
   314      for _, n in 〈0;k〉.n {
   315        let cps#2multi = [
   316          for _, c in 〈2;n〉._cs for _, cps in 〈0;c〉._ports {
   317            〈1;cps〉
   318          },
   319        ]
   320        ports: [
   321          for _, cp in 〈1;let cps#2〉 if (〈0;cp〉.hostPort != _|_(explicit error (_|_ literal) in source)) {
   322            port: "\(〈1;cp〉.hostPort)"
   323          },
   324        ]
   325      }
   326      _cl: {
   327        l: {}
   328      }
   329    }
   330  }
   331  --- reduced.cue
   332  {
   333    reduced: {
   334      A: {
   335        x1: {
   336          y?: int
   337        }
   338      }
   339      A: {
   340        x2: {
   341          y?: int
   342        }
   343      }
   344      A: {
   345        x3: {
   346          y?: int
   347        }
   348      }
   349      if true {
   350        let Z#3 = [
   351          for _, x in 〈2;A〉 {
   352            〈1;x〉
   353          },
   354        ]
   355        B: [
   356          for _, z in 〈1;let Z#3〉 if (〈0;z〉.y != _|_(explicit error (_|_ literal) in source)) {
   357            b: 1
   358          },
   359        ]
   360      }
   361    }
   362  }