github.com/joomcode/cue@v0.4.4-0.20221111115225-539fe3512047/cue/testdata/cycle/structural.txtar (about)

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