cuelang.org/go@v0.13.0/cue/testdata/benchmarks/sharefg.txtar (about)

     1  # This file has fine-grained sharing tests.
     2  
     3  -- in.cue --
     4  // In each case, the number of output nodes should be linear in the input size.
     5  //
     6  // This means that in each case, the next line should not retrigger the
     7  // computation of the previous field.
     8  
     9  // 26 Nodes computed:
    10  // f1: 5
    11  // f2+: +3 each
    12  binexpr: {
    13  	f1: { out: x: 2 }
    14  	f2: { out: x: f1.out.x + 1 }
    15  	f3: { out: x: f2.out.x + 1 }
    16  	f4: { out: x: f3.out.x + 1 }
    17  	f5: { out: x: f4.out.x + 1 }
    18  	f6: { out: x: f5.out.x + 1 }
    19  	f7: { out: x: f6.out.x + 1 }
    20  	f8: { out: x: f7.out.x + 1 }
    21  }
    22  
    23  // 26 Nodes computed:
    24  // f1: 5
    25  // f2+: +3 each
    26  parenthesized: {
    27  	f1: { out: x: 2 }
    28  	f2: { out: x: (f1.out).x + 1 }
    29  	f3: { out: x: (f2.out).x + 1 }
    30  	f4: { out: x: (f3.out).x + 1 }
    31  	f5: { out: x: (f4.out).x + 1 }
    32  	f6: { out: x: (f5.out).x + 1 }
    33  	f7: { out: x: (f6.out).x + 1 }
    34  	f8: { out: x: (f7.out).x + 1 }
    35  }
    36  
    37  // TODO(perf): fix
    38  // 82 Nodes computed [O(n^2)]:
    39  // f1: 5
    40  // fn: +(n*2 + 1)
    41  // SHOULD BE:
    42  // 26 Nodes computed:
    43  // f1: 5
    44  // f2+: +3 each
    45  embedded: {
    46  	f1: { out: x: 2 }
    47  	f2: { out: x: {f1.out}.x + 1 }
    48  	f3: { out: x: {f2.out}.x + 1 }
    49  	f4: { out: x: {f3.out}.x + 1 }
    50  	f5: { out: x: {f4.out}.x + 1 }
    51  	f6: { out: x: {f5.out}.x + 1 }
    52  	f7: { out: x: {f6.out}.x + 1 }
    53  	f8: { out: x: {f7.out}.x + 1 }
    54  }
    55  
    56  // TODO(perf): fix
    57  // 82 Nodes computed [O(n^2)]:
    58  // f1: 5
    59  // fn: +(n*2 + 1) each
    60  // SHOULD BE:
    61  // 26 Nodes computed:
    62  // f1: 5
    63  // f2+: +3 each
    64  embeddedWithEmpty: {
    65  	f1: { out: x: 2 }
    66  	f2: { out: x: {f1.out & {}}.x + 1 }
    67  	f3: { out: x: {f2.out & {}}.x + 1 }
    68  	f4: { out: x: {f3.out & {}}.x + 1 }
    69  	f5: { out: x: {f4.out & {}}.x + 1 }
    70  	f6: { out: x: {f5.out & {}}.x + 1 }
    71  	f7: { out: x: {f6.out & {}}.x + 1 }
    72  	f8: { out: x: {f7.out & {}}.x + 1 }
    73  }
    74  
    75  // TODO(perf): fix
    76  // This will visualize O(n^2) output size unless CUE allows for a bit more
    77  // sophisticated sharing.
    78  weave: {
    79  	f:  X={
    80  		out: in + 1
    81  		in:  X.ref.out + 1
    82  		ref: _ & {}
    83  	}
    84  	f8: f&{ ref: f7 }
    85  	f7: f&{ ref: f6 }
    86  	f6: f&{ ref: f5 }
    87  	f5: f&{ ref: f4 }
    88  	f4: f&{ ref: f3 }
    89  	f3: f&{ ref: f2 }
    90  	f2: f&{ ref: f1 }
    91  	f1: { out: 2 }
    92  }
    93  
    94  // TODO(perf): fix
    95  // This will visualize O(n^2) output size unless CUE supports fine-grained
    96  // sharing.
    97  weaveExtraField: {
    98  	f:  X={
    99  		out: in + 1
   100  		in:  X.ref.out + 1
   101  		ref: {y: 4} // Cannot share because of this, but sub arcs still can be.
   102  	}
   103  	f8: f&{ ref: f7 }
   104  	f7: f&{ ref: f6 }
   105  	f6: f&{ ref: f5 }
   106  	f5: f&{ ref: f4 }
   107  	f4: f&{ ref: f3 }
   108  	f3: f&{ ref: f2 }
   109  	f2: f&{ ref: f1 }
   110  	f1: { out: 2 }
   111  }
   112  -- out/eval/stats --
   113  Leaks:  112
   114  Freed:  340
   115  Reused: 308
   116  Allocs: 144
   117  Retain: 428
   118  
   119  Unifications: 452
   120  Conjuncts:    853
   121  Disjuncts:    720
   122  -- out/evalalpha --
   123  (struct){
   124    binexpr: (struct){
   125      f1: (struct){
   126        out: (struct){
   127          x: (int){ 2 }
   128        }
   129      }
   130      f2: (struct){
   131        out: (struct){
   132          x: (int){ 3 }
   133        }
   134      }
   135      f3: (struct){
   136        out: (struct){
   137          x: (int){ 4 }
   138        }
   139      }
   140      f4: (struct){
   141        out: (struct){
   142          x: (int){ 5 }
   143        }
   144      }
   145      f5: (struct){
   146        out: (struct){
   147          x: (int){ 6 }
   148        }
   149      }
   150      f6: (struct){
   151        out: (struct){
   152          x: (int){ 7 }
   153        }
   154      }
   155      f7: (struct){
   156        out: (struct){
   157          x: (int){ 8 }
   158        }
   159      }
   160      f8: (struct){
   161        out: (struct){
   162          x: (int){ 9 }
   163        }
   164      }
   165    }
   166    parenthesized: (struct){
   167      f1: (struct){
   168        out: (struct){
   169          x: (int){ 2 }
   170        }
   171      }
   172      f2: (struct){
   173        out: (struct){
   174          x: (int){ 3 }
   175        }
   176      }
   177      f3: (struct){
   178        out: (struct){
   179          x: (int){ 4 }
   180        }
   181      }
   182      f4: (struct){
   183        out: (struct){
   184          x: (int){ 5 }
   185        }
   186      }
   187      f5: (struct){
   188        out: (struct){
   189          x: (int){ 6 }
   190        }
   191      }
   192      f6: (struct){
   193        out: (struct){
   194          x: (int){ 7 }
   195        }
   196      }
   197      f7: (struct){
   198        out: (struct){
   199          x: (int){ 8 }
   200        }
   201      }
   202      f8: (struct){
   203        out: (struct){
   204          x: (int){ 9 }
   205        }
   206      }
   207    }
   208    embedded: (struct){
   209      f1: (struct){
   210        out: (struct){
   211          x: (int){ 2 }
   212        }
   213      }
   214      f2: (struct){
   215        out: (struct){
   216          x: (int){ 3 }
   217        }
   218      }
   219      f3: (struct){
   220        out: (struct){
   221          x: (int){ 4 }
   222        }
   223      }
   224      f4: (struct){
   225        out: (struct){
   226          x: (int){ 5 }
   227        }
   228      }
   229      f5: (struct){
   230        out: (struct){
   231          x: (int){ 6 }
   232        }
   233      }
   234      f6: (struct){
   235        out: (struct){
   236          x: (int){ 7 }
   237        }
   238      }
   239      f7: (struct){
   240        out: (struct){
   241          x: (int){ 8 }
   242        }
   243      }
   244      f8: (struct){
   245        out: (struct){
   246          x: (int){ 9 }
   247        }
   248      }
   249    }
   250    embeddedWithEmpty: (struct){
   251      f1: (struct){
   252        out: (struct){
   253          x: (int){ 2 }
   254        }
   255      }
   256      f2: (struct){
   257        out: (struct){
   258          x: (int){ 3 }
   259        }
   260      }
   261      f3: (struct){
   262        out: (struct){
   263          x: (int){ 4 }
   264        }
   265      }
   266      f4: (struct){
   267        out: (struct){
   268          x: (int){ 5 }
   269        }
   270      }
   271      f5: (struct){
   272        out: (struct){
   273          x: (int){ 6 }
   274        }
   275      }
   276      f6: (struct){
   277        out: (struct){
   278          x: (int){ 7 }
   279        }
   280      }
   281      f7: (struct){
   282        out: (struct){
   283          x: (int){ 8 }
   284        }
   285      }
   286      f8: (struct){
   287        out: (struct){
   288          x: (int){ 9 }
   289        }
   290      }
   291    }
   292    weave: (struct){
   293      f: (struct){
   294        out: (_|_){
   295          // [incomplete] weave.f.in: undefined field: out:
   296          //     ./in.cue:78:14
   297        }
   298        in: (_|_){
   299          // [incomplete] weave.f.in: undefined field: out:
   300          //     ./in.cue:78:14
   301        }
   302        ref: (struct){
   303        }
   304      }
   305      f8: (struct){
   306        ref: (struct){
   307          ref: (struct){
   308            ref: (struct){
   309              ref: (struct){
   310                ref: (struct){
   311                  ref: (struct){
   312                    ref: (struct){
   313                      out: (int){ 2 }
   314                    }
   315                    out: (int){ 4 }
   316                    in: (int){ 3 }
   317                  }
   318                  out: (int){ 6 }
   319                  in: (int){ 5 }
   320                }
   321                out: (int){ 8 }
   322                in: (int){ 7 }
   323              }
   324              out: (int){ 10 }
   325              in: (int){ 9 }
   326            }
   327            out: (int){ 12 }
   328            in: (int){ 11 }
   329          }
   330          out: (int){ 14 }
   331          in: (int){ 13 }
   332        }
   333        out: (int){ 16 }
   334        in: (int){ 15 }
   335      }
   336      f7: (struct){
   337        ref: (struct){
   338          ref: (struct){
   339            ref: (struct){
   340              ref: (struct){
   341                ref: (struct){
   342                  ref: (struct){
   343                    out: (int){ 2 }
   344                  }
   345                  out: (int){ 4 }
   346                  in: (int){ 3 }
   347                }
   348                out: (int){ 6 }
   349                in: (int){ 5 }
   350              }
   351              out: (int){ 8 }
   352              in: (int){ 7 }
   353            }
   354            out: (int){ 10 }
   355            in: (int){ 9 }
   356          }
   357          out: (int){ 12 }
   358          in: (int){ 11 }
   359        }
   360        out: (int){ 14 }
   361        in: (int){ 13 }
   362      }
   363      f6: (struct){
   364        ref: (struct){
   365          ref: (struct){
   366            ref: (struct){
   367              ref: (struct){
   368                ref: (struct){
   369                  out: (int){ 2 }
   370                }
   371                out: (int){ 4 }
   372                in: (int){ 3 }
   373              }
   374              out: (int){ 6 }
   375              in: (int){ 5 }
   376            }
   377            out: (int){ 8 }
   378            in: (int){ 7 }
   379          }
   380          out: (int){ 10 }
   381          in: (int){ 9 }
   382        }
   383        out: (int){ 12 }
   384        in: (int){ 11 }
   385      }
   386      f5: (struct){
   387        ref: (struct){
   388          ref: (struct){
   389            ref: (struct){
   390              ref: (struct){
   391                out: (int){ 2 }
   392              }
   393              out: (int){ 4 }
   394              in: (int){ 3 }
   395            }
   396            out: (int){ 6 }
   397            in: (int){ 5 }
   398          }
   399          out: (int){ 8 }
   400          in: (int){ 7 }
   401        }
   402        out: (int){ 10 }
   403        in: (int){ 9 }
   404      }
   405      f4: (struct){
   406        ref: (struct){
   407          ref: (struct){
   408            ref: (struct){
   409              out: (int){ 2 }
   410            }
   411            out: (int){ 4 }
   412            in: (int){ 3 }
   413          }
   414          out: (int){ 6 }
   415          in: (int){ 5 }
   416        }
   417        out: (int){ 8 }
   418        in: (int){ 7 }
   419      }
   420      f3: (struct){
   421        ref: (struct){
   422          ref: (struct){
   423            out: (int){ 2 }
   424          }
   425          out: (int){ 4 }
   426          in: (int){ 3 }
   427        }
   428        out: (int){ 6 }
   429        in: (int){ 5 }
   430      }
   431      f2: (struct){
   432        ref: (struct){
   433          out: (int){ 2 }
   434        }
   435        out: (int){ 4 }
   436        in: (int){ 3 }
   437      }
   438      f1: (struct){
   439        out: (int){ 2 }
   440      }
   441    }
   442    weaveExtraField: (struct){
   443      f: (struct){
   444        out: (_|_){
   445          // [incomplete] weaveExtraField.f.in: undefined field: out:
   446          //     ./in.cue:97:14
   447        }
   448        in: (_|_){
   449          // [incomplete] weaveExtraField.f.in: undefined field: out:
   450          //     ./in.cue:97:14
   451        }
   452        ref: (struct){
   453          y: (int){ 4 }
   454        }
   455      }
   456      f8: (struct){
   457        ref: (struct){
   458          y: (int){ 4 }
   459          ref: (struct){
   460            y: (int){ 4 }
   461            ref: (struct){
   462              y: (int){ 4 }
   463              ref: (struct){
   464                y: (int){ 4 }
   465                ref: (struct){
   466                  y: (int){ 4 }
   467                  ref: (struct){
   468                    y: (int){ 4 }
   469                    ref: (struct){
   470                      y: (int){ 4 }
   471                      out: (int){ 2 }
   472                    }
   473                    out: (int){ 4 }
   474                    in: (int){ 3 }
   475                  }
   476                  out: (int){ 6 }
   477                  in: (int){ 5 }
   478                }
   479                out: (int){ 8 }
   480                in: (int){ 7 }
   481              }
   482              out: (int){ 10 }
   483              in: (int){ 9 }
   484            }
   485            out: (int){ 12 }
   486            in: (int){ 11 }
   487          }
   488          out: (int){ 14 }
   489          in: (int){ 13 }
   490        }
   491        out: (int){ 16 }
   492        in: (int){ 15 }
   493      }
   494      f7: (struct){
   495        ref: (struct){
   496          y: (int){ 4 }
   497          ref: (struct){
   498            y: (int){ 4 }
   499            ref: (struct){
   500              y: (int){ 4 }
   501              ref: (struct){
   502                y: (int){ 4 }
   503                ref: (struct){
   504                  y: (int){ 4 }
   505                  ref: (struct){
   506                    y: (int){ 4 }
   507                    out: (int){ 2 }
   508                  }
   509                  out: (int){ 4 }
   510                  in: (int){ 3 }
   511                }
   512                out: (int){ 6 }
   513                in: (int){ 5 }
   514              }
   515              out: (int){ 8 }
   516              in: (int){ 7 }
   517            }
   518            out: (int){ 10 }
   519            in: (int){ 9 }
   520          }
   521          out: (int){ 12 }
   522          in: (int){ 11 }
   523        }
   524        out: (int){ 14 }
   525        in: (int){ 13 }
   526      }
   527      f6: (struct){
   528        ref: (struct){
   529          y: (int){ 4 }
   530          ref: (struct){
   531            y: (int){ 4 }
   532            ref: (struct){
   533              y: (int){ 4 }
   534              ref: (struct){
   535                y: (int){ 4 }
   536                ref: (struct){
   537                  y: (int){ 4 }
   538                  out: (int){ 2 }
   539                }
   540                out: (int){ 4 }
   541                in: (int){ 3 }
   542              }
   543              out: (int){ 6 }
   544              in: (int){ 5 }
   545            }
   546            out: (int){ 8 }
   547            in: (int){ 7 }
   548          }
   549          out: (int){ 10 }
   550          in: (int){ 9 }
   551        }
   552        out: (int){ 12 }
   553        in: (int){ 11 }
   554      }
   555      f5: (struct){
   556        ref: (struct){
   557          y: (int){ 4 }
   558          ref: (struct){
   559            y: (int){ 4 }
   560            ref: (struct){
   561              y: (int){ 4 }
   562              ref: (struct){
   563                y: (int){ 4 }
   564                out: (int){ 2 }
   565              }
   566              out: (int){ 4 }
   567              in: (int){ 3 }
   568            }
   569            out: (int){ 6 }
   570            in: (int){ 5 }
   571          }
   572          out: (int){ 8 }
   573          in: (int){ 7 }
   574        }
   575        out: (int){ 10 }
   576        in: (int){ 9 }
   577      }
   578      f4: (struct){
   579        ref: (struct){
   580          y: (int){ 4 }
   581          ref: (struct){
   582            y: (int){ 4 }
   583            ref: (struct){
   584              y: (int){ 4 }
   585              out: (int){ 2 }
   586            }
   587            out: (int){ 4 }
   588            in: (int){ 3 }
   589          }
   590          out: (int){ 6 }
   591          in: (int){ 5 }
   592        }
   593        out: (int){ 8 }
   594        in: (int){ 7 }
   595      }
   596      f3: (struct){
   597        ref: (struct){
   598          y: (int){ 4 }
   599          ref: (struct){
   600            y: (int){ 4 }
   601            out: (int){ 2 }
   602          }
   603          out: (int){ 4 }
   604          in: (int){ 3 }
   605        }
   606        out: (int){ 6 }
   607        in: (int){ 5 }
   608      }
   609      f2: (struct){
   610        ref: (struct){
   611          y: (int){ 4 }
   612          out: (int){ 2 }
   613        }
   614        out: (int){ 4 }
   615        in: (int){ 3 }
   616      }
   617      f1: (struct){
   618        out: (int){ 2 }
   619      }
   620    }
   621  }
   622  -- diff/-out/evalalpha<==>+out/eval --
   623  diff old new
   624  --- old
   625  +++ new
   626  @@ -170,148 +170,148 @@
   627     weave: (struct){
   628       f: (struct){
   629         out: (_|_){
   630  -        // [cycle] cycle error:
   631  -        //     ./in.cue:77:8
   632  -      }
   633  -      in: (_|_){
   634  -        // [incomplete] weave.f.in: undefined field: out:
   635  -        //     ./in.cue:78:14
   636  -      }
   637  -      ref: (struct){
   638  -      }
   639  -    }
   640  -    f8: (struct){
   641  -      out: (int){ 16 }
   642  -      in: (int){ 15 }
   643  -      ref: (struct){
   644  -        out: (int){ 14 }
   645  -        in: (int){ 13 }
   646  -        ref: (struct){
   647  -          out: (int){ 12 }
   648  -          in: (int){ 11 }
   649  -          ref: (struct){
   650  -            out: (int){ 10 }
   651  -            in: (int){ 9 }
   652  -            ref: (struct){
   653  -              out: (int){ 8 }
   654  -              in: (int){ 7 }
   655  -              ref: (struct){
   656  -                out: (int){ 6 }
   657  -                in: (int){ 5 }
   658  -                ref: (struct){
   659  -                  out: (int){ 4 }
   660  -                  in: (int){ 3 }
   661  -                  ref: (struct){
   662  -                    out: (int){ 2 }
   663  -                  }
   664  -                }
   665  -              }
   666  -            }
   667  -          }
   668  -        }
   669  -      }
   670  -    }
   671  -    f7: (struct){
   672  -      out: (int){ 14 }
   673  -      in: (int){ 13 }
   674  -      ref: (struct){
   675  -        out: (int){ 12 }
   676  -        in: (int){ 11 }
   677  -        ref: (struct){
   678  -          out: (int){ 10 }
   679  -          in: (int){ 9 }
   680  -          ref: (struct){
   681  -            out: (int){ 8 }
   682  -            in: (int){ 7 }
   683  -            ref: (struct){
   684  -              out: (int){ 6 }
   685  -              in: (int){ 5 }
   686  -              ref: (struct){
   687  -                out: (int){ 4 }
   688  -                in: (int){ 3 }
   689  -                ref: (struct){
   690  -                  out: (int){ 2 }
   691  -                }
   692  -              }
   693  -            }
   694  -          }
   695  -        }
   696  -      }
   697  -    }
   698  -    f6: (struct){
   699  -      out: (int){ 12 }
   700  -      in: (int){ 11 }
   701  -      ref: (struct){
   702  -        out: (int){ 10 }
   703  -        in: (int){ 9 }
   704  -        ref: (struct){
   705  -          out: (int){ 8 }
   706  -          in: (int){ 7 }
   707  -          ref: (struct){
   708  -            out: (int){ 6 }
   709  -            in: (int){ 5 }
   710  -            ref: (struct){
   711  -              out: (int){ 4 }
   712  -              in: (int){ 3 }
   713  -              ref: (struct){
   714  -                out: (int){ 2 }
   715  -              }
   716  -            }
   717  -          }
   718  -        }
   719  -      }
   720  -    }
   721  -    f5: (struct){
   722  -      out: (int){ 10 }
   723  -      in: (int){ 9 }
   724  -      ref: (struct){
   725  -        out: (int){ 8 }
   726  -        in: (int){ 7 }
   727  -        ref: (struct){
   728  -          out: (int){ 6 }
   729  -          in: (int){ 5 }
   730  -          ref: (struct){
   731  -            out: (int){ 4 }
   732  -            in: (int){ 3 }
   733  -            ref: (struct){
   734  -              out: (int){ 2 }
   735  -            }
   736  -          }
   737  -        }
   738  -      }
   739  -    }
   740  -    f4: (struct){
   741  -      out: (int){ 8 }
   742  -      in: (int){ 7 }
   743  -      ref: (struct){
   744  -        out: (int){ 6 }
   745  -        in: (int){ 5 }
   746  -        ref: (struct){
   747  -          out: (int){ 4 }
   748  -          in: (int){ 3 }
   749  -          ref: (struct){
   750  -            out: (int){ 2 }
   751  -          }
   752  -        }
   753  -      }
   754  -    }
   755  -    f3: (struct){
   756  -      out: (int){ 6 }
   757  -      in: (int){ 5 }
   758  -      ref: (struct){
   759  -        out: (int){ 4 }
   760  -        in: (int){ 3 }
   761  -        ref: (struct){
   762  -          out: (int){ 2 }
   763  -        }
   764  -      }
   765  -    }
   766  -    f2: (struct){
   767  -      out: (int){ 4 }
   768  -      in: (int){ 3 }
   769  -      ref: (struct){
   770  -        out: (int){ 2 }
   771  -      }
   772  +        // [incomplete] weave.f.in: undefined field: out:
   773  +        //     ./in.cue:78:14
   774  +      }
   775  +      in: (_|_){
   776  +        // [incomplete] weave.f.in: undefined field: out:
   777  +        //     ./in.cue:78:14
   778  +      }
   779  +      ref: (struct){
   780  +      }
   781  +    }
   782  +    f8: (struct){
   783  +      ref: (struct){
   784  +        ref: (struct){
   785  +          ref: (struct){
   786  +            ref: (struct){
   787  +              ref: (struct){
   788  +                ref: (struct){
   789  +                  ref: (struct){
   790  +                    out: (int){ 2 }
   791  +                  }
   792  +                  out: (int){ 4 }
   793  +                  in: (int){ 3 }
   794  +                }
   795  +                out: (int){ 6 }
   796  +                in: (int){ 5 }
   797  +              }
   798  +              out: (int){ 8 }
   799  +              in: (int){ 7 }
   800  +            }
   801  +            out: (int){ 10 }
   802  +            in: (int){ 9 }
   803  +          }
   804  +          out: (int){ 12 }
   805  +          in: (int){ 11 }
   806  +        }
   807  +        out: (int){ 14 }
   808  +        in: (int){ 13 }
   809  +      }
   810  +      out: (int){ 16 }
   811  +      in: (int){ 15 }
   812  +    }
   813  +    f7: (struct){
   814  +      ref: (struct){
   815  +        ref: (struct){
   816  +          ref: (struct){
   817  +            ref: (struct){
   818  +              ref: (struct){
   819  +                ref: (struct){
   820  +                  out: (int){ 2 }
   821  +                }
   822  +                out: (int){ 4 }
   823  +                in: (int){ 3 }
   824  +              }
   825  +              out: (int){ 6 }
   826  +              in: (int){ 5 }
   827  +            }
   828  +            out: (int){ 8 }
   829  +            in: (int){ 7 }
   830  +          }
   831  +          out: (int){ 10 }
   832  +          in: (int){ 9 }
   833  +        }
   834  +        out: (int){ 12 }
   835  +        in: (int){ 11 }
   836  +      }
   837  +      out: (int){ 14 }
   838  +      in: (int){ 13 }
   839  +    }
   840  +    f6: (struct){
   841  +      ref: (struct){
   842  +        ref: (struct){
   843  +          ref: (struct){
   844  +            ref: (struct){
   845  +              ref: (struct){
   846  +                out: (int){ 2 }
   847  +              }
   848  +              out: (int){ 4 }
   849  +              in: (int){ 3 }
   850  +            }
   851  +            out: (int){ 6 }
   852  +            in: (int){ 5 }
   853  +          }
   854  +          out: (int){ 8 }
   855  +          in: (int){ 7 }
   856  +        }
   857  +        out: (int){ 10 }
   858  +        in: (int){ 9 }
   859  +      }
   860  +      out: (int){ 12 }
   861  +      in: (int){ 11 }
   862  +    }
   863  +    f5: (struct){
   864  +      ref: (struct){
   865  +        ref: (struct){
   866  +          ref: (struct){
   867  +            ref: (struct){
   868  +              out: (int){ 2 }
   869  +            }
   870  +            out: (int){ 4 }
   871  +            in: (int){ 3 }
   872  +          }
   873  +          out: (int){ 6 }
   874  +          in: (int){ 5 }
   875  +        }
   876  +        out: (int){ 8 }
   877  +        in: (int){ 7 }
   878  +      }
   879  +      out: (int){ 10 }
   880  +      in: (int){ 9 }
   881  +    }
   882  +    f4: (struct){
   883  +      ref: (struct){
   884  +        ref: (struct){
   885  +          ref: (struct){
   886  +            out: (int){ 2 }
   887  +          }
   888  +          out: (int){ 4 }
   889  +          in: (int){ 3 }
   890  +        }
   891  +        out: (int){ 6 }
   892  +        in: (int){ 5 }
   893  +      }
   894  +      out: (int){ 8 }
   895  +      in: (int){ 7 }
   896  +    }
   897  +    f3: (struct){
   898  +      ref: (struct){
   899  +        ref: (struct){
   900  +          out: (int){ 2 }
   901  +        }
   902  +        out: (int){ 4 }
   903  +        in: (int){ 3 }
   904  +      }
   905  +      out: (int){ 6 }
   906  +      in: (int){ 5 }
   907  +    }
   908  +    f2: (struct){
   909  +      ref: (struct){
   910  +        out: (int){ 2 }
   911  +      }
   912  +      out: (int){ 4 }
   913  +      in: (int){ 3 }
   914       }
   915       f1: (struct){
   916         out: (int){ 2 }
   917  @@ -320,177 +320,177 @@
   918     weaveExtraField: (struct){
   919       f: (struct){
   920         out: (_|_){
   921  -        // [cycle] cycle error:
   922  -        //     ./in.cue:96:8
   923  -      }
   924  -      in: (_|_){
   925  -        // [incomplete] weaveExtraField.f.in: undefined field: out:
   926  -        //     ./in.cue:97:14
   927  -      }
   928  -      ref: (struct){
   929  -        y: (int){ 4 }
   930  -      }
   931  -    }
   932  -    f8: (struct){
   933  -      out: (int){ 16 }
   934  -      in: (int){ 15 }
   935  -      ref: (struct){
   936  -        y: (int){ 4 }
   937  -        out: (int){ 14 }
   938  -        in: (int){ 13 }
   939  -        ref: (struct){
   940  -          y: (int){ 4 }
   941  -          out: (int){ 12 }
   942  -          in: (int){ 11 }
   943  -          ref: (struct){
   944  -            y: (int){ 4 }
   945  -            out: (int){ 10 }
   946  -            in: (int){ 9 }
   947  -            ref: (struct){
   948  -              y: (int){ 4 }
   949  -              out: (int){ 8 }
   950  -              in: (int){ 7 }
   951  -              ref: (struct){
   952  -                y: (int){ 4 }
   953  -                out: (int){ 6 }
   954  -                in: (int){ 5 }
   955  -                ref: (struct){
   956  -                  y: (int){ 4 }
   957  -                  out: (int){ 4 }
   958  -                  in: (int){ 3 }
   959  +        // [incomplete] weaveExtraField.f.in: undefined field: out:
   960  +        //     ./in.cue:97:14
   961  +      }
   962  +      in: (_|_){
   963  +        // [incomplete] weaveExtraField.f.in: undefined field: out:
   964  +        //     ./in.cue:97:14
   965  +      }
   966  +      ref: (struct){
   967  +        y: (int){ 4 }
   968  +      }
   969  +    }
   970  +    f8: (struct){
   971  +      ref: (struct){
   972  +        y: (int){ 4 }
   973  +        ref: (struct){
   974  +          y: (int){ 4 }
   975  +          ref: (struct){
   976  +            y: (int){ 4 }
   977  +            ref: (struct){
   978  +              y: (int){ 4 }
   979  +              ref: (struct){
   980  +                y: (int){ 4 }
   981  +                ref: (struct){
   982  +                  y: (int){ 4 }
   983                     ref: (struct){
   984                       y: (int){ 4 }
   985                       out: (int){ 2 }
   986                     }
   987  -                }
   988  -              }
   989  -            }
   990  -          }
   991  -        }
   992  -      }
   993  -    }
   994  -    f7: (struct){
   995  -      out: (int){ 14 }
   996  -      in: (int){ 13 }
   997  -      ref: (struct){
   998  -        y: (int){ 4 }
   999  -        out: (int){ 12 }
  1000  -        in: (int){ 11 }
  1001  -        ref: (struct){
  1002  -          y: (int){ 4 }
  1003  -          out: (int){ 10 }
  1004  -          in: (int){ 9 }
  1005  -          ref: (struct){
  1006  -            y: (int){ 4 }
  1007  -            out: (int){ 8 }
  1008  -            in: (int){ 7 }
  1009  -            ref: (struct){
  1010  -              y: (int){ 4 }
  1011  -              out: (int){ 6 }
  1012  -              in: (int){ 5 }
  1013  -              ref: (struct){
  1014  -                y: (int){ 4 }
  1015  -                out: (int){ 4 }
  1016  -                in: (int){ 3 }
  1017  -                ref: (struct){
  1018  -                  y: (int){ 4 }
  1019  -                  out: (int){ 2 }
  1020  -                }
  1021  -              }
  1022  -            }
  1023  -          }
  1024  -        }
  1025  -      }
  1026  -    }
  1027  -    f6: (struct){
  1028  -      out: (int){ 12 }
  1029  -      in: (int){ 11 }
  1030  -      ref: (struct){
  1031  -        y: (int){ 4 }
  1032  -        out: (int){ 10 }
  1033  -        in: (int){ 9 }
  1034  -        ref: (struct){
  1035  -          y: (int){ 4 }
  1036  -          out: (int){ 8 }
  1037  -          in: (int){ 7 }
  1038  -          ref: (struct){
  1039  -            y: (int){ 4 }
  1040  -            out: (int){ 6 }
  1041  -            in: (int){ 5 }
  1042  -            ref: (struct){
  1043  -              y: (int){ 4 }
  1044  -              out: (int){ 4 }
  1045  -              in: (int){ 3 }
  1046  -              ref: (struct){
  1047  -                y: (int){ 4 }
  1048  -                out: (int){ 2 }
  1049  -              }
  1050  -            }
  1051  -          }
  1052  -        }
  1053  -      }
  1054  -    }
  1055  -    f5: (struct){
  1056  -      out: (int){ 10 }
  1057  -      in: (int){ 9 }
  1058  -      ref: (struct){
  1059  -        y: (int){ 4 }
  1060  -        out: (int){ 8 }
  1061  -        in: (int){ 7 }
  1062  -        ref: (struct){
  1063  -          y: (int){ 4 }
  1064  -          out: (int){ 6 }
  1065  -          in: (int){ 5 }
  1066  -          ref: (struct){
  1067  -            y: (int){ 4 }
  1068  -            out: (int){ 4 }
  1069  -            in: (int){ 3 }
  1070  -            ref: (struct){
  1071  -              y: (int){ 4 }
  1072  -              out: (int){ 2 }
  1073  -            }
  1074  -          }
  1075  -        }
  1076  -      }
  1077  -    }
  1078  -    f4: (struct){
  1079  -      out: (int){ 8 }
  1080  -      in: (int){ 7 }
  1081  -      ref: (struct){
  1082  -        y: (int){ 4 }
  1083  -        out: (int){ 6 }
  1084  -        in: (int){ 5 }
  1085  -        ref: (struct){
  1086  -          y: (int){ 4 }
  1087  -          out: (int){ 4 }
  1088  -          in: (int){ 3 }
  1089  -          ref: (struct){
  1090  -            y: (int){ 4 }
  1091  -            out: (int){ 2 }
  1092  -          }
  1093  -        }
  1094  -      }
  1095  -    }
  1096  -    f3: (struct){
  1097  -      out: (int){ 6 }
  1098  -      in: (int){ 5 }
  1099  -      ref: (struct){
  1100  -        y: (int){ 4 }
  1101  -        out: (int){ 4 }
  1102  -        in: (int){ 3 }
  1103  -        ref: (struct){
  1104  -          y: (int){ 4 }
  1105  -          out: (int){ 2 }
  1106  -        }
  1107  -      }
  1108  -    }
  1109  -    f2: (struct){
  1110  -      out: (int){ 4 }
  1111  -      in: (int){ 3 }
  1112  -      ref: (struct){
  1113  -        y: (int){ 4 }
  1114  -        out: (int){ 2 }
  1115  -      }
  1116  +                  out: (int){ 4 }
  1117  +                  in: (int){ 3 }
  1118  +                }
  1119  +                out: (int){ 6 }
  1120  +                in: (int){ 5 }
  1121  +              }
  1122  +              out: (int){ 8 }
  1123  +              in: (int){ 7 }
  1124  +            }
  1125  +            out: (int){ 10 }
  1126  +            in: (int){ 9 }
  1127  +          }
  1128  +          out: (int){ 12 }
  1129  +          in: (int){ 11 }
  1130  +        }
  1131  +        out: (int){ 14 }
  1132  +        in: (int){ 13 }
  1133  +      }
  1134  +      out: (int){ 16 }
  1135  +      in: (int){ 15 }
  1136  +    }
  1137  +    f7: (struct){
  1138  +      ref: (struct){
  1139  +        y: (int){ 4 }
  1140  +        ref: (struct){
  1141  +          y: (int){ 4 }
  1142  +          ref: (struct){
  1143  +            y: (int){ 4 }
  1144  +            ref: (struct){
  1145  +              y: (int){ 4 }
  1146  +              ref: (struct){
  1147  +                y: (int){ 4 }
  1148  +                ref: (struct){
  1149  +                  y: (int){ 4 }
  1150  +                  out: (int){ 2 }
  1151  +                }
  1152  +                out: (int){ 4 }
  1153  +                in: (int){ 3 }
  1154  +              }
  1155  +              out: (int){ 6 }
  1156  +              in: (int){ 5 }
  1157  +            }
  1158  +            out: (int){ 8 }
  1159  +            in: (int){ 7 }
  1160  +          }
  1161  +          out: (int){ 10 }
  1162  +          in: (int){ 9 }
  1163  +        }
  1164  +        out: (int){ 12 }
  1165  +        in: (int){ 11 }
  1166  +      }
  1167  +      out: (int){ 14 }
  1168  +      in: (int){ 13 }
  1169  +    }
  1170  +    f6: (struct){
  1171  +      ref: (struct){
  1172  +        y: (int){ 4 }
  1173  +        ref: (struct){
  1174  +          y: (int){ 4 }
  1175  +          ref: (struct){
  1176  +            y: (int){ 4 }
  1177  +            ref: (struct){
  1178  +              y: (int){ 4 }
  1179  +              ref: (struct){
  1180  +                y: (int){ 4 }
  1181  +                out: (int){ 2 }
  1182  +              }
  1183  +              out: (int){ 4 }
  1184  +              in: (int){ 3 }
  1185  +            }
  1186  +            out: (int){ 6 }
  1187  +            in: (int){ 5 }
  1188  +          }
  1189  +          out: (int){ 8 }
  1190  +          in: (int){ 7 }
  1191  +        }
  1192  +        out: (int){ 10 }
  1193  +        in: (int){ 9 }
  1194  +      }
  1195  +      out: (int){ 12 }
  1196  +      in: (int){ 11 }
  1197  +    }
  1198  +    f5: (struct){
  1199  +      ref: (struct){
  1200  +        y: (int){ 4 }
  1201  +        ref: (struct){
  1202  +          y: (int){ 4 }
  1203  +          ref: (struct){
  1204  +            y: (int){ 4 }
  1205  +            ref: (struct){
  1206  +              y: (int){ 4 }
  1207  +              out: (int){ 2 }
  1208  +            }
  1209  +            out: (int){ 4 }
  1210  +            in: (int){ 3 }
  1211  +          }
  1212  +          out: (int){ 6 }
  1213  +          in: (int){ 5 }
  1214  +        }
  1215  +        out: (int){ 8 }
  1216  +        in: (int){ 7 }
  1217  +      }
  1218  +      out: (int){ 10 }
  1219  +      in: (int){ 9 }
  1220  +    }
  1221  +    f4: (struct){
  1222  +      ref: (struct){
  1223  +        y: (int){ 4 }
  1224  +        ref: (struct){
  1225  +          y: (int){ 4 }
  1226  +          ref: (struct){
  1227  +            y: (int){ 4 }
  1228  +            out: (int){ 2 }
  1229  +          }
  1230  +          out: (int){ 4 }
  1231  +          in: (int){ 3 }
  1232  +        }
  1233  +        out: (int){ 6 }
  1234  +        in: (int){ 5 }
  1235  +      }
  1236  +      out: (int){ 8 }
  1237  +      in: (int){ 7 }
  1238  +    }
  1239  +    f3: (struct){
  1240  +      ref: (struct){
  1241  +        y: (int){ 4 }
  1242  +        ref: (struct){
  1243  +          y: (int){ 4 }
  1244  +          out: (int){ 2 }
  1245  +        }
  1246  +        out: (int){ 4 }
  1247  +        in: (int){ 3 }
  1248  +      }
  1249  +      out: (int){ 6 }
  1250  +      in: (int){ 5 }
  1251  +    }
  1252  +    f2: (struct){
  1253  +      ref: (struct){
  1254  +        y: (int){ 4 }
  1255  +        out: (int){ 2 }
  1256  +      }
  1257  +      out: (int){ 4 }
  1258  +      in: (int){ 3 }
  1259       }
  1260       f1: (struct){
  1261         out: (int){ 2 }
  1262  -- out/eval --
  1263  (struct){
  1264    binexpr: (struct){
  1265      f1: (struct){
  1266        out: (struct){
  1267          x: (int){ 2 }
  1268        }
  1269      }
  1270      f2: (struct){
  1271        out: (struct){
  1272          x: (int){ 3 }
  1273        }
  1274      }
  1275      f3: (struct){
  1276        out: (struct){
  1277          x: (int){ 4 }
  1278        }
  1279      }
  1280      f4: (struct){
  1281        out: (struct){
  1282          x: (int){ 5 }
  1283        }
  1284      }
  1285      f5: (struct){
  1286        out: (struct){
  1287          x: (int){ 6 }
  1288        }
  1289      }
  1290      f6: (struct){
  1291        out: (struct){
  1292          x: (int){ 7 }
  1293        }
  1294      }
  1295      f7: (struct){
  1296        out: (struct){
  1297          x: (int){ 8 }
  1298        }
  1299      }
  1300      f8: (struct){
  1301        out: (struct){
  1302          x: (int){ 9 }
  1303        }
  1304      }
  1305    }
  1306    parenthesized: (struct){
  1307      f1: (struct){
  1308        out: (struct){
  1309          x: (int){ 2 }
  1310        }
  1311      }
  1312      f2: (struct){
  1313        out: (struct){
  1314          x: (int){ 3 }
  1315        }
  1316      }
  1317      f3: (struct){
  1318        out: (struct){
  1319          x: (int){ 4 }
  1320        }
  1321      }
  1322      f4: (struct){
  1323        out: (struct){
  1324          x: (int){ 5 }
  1325        }
  1326      }
  1327      f5: (struct){
  1328        out: (struct){
  1329          x: (int){ 6 }
  1330        }
  1331      }
  1332      f6: (struct){
  1333        out: (struct){
  1334          x: (int){ 7 }
  1335        }
  1336      }
  1337      f7: (struct){
  1338        out: (struct){
  1339          x: (int){ 8 }
  1340        }
  1341      }
  1342      f8: (struct){
  1343        out: (struct){
  1344          x: (int){ 9 }
  1345        }
  1346      }
  1347    }
  1348    embedded: (struct){
  1349      f1: (struct){
  1350        out: (struct){
  1351          x: (int){ 2 }
  1352        }
  1353      }
  1354      f2: (struct){
  1355        out: (struct){
  1356          x: (int){ 3 }
  1357        }
  1358      }
  1359      f3: (struct){
  1360        out: (struct){
  1361          x: (int){ 4 }
  1362        }
  1363      }
  1364      f4: (struct){
  1365        out: (struct){
  1366          x: (int){ 5 }
  1367        }
  1368      }
  1369      f5: (struct){
  1370        out: (struct){
  1371          x: (int){ 6 }
  1372        }
  1373      }
  1374      f6: (struct){
  1375        out: (struct){
  1376          x: (int){ 7 }
  1377        }
  1378      }
  1379      f7: (struct){
  1380        out: (struct){
  1381          x: (int){ 8 }
  1382        }
  1383      }
  1384      f8: (struct){
  1385        out: (struct){
  1386          x: (int){ 9 }
  1387        }
  1388      }
  1389    }
  1390    embeddedWithEmpty: (struct){
  1391      f1: (struct){
  1392        out: (struct){
  1393          x: (int){ 2 }
  1394        }
  1395      }
  1396      f2: (struct){
  1397        out: (struct){
  1398          x: (int){ 3 }
  1399        }
  1400      }
  1401      f3: (struct){
  1402        out: (struct){
  1403          x: (int){ 4 }
  1404        }
  1405      }
  1406      f4: (struct){
  1407        out: (struct){
  1408          x: (int){ 5 }
  1409        }
  1410      }
  1411      f5: (struct){
  1412        out: (struct){
  1413          x: (int){ 6 }
  1414        }
  1415      }
  1416      f6: (struct){
  1417        out: (struct){
  1418          x: (int){ 7 }
  1419        }
  1420      }
  1421      f7: (struct){
  1422        out: (struct){
  1423          x: (int){ 8 }
  1424        }
  1425      }
  1426      f8: (struct){
  1427        out: (struct){
  1428          x: (int){ 9 }
  1429        }
  1430      }
  1431    }
  1432    weave: (struct){
  1433      f: (struct){
  1434        out: (_|_){
  1435          // [cycle] cycle error:
  1436          //     ./in.cue:77:8
  1437        }
  1438        in: (_|_){
  1439          // [incomplete] weave.f.in: undefined field: out:
  1440          //     ./in.cue:78:14
  1441        }
  1442        ref: (struct){
  1443        }
  1444      }
  1445      f8: (struct){
  1446        out: (int){ 16 }
  1447        in: (int){ 15 }
  1448        ref: (struct){
  1449          out: (int){ 14 }
  1450          in: (int){ 13 }
  1451          ref: (struct){
  1452            out: (int){ 12 }
  1453            in: (int){ 11 }
  1454            ref: (struct){
  1455              out: (int){ 10 }
  1456              in: (int){ 9 }
  1457              ref: (struct){
  1458                out: (int){ 8 }
  1459                in: (int){ 7 }
  1460                ref: (struct){
  1461                  out: (int){ 6 }
  1462                  in: (int){ 5 }
  1463                  ref: (struct){
  1464                    out: (int){ 4 }
  1465                    in: (int){ 3 }
  1466                    ref: (struct){
  1467                      out: (int){ 2 }
  1468                    }
  1469                  }
  1470                }
  1471              }
  1472            }
  1473          }
  1474        }
  1475      }
  1476      f7: (struct){
  1477        out: (int){ 14 }
  1478        in: (int){ 13 }
  1479        ref: (struct){
  1480          out: (int){ 12 }
  1481          in: (int){ 11 }
  1482          ref: (struct){
  1483            out: (int){ 10 }
  1484            in: (int){ 9 }
  1485            ref: (struct){
  1486              out: (int){ 8 }
  1487              in: (int){ 7 }
  1488              ref: (struct){
  1489                out: (int){ 6 }
  1490                in: (int){ 5 }
  1491                ref: (struct){
  1492                  out: (int){ 4 }
  1493                  in: (int){ 3 }
  1494                  ref: (struct){
  1495                    out: (int){ 2 }
  1496                  }
  1497                }
  1498              }
  1499            }
  1500          }
  1501        }
  1502      }
  1503      f6: (struct){
  1504        out: (int){ 12 }
  1505        in: (int){ 11 }
  1506        ref: (struct){
  1507          out: (int){ 10 }
  1508          in: (int){ 9 }
  1509          ref: (struct){
  1510            out: (int){ 8 }
  1511            in: (int){ 7 }
  1512            ref: (struct){
  1513              out: (int){ 6 }
  1514              in: (int){ 5 }
  1515              ref: (struct){
  1516                out: (int){ 4 }
  1517                in: (int){ 3 }
  1518                ref: (struct){
  1519                  out: (int){ 2 }
  1520                }
  1521              }
  1522            }
  1523          }
  1524        }
  1525      }
  1526      f5: (struct){
  1527        out: (int){ 10 }
  1528        in: (int){ 9 }
  1529        ref: (struct){
  1530          out: (int){ 8 }
  1531          in: (int){ 7 }
  1532          ref: (struct){
  1533            out: (int){ 6 }
  1534            in: (int){ 5 }
  1535            ref: (struct){
  1536              out: (int){ 4 }
  1537              in: (int){ 3 }
  1538              ref: (struct){
  1539                out: (int){ 2 }
  1540              }
  1541            }
  1542          }
  1543        }
  1544      }
  1545      f4: (struct){
  1546        out: (int){ 8 }
  1547        in: (int){ 7 }
  1548        ref: (struct){
  1549          out: (int){ 6 }
  1550          in: (int){ 5 }
  1551          ref: (struct){
  1552            out: (int){ 4 }
  1553            in: (int){ 3 }
  1554            ref: (struct){
  1555              out: (int){ 2 }
  1556            }
  1557          }
  1558        }
  1559      }
  1560      f3: (struct){
  1561        out: (int){ 6 }
  1562        in: (int){ 5 }
  1563        ref: (struct){
  1564          out: (int){ 4 }
  1565          in: (int){ 3 }
  1566          ref: (struct){
  1567            out: (int){ 2 }
  1568          }
  1569        }
  1570      }
  1571      f2: (struct){
  1572        out: (int){ 4 }
  1573        in: (int){ 3 }
  1574        ref: (struct){
  1575          out: (int){ 2 }
  1576        }
  1577      }
  1578      f1: (struct){
  1579        out: (int){ 2 }
  1580      }
  1581    }
  1582    weaveExtraField: (struct){
  1583      f: (struct){
  1584        out: (_|_){
  1585          // [cycle] cycle error:
  1586          //     ./in.cue:96:8
  1587        }
  1588        in: (_|_){
  1589          // [incomplete] weaveExtraField.f.in: undefined field: out:
  1590          //     ./in.cue:97:14
  1591        }
  1592        ref: (struct){
  1593          y: (int){ 4 }
  1594        }
  1595      }
  1596      f8: (struct){
  1597        out: (int){ 16 }
  1598        in: (int){ 15 }
  1599        ref: (struct){
  1600          y: (int){ 4 }
  1601          out: (int){ 14 }
  1602          in: (int){ 13 }
  1603          ref: (struct){
  1604            y: (int){ 4 }
  1605            out: (int){ 12 }
  1606            in: (int){ 11 }
  1607            ref: (struct){
  1608              y: (int){ 4 }
  1609              out: (int){ 10 }
  1610              in: (int){ 9 }
  1611              ref: (struct){
  1612                y: (int){ 4 }
  1613                out: (int){ 8 }
  1614                in: (int){ 7 }
  1615                ref: (struct){
  1616                  y: (int){ 4 }
  1617                  out: (int){ 6 }
  1618                  in: (int){ 5 }
  1619                  ref: (struct){
  1620                    y: (int){ 4 }
  1621                    out: (int){ 4 }
  1622                    in: (int){ 3 }
  1623                    ref: (struct){
  1624                      y: (int){ 4 }
  1625                      out: (int){ 2 }
  1626                    }
  1627                  }
  1628                }
  1629              }
  1630            }
  1631          }
  1632        }
  1633      }
  1634      f7: (struct){
  1635        out: (int){ 14 }
  1636        in: (int){ 13 }
  1637        ref: (struct){
  1638          y: (int){ 4 }
  1639          out: (int){ 12 }
  1640          in: (int){ 11 }
  1641          ref: (struct){
  1642            y: (int){ 4 }
  1643            out: (int){ 10 }
  1644            in: (int){ 9 }
  1645            ref: (struct){
  1646              y: (int){ 4 }
  1647              out: (int){ 8 }
  1648              in: (int){ 7 }
  1649              ref: (struct){
  1650                y: (int){ 4 }
  1651                out: (int){ 6 }
  1652                in: (int){ 5 }
  1653                ref: (struct){
  1654                  y: (int){ 4 }
  1655                  out: (int){ 4 }
  1656                  in: (int){ 3 }
  1657                  ref: (struct){
  1658                    y: (int){ 4 }
  1659                    out: (int){ 2 }
  1660                  }
  1661                }
  1662              }
  1663            }
  1664          }
  1665        }
  1666      }
  1667      f6: (struct){
  1668        out: (int){ 12 }
  1669        in: (int){ 11 }
  1670        ref: (struct){
  1671          y: (int){ 4 }
  1672          out: (int){ 10 }
  1673          in: (int){ 9 }
  1674          ref: (struct){
  1675            y: (int){ 4 }
  1676            out: (int){ 8 }
  1677            in: (int){ 7 }
  1678            ref: (struct){
  1679              y: (int){ 4 }
  1680              out: (int){ 6 }
  1681              in: (int){ 5 }
  1682              ref: (struct){
  1683                y: (int){ 4 }
  1684                out: (int){ 4 }
  1685                in: (int){ 3 }
  1686                ref: (struct){
  1687                  y: (int){ 4 }
  1688                  out: (int){ 2 }
  1689                }
  1690              }
  1691            }
  1692          }
  1693        }
  1694      }
  1695      f5: (struct){
  1696        out: (int){ 10 }
  1697        in: (int){ 9 }
  1698        ref: (struct){
  1699          y: (int){ 4 }
  1700          out: (int){ 8 }
  1701          in: (int){ 7 }
  1702          ref: (struct){
  1703            y: (int){ 4 }
  1704            out: (int){ 6 }
  1705            in: (int){ 5 }
  1706            ref: (struct){
  1707              y: (int){ 4 }
  1708              out: (int){ 4 }
  1709              in: (int){ 3 }
  1710              ref: (struct){
  1711                y: (int){ 4 }
  1712                out: (int){ 2 }
  1713              }
  1714            }
  1715          }
  1716        }
  1717      }
  1718      f4: (struct){
  1719        out: (int){ 8 }
  1720        in: (int){ 7 }
  1721        ref: (struct){
  1722          y: (int){ 4 }
  1723          out: (int){ 6 }
  1724          in: (int){ 5 }
  1725          ref: (struct){
  1726            y: (int){ 4 }
  1727            out: (int){ 4 }
  1728            in: (int){ 3 }
  1729            ref: (struct){
  1730              y: (int){ 4 }
  1731              out: (int){ 2 }
  1732            }
  1733          }
  1734        }
  1735      }
  1736      f3: (struct){
  1737        out: (int){ 6 }
  1738        in: (int){ 5 }
  1739        ref: (struct){
  1740          y: (int){ 4 }
  1741          out: (int){ 4 }
  1742          in: (int){ 3 }
  1743          ref: (struct){
  1744            y: (int){ 4 }
  1745            out: (int){ 2 }
  1746          }
  1747        }
  1748      }
  1749      f2: (struct){
  1750        out: (int){ 4 }
  1751        in: (int){ 3 }
  1752        ref: (struct){
  1753          y: (int){ 4 }
  1754          out: (int){ 2 }
  1755        }
  1756      }
  1757      f1: (struct){
  1758        out: (int){ 2 }
  1759      }
  1760    }
  1761  }
  1762  -- out/compile --
  1763  --- in.cue
  1764  {
  1765    binexpr: {
  1766      f1: {
  1767        out: {
  1768          x: 2
  1769        }
  1770      }
  1771      f2: {
  1772        out: {
  1773          x: (〈2;f1〉.out.x + 1)
  1774        }
  1775      }
  1776      f3: {
  1777        out: {
  1778          x: (〈2;f2〉.out.x + 1)
  1779        }
  1780      }
  1781      f4: {
  1782        out: {
  1783          x: (〈2;f3〉.out.x + 1)
  1784        }
  1785      }
  1786      f5: {
  1787        out: {
  1788          x: (〈2;f4〉.out.x + 1)
  1789        }
  1790      }
  1791      f6: {
  1792        out: {
  1793          x: (〈2;f5〉.out.x + 1)
  1794        }
  1795      }
  1796      f7: {
  1797        out: {
  1798          x: (〈2;f6〉.out.x + 1)
  1799        }
  1800      }
  1801      f8: {
  1802        out: {
  1803          x: (〈2;f7〉.out.x + 1)
  1804        }
  1805      }
  1806    }
  1807    parenthesized: {
  1808      f1: {
  1809        out: {
  1810          x: 2
  1811        }
  1812      }
  1813      f2: {
  1814        out: {
  1815          x: (〈2;f1〉.out.x + 1)
  1816        }
  1817      }
  1818      f3: {
  1819        out: {
  1820          x: (〈2;f2〉.out.x + 1)
  1821        }
  1822      }
  1823      f4: {
  1824        out: {
  1825          x: (〈2;f3〉.out.x + 1)
  1826        }
  1827      }
  1828      f5: {
  1829        out: {
  1830          x: (〈2;f4〉.out.x + 1)
  1831        }
  1832      }
  1833      f6: {
  1834        out: {
  1835          x: (〈2;f5〉.out.x + 1)
  1836        }
  1837      }
  1838      f7: {
  1839        out: {
  1840          x: (〈2;f6〉.out.x + 1)
  1841        }
  1842      }
  1843      f8: {
  1844        out: {
  1845          x: (〈2;f7〉.out.x + 1)
  1846        }
  1847      }
  1848    }
  1849    embedded: {
  1850      f1: {
  1851        out: {
  1852          x: 2
  1853        }
  1854      }
  1855      f2: {
  1856        out: {
  1857          x: ({
  1858            〈3;f1〉.out
  1859          }.x + 1)
  1860        }
  1861      }
  1862      f3: {
  1863        out: {
  1864          x: ({
  1865            〈3;f2〉.out
  1866          }.x + 1)
  1867        }
  1868      }
  1869      f4: {
  1870        out: {
  1871          x: ({
  1872            〈3;f3〉.out
  1873          }.x + 1)
  1874        }
  1875      }
  1876      f5: {
  1877        out: {
  1878          x: ({
  1879            〈3;f4〉.out
  1880          }.x + 1)
  1881        }
  1882      }
  1883      f6: {
  1884        out: {
  1885          x: ({
  1886            〈3;f5〉.out
  1887          }.x + 1)
  1888        }
  1889      }
  1890      f7: {
  1891        out: {
  1892          x: ({
  1893            〈3;f6〉.out
  1894          }.x + 1)
  1895        }
  1896      }
  1897      f8: {
  1898        out: {
  1899          x: ({
  1900            〈3;f7〉.out
  1901          }.x + 1)
  1902        }
  1903      }
  1904    }
  1905    embeddedWithEmpty: {
  1906      f1: {
  1907        out: {
  1908          x: 2
  1909        }
  1910      }
  1911      f2: {
  1912        out: {
  1913          x: ({
  1914            (〈3;f1〉.out & {})
  1915          }.x + 1)
  1916        }
  1917      }
  1918      f3: {
  1919        out: {
  1920          x: ({
  1921            (〈3;f2〉.out & {})
  1922          }.x + 1)
  1923        }
  1924      }
  1925      f4: {
  1926        out: {
  1927          x: ({
  1928            (〈3;f3〉.out & {})
  1929          }.x + 1)
  1930        }
  1931      }
  1932      f5: {
  1933        out: {
  1934          x: ({
  1935            (〈3;f4〉.out & {})
  1936          }.x + 1)
  1937        }
  1938      }
  1939      f6: {
  1940        out: {
  1941          x: ({
  1942            (〈3;f5〉.out & {})
  1943          }.x + 1)
  1944        }
  1945      }
  1946      f7: {
  1947        out: {
  1948          x: ({
  1949            (〈3;f6〉.out & {})
  1950          }.x + 1)
  1951        }
  1952      }
  1953      f8: {
  1954        out: {
  1955          x: ({
  1956            (〈3;f7〉.out & {})
  1957          }.x + 1)
  1958        }
  1959      }
  1960    }
  1961    weave: {
  1962      f: {
  1963        out: (〈0;in〉 + 1)
  1964        in: (〈1〉.ref.out + 1)
  1965        ref: (_ & {})
  1966      }
  1967      f8: (〈0;f〉 & {
  1968        ref: 〈1;f7〉
  1969      })
  1970      f7: (〈0;f〉 & {
  1971        ref: 〈1;f6〉
  1972      })
  1973      f6: (〈0;f〉 & {
  1974        ref: 〈1;f5〉
  1975      })
  1976      f5: (〈0;f〉 & {
  1977        ref: 〈1;f4〉
  1978      })
  1979      f4: (〈0;f〉 & {
  1980        ref: 〈1;f3〉
  1981      })
  1982      f3: (〈0;f〉 & {
  1983        ref: 〈1;f2〉
  1984      })
  1985      f2: (〈0;f〉 & {
  1986        ref: 〈1;f1〉
  1987      })
  1988      f1: {
  1989        out: 2
  1990      }
  1991    }
  1992    weaveExtraField: {
  1993      f: {
  1994        out: (〈0;in〉 + 1)
  1995        in: (〈1〉.ref.out + 1)
  1996        ref: {
  1997          y: 4
  1998        }
  1999      }
  2000      f8: (〈0;f〉 & {
  2001        ref: 〈1;f7〉
  2002      })
  2003      f7: (〈0;f〉 & {
  2004        ref: 〈1;f6〉
  2005      })
  2006      f6: (〈0;f〉 & {
  2007        ref: 〈1;f5〉
  2008      })
  2009      f5: (〈0;f〉 & {
  2010        ref: 〈1;f4〉
  2011      })
  2012      f4: (〈0;f〉 & {
  2013        ref: 〈1;f3〉
  2014      })
  2015      f3: (〈0;f〉 & {
  2016        ref: 〈1;f2〉
  2017      })
  2018      f2: (〈0;f〉 & {
  2019        ref: 〈1;f1〉
  2020      })
  2021      f1: {
  2022        out: 2
  2023      }
  2024    }
  2025  }