cuelang.org/go@v0.13.0/cue/testdata/basicrewrite/019_resolved_self-reference_cycles.txtar (about)

     1  #name: resolved self-reference cycles
     2  #evalPartial
     3  -- in.cue --
     4  math: p1: {
     5  	a: b - 100
     6  	b: a + 100
     7  	b: 200
     8  }
     9  math: p2: {
    10  	a: b - 100
    11  	b: 200
    12  	b: a + 100
    13  }
    14  math: p3: {
    15  	b: a + 100
    16  	a: b - 100
    17  	b: 200
    18  }
    19  math: p4: {
    20  	b: a + 100
    21  	b: 200
    22  	a: b - 100
    23  }
    24  math: p5: {
    25  	b: 200
    26  	b: a + 100
    27  	a: b - 100
    28  }
    29  math: p6: {
    30  	b: 200
    31  	a: b - 100
    32  	b: a + 100
    33  }
    34  
    35  a: 100
    36  
    37  list: t0: c: [c[0]]
    38  
    39  list: t1: p1: c: [c[1], a]
    40  list: t1: p2: c: [a, c[0]]
    41  
    42  nodes: t1: p1: s1: s1 & {a: 1}
    43  nodes: t1: p2: s1: {a: 1} & s1
    44  nodes: t2: {
    45  	s1: s2 & {a: 1}
    46  	s2: s1 & {b: 2}
    47  }
    48  nodes: t3: {
    49  	s1: s2 & {a: 1}
    50  	s2: s3 & {b: 2}
    51  	s3: s1 & {c: 3}
    52  }
    53  
    54  -- out/def --
    55  a: 100
    56  b: 200
    57  c: [100, 100]
    58  s1: s2 & {
    59  	a: 1
    60  }
    61  s2: s3 & {
    62  	b: 2
    63  }
    64  s3: s1 & {
    65  	c: 3
    66  }
    67  -- out/export --
    68  a: 100
    69  b: 200
    70  c: [100, 100]
    71  s1: {
    72  	a: 1
    73  	b: 2
    74  	c: 3
    75  }
    76  s2: {
    77  	a: 1
    78  	b: 2
    79  	c: 3
    80  }
    81  s3: {
    82  	a: 1
    83  	b: 2
    84  	c: 3
    85  }
    86  -- out/yaml --
    87  a: 100
    88  b: 200
    89  c:
    90  - 100
    91  - 100
    92  s1:
    93    a: 1
    94    b: 2
    95    c: 3
    96  s2:
    97    a: 1
    98    b: 2
    99    c: 3
   100  s3:
   101    a: 1
   102    b: 2
   103    c: 3
   104  -- out/json --
   105  {"a":100,"b":200,"c":[100,100],"s1":{"a":1,"b":2,"c":3},"s2":{"a":1,"b":2,"c":3},"s3":{"a":1,"b":2,"c":3}}
   106  -- out/legacy-debug --
   107  <0>{a: 100, b: 200, c: [100,100], s1: <1>{a: 1, b: 2, c: 3}, s2: <2>{a: 1, b: 2, c: 3}, s3: <3>{a: 1, b: 2, c: 3}}
   108  -- out/compile --
   109  --- in.cue
   110  {
   111    math: {
   112      p1: {
   113        a: (〈0;b〉 - 100)
   114        b: (〈0;a〉 + 100)
   115        b: 200
   116      }
   117    }
   118    math: {
   119      p2: {
   120        a: (〈0;b〉 - 100)
   121        b: 200
   122        b: (〈0;a〉 + 100)
   123      }
   124    }
   125    math: {
   126      p3: {
   127        b: (〈0;a〉 + 100)
   128        a: (〈0;b〉 - 100)
   129        b: 200
   130      }
   131    }
   132    math: {
   133      p4: {
   134        b: (〈0;a〉 + 100)
   135        b: 200
   136        a: (〈0;b〉 - 100)
   137      }
   138    }
   139    math: {
   140      p5: {
   141        b: 200
   142        b: (〈0;a〉 + 100)
   143        a: (〈0;b〉 - 100)
   144      }
   145    }
   146    math: {
   147      p6: {
   148        b: 200
   149        a: (〈0;b〉 - 100)
   150        b: (〈0;a〉 + 100)
   151      }
   152    }
   153    a: 100
   154    list: {
   155      t0: {
   156        c: [
   157          〈1;c〉[0],
   158        ]
   159      }
   160    }
   161    list: {
   162      t1: {
   163        p1: {
   164          c: [
   165            〈1;c〉[1],
   166            〈4;a〉,
   167          ]
   168        }
   169      }
   170    }
   171    list: {
   172      t1: {
   173        p2: {
   174          c: [
   175            〈4;a〉,
   176            〈1;c〉[0],
   177          ]
   178        }
   179      }
   180    }
   181    nodes: {
   182      t1: {
   183        p1: {
   184          s1: (〈0;s1〉 & {
   185            a: 1
   186          })
   187        }
   188      }
   189    }
   190    nodes: {
   191      t1: {
   192        p2: {
   193          s1: ({
   194            a: 1
   195          } & 〈0;s1〉)
   196        }
   197      }
   198    }
   199    nodes: {
   200      t2: {
   201        s1: (〈0;s2〉 & {
   202          a: 1
   203        })
   204        s2: (〈0;s1〉 & {
   205          b: 2
   206        })
   207      }
   208    }
   209    nodes: {
   210      t3: {
   211        s1: (〈0;s2〉 & {
   212          a: 1
   213        })
   214        s2: (〈0;s3〉 & {
   215          b: 2
   216        })
   217        s3: (〈0;s1〉 & {
   218          c: 3
   219        })
   220      }
   221    }
   222  }
   223  -- out/eval/stats --
   224  Leaks:  0
   225  Freed:  62
   226  Reused: 55
   227  Allocs: 7
   228  Retain: 10
   229  
   230  Unifications: 62
   231  Conjuncts:    105
   232  Disjuncts:    70
   233  -- out/evalalpha --
   234  (struct){
   235    math: (struct){
   236      p1: (struct){
   237        a: (int){ 100 }
   238        b: (int){ 200 }
   239      }
   240      p2: (struct){
   241        a: (int){ 100 }
   242        b: (int){ 200 }
   243      }
   244      p3: (struct){
   245        b: (int){ 200 }
   246        a: (int){ 100 }
   247      }
   248      p4: (struct){
   249        b: (int){ 200 }
   250        a: (int){ 100 }
   251      }
   252      p5: (struct){
   253        b: (int){ 200 }
   254        a: (int){ 100 }
   255      }
   256      p6: (struct){
   257        b: (int){ 200 }
   258        a: (int){ 100 }
   259      }
   260    }
   261    a: (int){ 100 }
   262    list: (struct){
   263      t0: (struct){
   264        c: (#list){
   265          0: (_){ _ }
   266        }
   267      }
   268      t1: (struct){
   269        p1: (struct){
   270          c: (#list){
   271            0: (int){ 100 }
   272            1: (int){ 100 }
   273          }
   274        }
   275        p2: (struct){
   276          c: (#list){
   277            0: (int){ 100 }
   278            1: (int){ 100 }
   279          }
   280        }
   281      }
   282    }
   283    nodes: (struct){
   284      t1: (struct){
   285        p1: (struct){
   286          s1: (struct){
   287            a: (int){ 1 }
   288          }
   289        }
   290        p2: (struct){
   291          s1: (struct){
   292            a: (int){ 1 }
   293          }
   294        }
   295      }
   296      t2: (struct){
   297        s1: (struct){
   298          a: (int){ 1 }
   299          b: (int){ 2 }
   300        }
   301        s2: (struct){
   302          b: (int){ 2 }
   303          a: (int){ 1 }
   304        }
   305      }
   306      t3: (struct){
   307        s1: (struct){
   308          a: (int){ 1 }
   309          b: (int){ 2 }
   310          c: (int){ 3 }
   311        }
   312        s2: (struct){
   313          b: (int){ 2 }
   314          c: (int){ 3 }
   315          a: (int){ 1 }
   316        }
   317        s3: (struct){
   318          c: (int){ 3 }
   319          a: (int){ 1 }
   320          b: (int){ 2 }
   321        }
   322      }
   323    }
   324  }
   325  -- diff/-out/evalalpha<==>+out/eval --
   326  diff old new
   327  --- old
   328  +++ new
   329  @@ -73,18 +73,18 @@
   330       t3: (struct){
   331         s1: (struct){
   332           a: (int){ 1 }
   333  -        c: (int){ 3 }
   334  -        b: (int){ 2 }
   335  -      }
   336  -      s2: (struct){
   337  -        b: (int){ 2 }
   338  -        a: (int){ 1 }
   339  -        c: (int){ 3 }
   340  +        b: (int){ 2 }
   341  +        c: (int){ 3 }
   342  +      }
   343  +      s2: (struct){
   344  +        b: (int){ 2 }
   345  +        c: (int){ 3 }
   346  +        a: (int){ 1 }
   347         }
   348         s3: (struct){
   349           c: (int){ 3 }
   350  -        b: (int){ 2 }
   351  -        a: (int){ 1 }
   352  +        a: (int){ 1 }
   353  +        b: (int){ 2 }
   354         }
   355       }
   356     }
   357  -- diff/explanation --
   358  Reordering.
   359  -- out/eval --
   360  (struct){
   361    math: (struct){
   362      p1: (struct){
   363        a: (int){ 100 }
   364        b: (int){ 200 }
   365      }
   366      p2: (struct){
   367        a: (int){ 100 }
   368        b: (int){ 200 }
   369      }
   370      p3: (struct){
   371        b: (int){ 200 }
   372        a: (int){ 100 }
   373      }
   374      p4: (struct){
   375        b: (int){ 200 }
   376        a: (int){ 100 }
   377      }
   378      p5: (struct){
   379        b: (int){ 200 }
   380        a: (int){ 100 }
   381      }
   382      p6: (struct){
   383        b: (int){ 200 }
   384        a: (int){ 100 }
   385      }
   386    }
   387    a: (int){ 100 }
   388    list: (struct){
   389      t0: (struct){
   390        c: (#list){
   391          0: (_){ _ }
   392        }
   393      }
   394      t1: (struct){
   395        p1: (struct){
   396          c: (#list){
   397            0: (int){ 100 }
   398            1: (int){ 100 }
   399          }
   400        }
   401        p2: (struct){
   402          c: (#list){
   403            0: (int){ 100 }
   404            1: (int){ 100 }
   405          }
   406        }
   407      }
   408    }
   409    nodes: (struct){
   410      t1: (struct){
   411        p1: (struct){
   412          s1: (struct){
   413            a: (int){ 1 }
   414          }
   415        }
   416        p2: (struct){
   417          s1: (struct){
   418            a: (int){ 1 }
   419          }
   420        }
   421      }
   422      t2: (struct){
   423        s1: (struct){
   424          a: (int){ 1 }
   425          b: (int){ 2 }
   426        }
   427        s2: (struct){
   428          b: (int){ 2 }
   429          a: (int){ 1 }
   430        }
   431      }
   432      t3: (struct){
   433        s1: (struct){
   434          a: (int){ 1 }
   435          c: (int){ 3 }
   436          b: (int){ 2 }
   437        }
   438        s2: (struct){
   439          b: (int){ 2 }
   440          a: (int){ 1 }
   441          c: (int){ 3 }
   442        }
   443        s3: (struct){
   444          c: (int){ 3 }
   445          b: (int){ 2 }
   446          a: (int){ 1 }
   447        }
   448      }
   449    }
   450  }