cuelang.org/go@v0.13.0/cue/testdata/basicrewrite/012_selecting.txtar (about)

     1  #name: selecting
     2  #evalPartial
     3  -- in.cue --
     4  obj: {a: 1, b: 2}
     5  index:  {a: 1, b:     2}["b"]
     6  mulidx: {a: 1, b: {a: 1, b: 3}}["b"]["b"]
     7  e:      {a: 1}[4]
     8  f:      {a: 1}.b
     9  g:      {a: 1}["b"]
    10  h:      [3].b
    11  -- out/def --
    12  obj: {
    13  	a: 1
    14  	b: 2
    15  }
    16  index:  2
    17  mulidx: 3
    18  e:      _|_ // invalid struct index 4 (type int)
    19  f:      {
    20  	a: 1
    21  }.b
    22  g: {
    23  	a: 1
    24  }["b"]
    25  h: _|_ // invalid operation: [3].b (type list does not support selection)
    26  -- out/legacy-debug --
    27  <0>{obj: <1>{a: 1, b: 2}, index: 2, mulidx: 3, e: _|_(4:invalid struct index 4 (type int)), f: <2>{a: 1}.b, g: <3>{a: 1}["b"], h: _|_([3]:invalid operation: [3].b (type list does not support selection))}
    28  -- out/compile --
    29  --- in.cue
    30  {
    31    obj: {
    32      a: 1
    33      b: 2
    34    }
    35    index: {
    36      a: 1
    37      b: 2
    38    }["b"]
    39    mulidx: {
    40      a: 1
    41      b: {
    42        a: 1
    43        b: 3
    44      }
    45    }["b"]["b"]
    46    e: {
    47      a: 1
    48    }[4]
    49    f: {
    50      a: 1
    51    }.b
    52    g: {
    53      a: 1
    54    }["b"]
    55    h: [
    56      3,
    57    ].b
    58  }
    59  -- out/eval/stats --
    60  Leaks:  9
    61  Freed:  10
    62  Reused: 8
    63  Allocs: 11
    64  Retain: 9
    65  
    66  Unifications: 19
    67  Conjuncts:    19
    68  Disjuncts:    17
    69  -- out/eval --
    70  Errors:
    71  e: invalid struct selector 4 (type int):
    72      ./in.cue:4:16
    73  h: invalid list index b (type string):
    74      ./in.cue:7:13
    75  
    76  Result:
    77  (_|_){
    78    // [eval]
    79    obj: (struct){
    80      a: (int){ 1 }
    81      b: (int){ 2 }
    82    }
    83    index: (int){ 2 }
    84    mulidx: (int){ 3 }
    85    e: (_|_){
    86      // [eval] e: invalid struct selector 4 (type int):
    87      //     ./in.cue:4:16
    88    }
    89    f: (_|_){
    90      // [incomplete] f: undefined field: b:
    91      //     ./in.cue:5:16
    92    }
    93    g: (_|_){
    94      // [incomplete] g: undefined field: b:
    95      //     ./in.cue:6:16
    96    }
    97    h: (_|_){
    98      // [eval] h: invalid list index b (type string):
    99      //     ./in.cue:7:13
   100    }
   101  }
   102  -- out/evalalpha --
   103  Errors:
   104  e: index out of range [4] with length 0:
   105      ./in.cue:4:16
   106  h: undefined field: b:
   107      ./in.cue:7:13
   108  
   109  Result:
   110  (_|_){
   111    // [eval]
   112    obj: (struct){
   113      a: (int){ 1 }
   114      b: (int){ 2 }
   115    }
   116    index: (int){ 2 }
   117    mulidx: (int){ 3 }
   118    e: (_|_){
   119      // [eval] e: index out of range [4] with length 0:
   120      //     ./in.cue:4:16
   121    }
   122    f: (_|_){
   123      // [incomplete] f: undefined field: b:
   124      //     ./in.cue:5:16
   125    }
   126    g: (_|_){
   127      // [incomplete] g: undefined field: b:
   128      //     ./in.cue:6:16
   129    }
   130    h: (_|_){
   131      // [eval] h: undefined field: b:
   132      //     ./in.cue:7:13
   133    }
   134  }
   135  -- diff/-out/evalalpha<==>+out/eval --
   136  diff old new
   137  --- old
   138  +++ new
   139  @@ -1,7 +1,7 @@
   140   Errors:
   141  -e: invalid struct selector 4 (type int):
   142  +e: index out of range [4] with length 0:
   143       ./in.cue:4:16
   144  -h: invalid list index b (type string):
   145  +h: undefined field: b:
   146       ./in.cue:7:13
   147   
   148   Result:
   149  @@ -14,7 +14,7 @@
   150     index: (int){ 2 }
   151     mulidx: (int){ 3 }
   152     e: (_|_){
   153  -    // [eval] e: invalid struct selector 4 (type int):
   154  +    // [eval] e: index out of range [4] with length 0:
   155       //     ./in.cue:4:16
   156     }
   157     f: (_|_){
   158  @@ -26,7 +26,7 @@
   159       //     ./in.cue:6:16
   160     }
   161     h: (_|_){
   162  -    // [eval] h: invalid list index b (type string):
   163  +    // [eval] h: undefined field: b:
   164       //     ./in.cue:7:13
   165     }
   166   }
   167  -- diff/explanation --
   168  Better error message for undefined field in new.
   169  Other error got worse, but this is covered elsewhere.