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

     1  -- in.cue --
     2  import "strings"
     3  
     4  a: {x: 10, y: 100, z: 50}
     5  b: {
     6  	for k, v in a if v <= 50 {
     7  		"\(k)": v
     8  	}
     9  	x: int
    10  	if x > 3 {
    11  		k: 20
    12  	}
    13  	k: int
    14  	if k > 0 {
    15  		l: 40
    16  	}
    17  }
    18  
    19  c: {
    20  	for k, v in a let y = v + 10 if y > 50 {
    21  		"\(k)": y
    22  	}
    23  }
    24  
    25  A: X: run: "dfoo"
    26  
    27  if true {
    28  	A: X: {
    29  		run:   string
    30  		files: "\(strings.Join([ run], "\n"))"
    31  	}
    32  }
    33  
    34  matchOrder: {
    35    a1: {
    36      out: [string]: Val: 1
    37      out: in.a
    38  
    39      in: a: {
    40        if true {
    41          b: {}
    42        }
    43      }
    44    }
    45    a2: {
    46      out: [string]: Val: 1
    47  
    48      in: a: {
    49        if true {
    50          b: {}
    51        }
    52      }
    53  
    54      out: in.a
    55    }
    56    a3: {
    57  
    58      in: a: {
    59        if true {
    60          b: {}
    61        }
    62      }
    63  
    64      out: [string]: Val: 1
    65      out: in.a
    66    }
    67    a4: {
    68      out: in.a
    69      out: [string]: Val: 1
    70  
    71      in: a: {
    72        if true {
    73          b: {}
    74        }
    75      }
    76    }
    77    a5: {
    78      out: in.a
    79  
    80      in: a: {
    81        if true {
    82          b: {}
    83        }
    84      }
    85  
    86      out: [string]: Val: 1
    87    }
    88    a6: {
    89      in: a: {
    90        if true {
    91          b: {}
    92        }
    93      }
    94  
    95      out: in.a
    96      out: [string]: Val: 1
    97    }
    98  }
    99  -- issue3691.cue --
   100  // Ensure that parent nodes are properly processed, even when a pending arc
   101  // is evaluated early.
   102  issue3691: original: {
   103  	X: [string]: string
   104  	a: [string]: X
   105  	a: {
   106  		if true {
   107  			b: c: 1
   108  		}
   109  	}
   110  }
   111  // Structural cycles follow a different code path.
   112  issue3691: structuralCycle: {
   113  	X: [string]: string
   114  	a: [string]: X
   115  	a: {
   116  		if true {
   117  			b: c: a
   118  		}
   119  	}
   120  }
   121  -- out/eval/stats --
   122  Leaks:  9
   123  Freed:  72
   124  Reused: 66
   125  Allocs: 15
   126  Retain: 19
   127  
   128  Unifications: 81
   129  Conjuncts:    121
   130  Disjuncts:    94
   131  -- out/evalalpha --
   132  Errors:
   133  issue3691.original.a.b.c: conflicting values string and 1 (mismatched types string and int):
   134      ./issue3691.cue:4:15
   135      ./issue3691.cue:8:10
   136  issue3691.structuralCycle.a.b.c: conflicting values string and {[string]:X} (mismatched types string and struct):
   137      ./issue3691.cue:14:15
   138      ./issue3691.cue:15:5
   139  
   140  Result:
   141  (_|_){
   142    // [eval]
   143    a: (struct){
   144      x: (int){ 10 }
   145      y: (int){ 100 }
   146      z: (int){ 50 }
   147    }
   148    b: (struct){
   149      x: (int){ 10 }
   150      k: (int){ 20 }
   151      l: (int){ 40 }
   152      z: (int){ 50 }
   153    }
   154    c: (struct){
   155      y: (int){ 110 }
   156      z: (int){ 60 }
   157    }
   158    A: (struct){
   159      X: (struct){
   160        run: (string){ "dfoo" }
   161        files: (string){ "dfoo" }
   162      }
   163    }
   164    matchOrder: (struct){
   165      a1: (struct){
   166        out: (struct){
   167          b: (struct){
   168            Val: (int){ 1 }
   169          }
   170        }
   171        in: (struct){
   172          a: (struct){
   173            b: (struct){
   174            }
   175          }
   176        }
   177      }
   178      a2: (struct){
   179        out: (struct){
   180          b: (struct){
   181            Val: (int){ 1 }
   182          }
   183        }
   184        in: (struct){
   185          a: (struct){
   186            b: (struct){
   187            }
   188          }
   189        }
   190      }
   191      a3: (struct){
   192        in: (struct){
   193          a: (struct){
   194            b: (struct){
   195            }
   196          }
   197        }
   198        out: (struct){
   199          b: (struct){
   200            Val: (int){ 1 }
   201          }
   202        }
   203      }
   204      a4: (struct){
   205        out: (struct){
   206          b: (struct){
   207            Val: (int){ 1 }
   208          }
   209        }
   210        in: (struct){
   211          a: (struct){
   212            b: (struct){
   213            }
   214          }
   215        }
   216      }
   217      a5: (struct){
   218        out: (struct){
   219          b: (struct){
   220            Val: (int){ 1 }
   221          }
   222        }
   223        in: (struct){
   224          a: (struct){
   225            b: (struct){
   226            }
   227          }
   228        }
   229      }
   230      a6: (struct){
   231        in: (struct){
   232          a: (struct){
   233            b: (struct){
   234            }
   235          }
   236        }
   237        out: (struct){
   238          b: (struct){
   239            Val: (int){ 1 }
   240          }
   241        }
   242      }
   243    }
   244    issue3691: (_|_){
   245      // [eval]
   246      original: (_|_){
   247        // [eval]
   248        X: (struct){
   249        }
   250        a: (_|_){
   251          // [eval]
   252          b: (_|_){
   253            // [eval]
   254            c: (_|_){
   255              // [eval] issue3691.original.a.b.c: conflicting values string and 1 (mismatched types string and int):
   256              //     ./issue3691.cue:4:15
   257              //     ./issue3691.cue:8:10
   258            }
   259          }
   260        }
   261      }
   262      structuralCycle: (_|_){
   263        // [eval]
   264        X: (struct){
   265        }
   266        a: (_|_){
   267          // [eval]
   268          b: (_|_){
   269            // [eval]
   270            c: (_|_){
   271              // [eval] issue3691.structuralCycle.a.b.c: conflicting values string and {[string]:X} (mismatched types string and struct):
   272              //     ./issue3691.cue:14:15
   273              //     ./issue3691.cue:15:5
   274              b*: (_|_){// [e]if true {
   275                //   c: 〈3;a〉
   276                // }[e] & 〈1;X〉
   277              }
   278            }
   279          }
   280        }
   281      }
   282    }
   283  }
   284  -- diff/-out/evalalpha<==>+out/eval --
   285  diff old new
   286  --- old
   287  +++ new
   288  @@ -1,14 +1,10 @@
   289   Errors:
   290   issue3691.original.a.b.c: conflicting values string and 1 (mismatched types string and int):
   291       ./issue3691.cue:4:15
   292  -    ./issue3691.cue:7:3
   293       ./issue3691.cue:8:10
   294   issue3691.structuralCycle.a.b.c: conflicting values string and {[string]:X} (mismatched types string and struct):
   295       ./issue3691.cue:14:15
   296       ./issue3691.cue:15:5
   297  -    ./issue3691.cue:17:3
   298  -    ./issue3691.cue:18:10
   299  -issue3691.structuralCycle.a.b.c.b.c: structural cycle
   300   
   301   Result:
   302   (_|_){
   303  @@ -127,7 +123,6 @@
   304             c: (_|_){
   305               // [eval] issue3691.original.a.b.c: conflicting values string and 1 (mismatched types string and int):
   306               //     ./issue3691.cue:4:15
   307  -            //     ./issue3691.cue:7:3
   308               //     ./issue3691.cue:8:10
   309             }
   310           }
   311  @@ -145,13 +140,9 @@
   312               // [eval] issue3691.structuralCycle.a.b.c: conflicting values string and {[string]:X} (mismatched types string and struct):
   313               //     ./issue3691.cue:14:15
   314               //     ./issue3691.cue:15:5
   315  -            //     ./issue3691.cue:17:3
   316  -            //     ./issue3691.cue:18:10
   317  -            b: (_|_){
   318  -              // [structural cycle]
   319  -              c: (_|_){
   320  -                // [structural cycle] issue3691.structuralCycle.a.b.c.b.c: structural cycle
   321  -              }
   322  +            b*: (_|_){// [e]if true {
   323  +              //   c: 〈3;a〉
   324  +              // }[e] & 〈1;X〉
   325               }
   326             }
   327           }
   328  -- diff/todo/p2 --
   329  Missing error positions.
   330  -- out/eval --
   331  Errors:
   332  issue3691.original.a.b.c: conflicting values string and 1 (mismatched types string and int):
   333      ./issue3691.cue:4:15
   334      ./issue3691.cue:7:3
   335      ./issue3691.cue:8:10
   336  issue3691.structuralCycle.a.b.c: conflicting values string and {[string]:X} (mismatched types string and struct):
   337      ./issue3691.cue:14:15
   338      ./issue3691.cue:15:5
   339      ./issue3691.cue:17:3
   340      ./issue3691.cue:18:10
   341  issue3691.structuralCycle.a.b.c.b.c: structural cycle
   342  
   343  Result:
   344  (_|_){
   345    // [eval]
   346    a: (struct){
   347      x: (int){ 10 }
   348      y: (int){ 100 }
   349      z: (int){ 50 }
   350    }
   351    b: (struct){
   352      x: (int){ 10 }
   353      k: (int){ 20 }
   354      l: (int){ 40 }
   355      z: (int){ 50 }
   356    }
   357    c: (struct){
   358      y: (int){ 110 }
   359      z: (int){ 60 }
   360    }
   361    A: (struct){
   362      X: (struct){
   363        run: (string){ "dfoo" }
   364        files: (string){ "dfoo" }
   365      }
   366    }
   367    matchOrder: (struct){
   368      a1: (struct){
   369        out: (struct){
   370          b: (struct){
   371            Val: (int){ 1 }
   372          }
   373        }
   374        in: (struct){
   375          a: (struct){
   376            b: (struct){
   377            }
   378          }
   379        }
   380      }
   381      a2: (struct){
   382        out: (struct){
   383          b: (struct){
   384            Val: (int){ 1 }
   385          }
   386        }
   387        in: (struct){
   388          a: (struct){
   389            b: (struct){
   390            }
   391          }
   392        }
   393      }
   394      a3: (struct){
   395        in: (struct){
   396          a: (struct){
   397            b: (struct){
   398            }
   399          }
   400        }
   401        out: (struct){
   402          b: (struct){
   403            Val: (int){ 1 }
   404          }
   405        }
   406      }
   407      a4: (struct){
   408        out: (struct){
   409          b: (struct){
   410            Val: (int){ 1 }
   411          }
   412        }
   413        in: (struct){
   414          a: (struct){
   415            b: (struct){
   416            }
   417          }
   418        }
   419      }
   420      a5: (struct){
   421        out: (struct){
   422          b: (struct){
   423            Val: (int){ 1 }
   424          }
   425        }
   426        in: (struct){
   427          a: (struct){
   428            b: (struct){
   429            }
   430          }
   431        }
   432      }
   433      a6: (struct){
   434        in: (struct){
   435          a: (struct){
   436            b: (struct){
   437            }
   438          }
   439        }
   440        out: (struct){
   441          b: (struct){
   442            Val: (int){ 1 }
   443          }
   444        }
   445      }
   446    }
   447    issue3691: (_|_){
   448      // [eval]
   449      original: (_|_){
   450        // [eval]
   451        X: (struct){
   452        }
   453        a: (_|_){
   454          // [eval]
   455          b: (_|_){
   456            // [eval]
   457            c: (_|_){
   458              // [eval] issue3691.original.a.b.c: conflicting values string and 1 (mismatched types string and int):
   459              //     ./issue3691.cue:4:15
   460              //     ./issue3691.cue:7:3
   461              //     ./issue3691.cue:8:10
   462            }
   463          }
   464        }
   465      }
   466      structuralCycle: (_|_){
   467        // [eval]
   468        X: (struct){
   469        }
   470        a: (_|_){
   471          // [eval]
   472          b: (_|_){
   473            // [eval]
   474            c: (_|_){
   475              // [eval] issue3691.structuralCycle.a.b.c: conflicting values string and {[string]:X} (mismatched types string and struct):
   476              //     ./issue3691.cue:14:15
   477              //     ./issue3691.cue:15:5
   478              //     ./issue3691.cue:17:3
   479              //     ./issue3691.cue:18:10
   480              b: (_|_){
   481                // [structural cycle]
   482                c: (_|_){
   483                  // [structural cycle] issue3691.structuralCycle.a.b.c.b.c: structural cycle
   484                }
   485              }
   486            }
   487          }
   488        }
   489      }
   490    }
   491  }
   492  -- out/compile --
   493  --- in.cue
   494  {
   495    a: {
   496      x: 10
   497      y: 100
   498      z: 50
   499    }
   500    b: {
   501      for k, v in 〈1;a〉 if (〈0;v〉 <= 50) {
   502        "\(〈1;k〉)": 〈1;v〉
   503      }
   504      x: int
   505      if (〈0;x〉 > 3) {
   506        k: 20
   507      }
   508      k: int
   509      if (〈0;k〉 > 0) {
   510        l: 40
   511      }
   512    }
   513    c: {
   514      for k, v in 〈1;a〉 let y = (〈0;v〉 + 10) if (〈0;y〉 > 50) {
   515        "\(〈2;k〉)": 〈1;y〉
   516      }
   517    }
   518    A: {
   519      X: {
   520        run: "dfoo"
   521      }
   522    }
   523    if true {
   524      A: {
   525        X: {
   526          run: string
   527          files: "\(〈import;strings〉.Join([
   528            〈1;run〉,
   529          ], "\n"))"
   530        }
   531      }
   532    }
   533    matchOrder: {
   534      a1: {
   535        out: {
   536          [string]: {
   537            Val: 1
   538          }
   539        }
   540        out: 〈0;in〉.a
   541        in: {
   542          a: {
   543            if true {
   544              b: {}
   545            }
   546          }
   547        }
   548      }
   549      a2: {
   550        out: {
   551          [string]: {
   552            Val: 1
   553          }
   554        }
   555        in: {
   556          a: {
   557            if true {
   558              b: {}
   559            }
   560          }
   561        }
   562        out: 〈0;in〉.a
   563      }
   564      a3: {
   565        in: {
   566          a: {
   567            if true {
   568              b: {}
   569            }
   570          }
   571        }
   572        out: {
   573          [string]: {
   574            Val: 1
   575          }
   576        }
   577        out: 〈0;in〉.a
   578      }
   579      a4: {
   580        out: 〈0;in〉.a
   581        out: {
   582          [string]: {
   583            Val: 1
   584          }
   585        }
   586        in: {
   587          a: {
   588            if true {
   589              b: {}
   590            }
   591          }
   592        }
   593      }
   594      a5: {
   595        out: 〈0;in〉.a
   596        in: {
   597          a: {
   598            if true {
   599              b: {}
   600            }
   601          }
   602        }
   603        out: {
   604          [string]: {
   605            Val: 1
   606          }
   607        }
   608      }
   609      a6: {
   610        in: {
   611          a: {
   612            if true {
   613              b: {}
   614            }
   615          }
   616        }
   617        out: 〈0;in〉.a
   618        out: {
   619          [string]: {
   620            Val: 1
   621          }
   622        }
   623      }
   624    }
   625  }
   626  --- issue3691.cue
   627  {
   628    issue3691: {
   629      original: {
   630        X: {
   631          [string]: string
   632        }
   633        a: {
   634          [string]: 〈1;X〉
   635        }
   636        a: {
   637          if true {
   638            b: {
   639              c: 1
   640            }
   641          }
   642        }
   643      }
   644    }
   645    issue3691: {
   646      structuralCycle: {
   647        X: {
   648          [string]: string
   649        }
   650        a: {
   651          [string]: 〈1;X〉
   652        }
   653        a: {
   654          if true {
   655            b: {
   656              c: 〈3;a〉
   657            }
   658          }
   659        }
   660      }
   661    }
   662  }