cuelang.org/go@v0.13.0/cue/testdata/disjunctions/elimination.txtar (about)

     1  // Ensure that disjunction elimination is not done prematurely.
     2  
     3  // Issue #651
     4  
     5  -- in.cue --
     6  import "struct"
     7  
     8  // Closedness checks should not be triggered too early, or with an improper
     9  // subset of StructInfos. Blindly finalizing partial disjuncts will end up
    10  // doing a closedness check with not all embeddings present, which can lead to
    11  // a field being rejected prematurely.
    12  //
    13  // It should be recursively disabled.
    14  disambiguateClosed: {
    15  	b: #Def & a
    16  	a: #Def
    17  	#Def: {{x: true} | {y: true}}
    18  }
    19  
    20  // Checks should never be disabled for field matching.
    21  alwaysCheckMatchers1: {
    22  	b: {[=~"^xxxx$"]: int} | null
    23  	b: {c:            string} | null
    24  	b: c: "yyyyy"
    25  }
    26  
    27  alwaysCheckPatterns2: {
    28  	a: #X
    29  	a: b
    30  
    31  	b: #X
    32  	b: c: "yyyyy"
    33  
    34  	#X: string | {
    35  		c: string
    36  		{[=~"^xxxx$"]: int}
    37  	}
    38  }
    39  
    40  nestedNonMonotonic: resolved: n1: {
    41  	x: {a:    struct.MinFields(2)} | null
    42  	x: {a: c: 1} | null
    43  	x: {a: d: 1} | null
    44  }
    45  
    46  nestedNonMonotonic: resolved: n2: {
    47  	x: {a: b:    struct.MinFields(2)} | null
    48  	x: {a: b: c: 1} | null
    49  	x: {a: b: d: 1} | null
    50  }
    51  
    52  nestedNonMonotonic: eliminated: n1: p1: {
    53  	x: {a:    struct.MaxFields(1)} | null
    54  	x: {a: c: 1} | null
    55  	x: {a: d: 1} | null
    56  }
    57  
    58  nestedNonMonotonic: eliminated: n1: p2: {
    59  	x: {a: c: 1} | null
    60  	x: {a:    struct.MaxFields(1)} | null
    61  	x: {a: d: 1} | null
    62  }
    63  
    64  nestedNonMonotonic: eliminated: n1: p2: {
    65  	x: {a: c: 1} | null
    66  	x: {a: d: 1} | null
    67  	x: {a:    struct.MaxFields(1)} | null
    68  }
    69  
    70  nestedNonMonotonic: eliminated: n2: p1: {
    71  	x: {a: b:    struct.MaxFields(1)} | null
    72  	x: {a: b: c: 1} | null
    73  	x: {a: b: d: 1} | null
    74  }
    75  
    76  nestedNonMonotonic: eliminated: n2: p2: {
    77  	x: {a: b: c: 1} | null
    78  	x: {a: b:    struct.MaxFields(1)} | null
    79  	x: {a: b: d: 1} | null
    80  }
    81  
    82  nestedNonMonotonic: eliminated: n2: p2: {
    83  	x: {a: b: c: 1} | null
    84  	x: {a: b: d: 1} | null
    85  	x: {a: b:    struct.MaxFields(1)} | null
    86  }
    87  
    88  // TODO: should be incomplete.
    89  nestedNonMonotonic: incomplete: a: n1: p1: {
    90  	x: {a:    struct.MinFields(2)} | null
    91  	x: {a: c: 1} | null
    92  }
    93  
    94  // TODO: should be incomplete.
    95  nestedNonMonotonic: incomplete: a: n1: p2: {
    96  	x: {a: c: 1} | null
    97  	x: {a:    struct.MinFields(2)} | null
    98  }
    99  
   100  nestedNonMonotonic: incomplete: a: n2: p1: {
   101  	x: {a: b:    struct.MinFields(2)} | null
   102  	x: {a: b: c: 1} | null
   103  }
   104  
   105  nestedNonMonotonic: incomplete: a: n2: p2: {
   106  	x: {a: b: c: 1} | null
   107  	x: {a: b:    struct.MinFields(2)} | null
   108  }
   109  
   110  nestedNonMonotonic: incomplete: b: n1: p1: {
   111  	x: {a:    struct.MinFields(3)} | null
   112  	x: {a: c: 1} | null
   113  	x: {a: d: 1} | null
   114  }
   115  
   116  nestedNonMonotonic: incomplete: b: n1: p2: {
   117  	x: {a: c: 1} | null
   118  	x: {a:    struct.MinFields(3)} | null
   119  	x: {a: d: 1} | null
   120  }
   121  
   122  nestedNonMonotonic: incomplete: b: n1: p3: {
   123  	x: {a: c: 1} | null
   124  	x: {a: d: 1} | null
   125  	x: {a:    struct.MinFields(3)} | null
   126  }
   127  
   128  nestedNonMonotonic: incomplete: b: n2: p1: {
   129  	x: {a: b:    struct.MinFields(3)} | null
   130  	x: {a: b: c: 1} | null
   131  	x: {a: b: d: 1} | null
   132  }
   133  
   134  nestedNonMonotonic: incomplete: b: n2: p1: {
   135  	x: {a: b: c: 1} | null
   136  	x: {a: b:    struct.MinFields(3)} | null
   137  	x: {a: b: d: 1} | null
   138  }
   139  
   140  nestedNonMonotonic: incomplete: b: n2: p1: {
   141  	x: {a: b: c: 1} | null
   142  	x: {a: b: d: 1} | null
   143  	x: {a: b:    struct.MinFields(3)} | null
   144  }
   145  
   146  preserveClosedness: small: p1: {
   147  	#A: #B & {a: string}
   148  	#B: {
   149  		*{} | {a: string}
   150  		*{} | {b: int}
   151  	}
   152  }
   153  
   154  preserveClosedness: small: p2: {
   155  	#A: #B & {a: string}
   156  	#B: {
   157  		{a: string} | *{}
   158  		*{} | {b: int}
   159  	}
   160  }
   161  
   162  preserveClosedness: medium: p1: {
   163  	#A: #B & {a: string}
   164  	#B: {
   165  		*{} | {a: string} | {b: string}
   166  		*{} | {c: int} | {d: string}
   167  	}
   168  }
   169  
   170  preserveClosedness: medium: p2: {
   171  	#A: #B & {a: string}
   172  	#B: {
   173  		{a: string} | *{} | {b: string}
   174  		*{} | {c: int} | {d: string}
   175  	}
   176  }
   177  
   178  preserveClosedness: medium: p3: {
   179  	#A: #B & {a: string}
   180  	#B: {
   181  		{a: string} | {b: string} | *{}
   182  		*{} | {c: int} | {d: string}
   183  	}
   184  }
   185  
   186  // If an error occurred in the last disjunction, it may sometimes be propagated
   187  // to parent nodes. This, in turn, could lead to references to such field
   188  // to fail with that error.
   189  noChildError: _
   190  noChildError: issue1608: {
   191  	myValue: #type & {fieldName: "some string"}
   192  	#type: fieldName: #subtype
   193  
   194  	#subtype: string | {foo: string} | {bar: #subtype}
   195  }
   196  
   197  noChildError: t1: {
   198  	#D: {b: string} | {c: #D }
   199  	o: #D & {b: "test"}
   200  }
   201  
   202  noChildError: t2: {
   203  	o: #D & {b: "test"}
   204  	#D: {b: string} | {c: #D }
   205  }
   206  
   207  noChildError: t3: {
   208  	#D: {a: null} | {b: string} | {c: #D }
   209  	o: #D & {b: "test"}
   210  }
   211  
   212  noChildError: t4: {
   213  	o: #D & {b: "test"}
   214  	#D: {a: null} | {b: string} | {c: #D }
   215  }
   216  
   217  
   218  issue1924: t1: {
   219  	m: a: 2
   220  	x: *[m.b] | 2
   221  }
   222  issue1924: t2: {
   223  	m: a: 2
   224  	x: *{v: m.b} | 3
   225  }
   226  issue1924: t3: {
   227  	m: a: 2
   228  	x: *m.b | 1
   229  }
   230  
   231  // should eliminate erroneous comprehension and pass
   232  issue1838: t1: {
   233  	p?: []
   234  	a: [for k in p {k}] | null
   235  }
   236  issue1838: t2: {
   237  	p?: []
   238  	a: null | [for k in p {k}]
   239  }
   240  
   241  noHang: {
   242  	// This should terminate.
   243  	#T: ["a", #T] | ["d", ...#T]
   244  
   245  	x: #T
   246  
   247  	#X: x
   248  	#X: #T
   249  }
   250  
   251  issue1940: {
   252  	#T: ["a", #T] | ["b", #T] | ["c", #T] | ["d", [...#T]]
   253  
   254  	#A: type: #T
   255  
   256  	#B: [string]: #A
   257  
   258  	#C: #B & {
   259  		x: #A
   260  	}
   261  }
   262  
   263  -- issue2209full.cue --
   264  // TODO: fix
   265  
   266  issue2209: simplified: t1: {
   267  	#SpecFoo: foo: min: 1
   268  	#SpecBar: bar: min: 1
   269  	spec: bar: {}
   270  	spec:  #SpecFoo | #SpecBar
   271  	out: {
   272  		{nullFoo: null} | {nullBar: null}
   273  		{minFoo: int} | {minBar: int}
   274  		if X.bar != _|_ {
   275  			minBar: X.bar.min
   276  		}
   277  		X: spec
   278  	}
   279  }
   280  
   281  issue2209: simplified: t2: {
   282  	#SpecFoo: foo: {}
   283  	#SpecBar: bar: x: 1
   284  	spec: bar: {}
   285  	spec: *#SpecFoo | #SpecBar
   286  	if spec.bar != _|_ {
   287  		BAZ: spec.bar.x
   288  	}
   289  	{f1: int} | {b2: int}
   290  	{f2: int} | {b2: int}
   291  }
   292  
   293  // This test fails for 0.4 and 0.5.
   294  issue2209: simplified: t3: {
   295  	#A: v: 1
   296  	{f1: int} | {b2: int}
   297  	{f2: int} | {b2: int}
   298  	BAZ: S.y
   299  	S: *#A | #B
   300  	#B: {x: 1, y: 1}
   301  	S: x: 1
   302  }
   303  
   304  issue2209: full: {
   305  	Foo: #Abstract & {spec: foo: {}}
   306  	Bar: #Abstract & {spec: bar: {}}
   307  
   308  	#Abstract: X={
   309  		spec: _#Spec
   310  
   311  		resource: _Thing & {_X: spec: X.spec}
   312  	}
   313  
   314  	_#Spec: *_#SpecFoo | _#SpecBar
   315  
   316  	_#SpecFoo: {
   317  		foo: {
   318  			min: int | *10
   319  			max: int | *20
   320  		}
   321  	}
   322  
   323  	_#SpecBar: {
   324  		bar: {
   325  			min: int | *30
   326  			max: int | *40
   327  		}
   328  	}
   329  
   330  	_Thing: #Constrained & {
   331  		_X: _
   332  
   333  		spec: {
   334  			if _X.spec.foo != _|_ {
   335  				minFoo: _X.spec.foo.min
   336  				maxFoo: _X.spec.foo.max
   337  			}
   338  
   339  			if _X.spec.bar != _|_ {
   340  				minBar: _X.spec.bar.min
   341  				maxBar: _X.spec.bar.max
   342  			}
   343  		}
   344  	}
   345  
   346  	#Constrained: #Base & {
   347  		spec: {
   348  			minFoo:  int | *10
   349  			maxFoo:  int | *20
   350  			minBar?: null
   351  			maxBar?: null
   352  		} | {
   353  			minBar:  int | *30
   354  			maxBar:  int | *40
   355  			minFoo?: null
   356  			maxFoo?: null
   357  		}
   358  
   359  		spec: *{
   360  			fuga?: null
   361  		} | {
   362  			hoge?: null
   363  		}
   364  	}
   365  
   366  	#Base: {
   367  		spec: {
   368  			minFoo?: null | int
   369  			maxFoo?: null | int
   370  			minBar?: null | int
   371  			maxBar?: null | int
   372  
   373  			hoge?: null | bool
   374  			fuga?: null | bool
   375  		}
   376  	}
   377  }
   378  
   379  
   380  -- issue2246.cue --
   381  issue2246: simplified: {
   382  	#FormFoo: fooID: string
   383  	#FormBar: barID: string
   384  	#Form: { #FormFoo | #FormBar }
   385  
   386  	data: {fooID: "123"}
   387  	out1: #Form & data
   388  	out2: #Form & out1
   389  }
   390  issue2246: full: {
   391  	data: forms: [{
   392  		fooID: "00-0000001"
   393  	}]
   394  
   395  	form1040: (#compute & {in: data}).out
   396  
   397  	#K1: {
   398  		#_base: common: 3
   399  		#FormFoo: {
   400  			#_base
   401  			fooID: string
   402  		}
   403  		#FormBar: {
   404  			#_base
   405  			barID: string
   406  		}
   407  		#Form: {
   408  			#FormFoo | #FormBar
   409  		}
   410  	}
   411  
   412  	#Input: {
   413  		forms: [...#K1.#Form]
   414  	}
   415  
   416  	#summarizeReturn: {
   417  		in:  #Input
   418  		out: [for k in in.forms { k.common }]
   419  	}
   420  
   421  	#compute: {
   422  		in:  #Input
   423  		out: (#summarizeReturn & {"in": in}).out
   424  	}
   425  }
   426  
   427  -- issue2263.cue --
   428  issue2263: simplified: {
   429  	metrics: #Metric
   430  	#Metric: {
   431  		#IDSource | {}
   432  		#TargetAverage | {}
   433  	}
   434  
   435  	metrics: {
   436  		id:  "foo"
   437  		avg: 60
   438  	}
   439  
   440  	#IDSource: id: string
   441  	#TargetAverage: avg: number
   442  }
   443  issue2263: full: {
   444  	metrics: [...#Metric]
   445  
   446  	metrics: [{
   447  		id:  "foo"
   448  		avg: 60
   449  	}, {
   450  		id:    "bar"
   451  		value: 80
   452  	}, {
   453  		uri: "baz"
   454  		avg: 70
   455  	}, {
   456  		uri:   "qux"
   457  		value: 90
   458  	}]
   459  
   460  	#Metric: {
   461  		#Source
   462  		#Target
   463  	}
   464  
   465  	#Source:
   466  		#IDSource |
   467  		#URISource
   468  
   469  	#Target:
   470  		#TargetAverage |
   471  		#TargetValue
   472  
   473  	#IDSource: {
   474  		id: string
   475  	}
   476  
   477  	#URISource: {
   478  		uri: string
   479  	}
   480  
   481  	#TargetAverage: {
   482  		avg: number
   483  	}
   484  
   485  	#TargetValue: {
   486  		value: number
   487  	}
   488  }
   489  -- issue1417.cue --
   490  issue1417: {
   491  	#ID: !~"^a" | =~"^ab$" | =~"^aB$"
   492  	#ID: =~"^a" | !~"[A-Z]"
   493  	ids: [...#ID] & ["xyz", "ab", "aB"]
   494  }
   495  -- issue3149.cue --
   496  issue3149: {
   497  	#valid: {
   498  		name!: ( (=~"^Foo") | "an exception") & ( (=~"Foo$") | "an exception")
   499  	}
   500  	list: [...#valid]
   501  	list: [
   502  		{name: "FooBarFoo"},
   503  		{name: "FooBazFoo"},
   504  		{name: "FooQuuxFoo"},
   505  		{name: "an exception"},
   506  	]
   507  }
   508  -- issue770.cue --
   509  issue770: {
   510  	#A: {
   511  		v: "a" | "b" | "c"
   512  	}
   513  	h: [string]: #A
   514  	h: a: {
   515  		v: *"a" | string
   516  	}
   517  	h: [=~"^b"]: {
   518  		v: *h.a.v | string
   519  	}
   520  	h: [=~"^c"]: {
   521  		v: *h.b.v | string
   522  	}
   523  	h: b:   _
   524  	h: boo: _
   525  	h: c:   _
   526  	h: coo: _
   527  }
   528  -- issue3528.cue --
   529  issue3528: original: {
   530  	workflows: [...#Workflow]
   531  	workflows: [test]
   532  
   533  	test: #Workflow & {}
   534  
   535  	#Workflow: {
   536  		container: [string]: string | #container
   537  		#container: string | {volumes?: [...string]}
   538  	}
   539  }
   540  issue3528: reduced: {
   541  	a?: #A
   542  	a:  #A & {}
   543  	#A: {
   544  		A: [string]: 1 | #a
   545  		#a: 2 | {v: 1}
   546  	}
   547  }
   548  issue3528: counter: {
   549  }
   550  issue3528: nested: t1: {
   551  	{v: 1} | (2 | 3)
   552  	{v: 1} | (2 | 3)
   553  	{v: 1} | (2 | 3)
   554  	{v: 1} | (2 | 3)
   555  }
   556  issue3528: nested: t2: {
   557  	{v: 1} | 2
   558  	{v: 1} | (2 | 3)
   559  	{v: 1} | 2
   560  	{v: 1} | 2
   561  }
   562  -- issue3784.cue --
   563  issue3784: reduced: {
   564  	#Schema: a: {
   565  		kind: "A"
   566  		b: c?: string
   567  		b: {}
   568  	} | {
   569  		kind: "B"
   570  	}
   571  	
   572  	out: #Schema
   573  	out: a: {
   574  		kind: "A"
   575  		b: c: "x"
   576  	}
   577  }
   578  issue3784: full: {
   579  	#Schema: {
   580  		pages?: {
   581  			build_type?: "legacy" | "workflow"
   582  			source?: {
   583  				branch?: string
   584  				path?:   string
   585  			}
   586  			cname?: string
   587  		}
   588  		pages?: {
   589  			build_type!: "legacy"
   590  			source!: {
   591  				branch!: _
   592  			}
   593  		} | close({
   594  			build_type!: "workflow"
   595  			cname?:      _
   596  		})
   597  	}
   598  	out: #Schema & {
   599  		pages: {
   600  			cname:      "foo.com"
   601  			build_type: "legacy"
   602  			source: {
   603  				branch: "main"
   604  				path:   "/"
   605  			}
   606  		}
   607  	}
   608  }
   609  issue3784: variant1: {
   610  	#Schema: {
   611  		pages: {
   612  			build_type?: "legacy" | "workflow"
   613  			source: {
   614  				branch?: string
   615  				path?:   string
   616  			}
   617  			cname?: string
   618  		}
   619  		pages?: {
   620  			build_type!: "legacy"
   621  			source!: {
   622  				branch!: _
   623  			}
   624  		} | close({
   625  			build_type!: "workflow"
   626  			cname?:      _
   627  		})
   628  	}
   629  }
   630  issue3784: variant2: {
   631  	#Schema: {
   632  		build_type!: "legacy"
   633  		source!: {
   634  			branch!: _
   635  		}
   636  	} | close({
   637  		build_type!: "workflow"
   638  		cname?:      _
   639  	})
   640  	a: #Schema
   641  	a: {
   642  		build_type?: "legacy" | "workflow"
   643  		source: {
   644  			branch?: string
   645  			path?:   string
   646  		}
   647  		cname?: string
   648  	}
   649  }
   650  -- out/evalalpha --
   651  (struct){
   652    disambiguateClosed: (struct){
   653      b: (#struct){ |((#struct){
   654          x: (bool){ true }
   655        }, (#struct){
   656          y: (bool){ true }
   657        }) }
   658      a: (#struct){ |((#struct){
   659          x: (bool){ true }
   660        }, (#struct){
   661          y: (bool){ true }
   662        }) }
   663      #Def: (#struct){ |((#struct){
   664          x: (bool){ true }
   665        }, (#struct){
   666          y: (bool){ true }
   667        }) }
   668    }
   669    alwaysCheckMatchers1: (struct){
   670      b: (struct){
   671        c: (string){ "yyyyy" }
   672      }
   673    }
   674    alwaysCheckPatterns2: (struct){
   675      a: (#struct){
   676        c: (string){ "yyyyy" }
   677      }
   678      b: (#struct){
   679        c: (string){ "yyyyy" }
   680      }
   681      #X: ((string|struct)){ |((string){ string }, (#struct){
   682          c: (string){ string }
   683        }) }
   684    }
   685    nestedNonMonotonic: (struct){
   686      resolved: (struct){
   687        n1: (struct){
   688          x: ((null|struct)){ |((struct){
   689              a: (struct){
   690                c: (int){ 1 }
   691                d: (int){ 1 }
   692              }
   693            }, (null){ null }) }
   694        }
   695        n2: (struct){
   696          x: ((null|struct)){ |((struct){
   697              a: (struct){
   698                b: (struct){
   699                  c: (int){ 1 }
   700                  d: (int){ 1 }
   701                }
   702              }
   703            }, (null){ null }) }
   704        }
   705      }
   706      eliminated: (struct){
   707        n1: (struct){
   708          p1: (struct){
   709            x: (null){ null }
   710          }
   711          p2: (struct){
   712            x: (null){ null }
   713          }
   714        }
   715        n2: (struct){
   716          p1: (struct){
   717            x: (null){ null }
   718          }
   719          p2: (struct){
   720            x: (null){ null }
   721          }
   722        }
   723      }
   724      incomplete: (struct){
   725        a: (struct){
   726          n1: (struct){
   727            p1: (struct){
   728              x: (null){ null }
   729            }
   730            p2: (struct){
   731              x: (null){ null }
   732            }
   733          }
   734          n2: (struct){
   735            p1: (struct){
   736              x: ((null|struct)){ |((struct){
   737                  a: (struct){
   738                    b: (_|_){
   739                      // [incomplete] nestedNonMonotonic.incomplete.a.n2.p1.x.a.b: invalid value {c:1} (does not satisfy struct.MinFields(2)): len(fields) < MinFields(2) (1 < 2):
   740                      //     ./in.cue:96:15
   741                      //     ./in.cue:96:32
   742                      //     ./in.cue:97:12
   743                      c: (int){ 1 }
   744                    }
   745                  }
   746                }, (null){ null }) }
   747            }
   748            p2: (struct){
   749              x: ((null|struct)){ |((struct){
   750                  a: (struct){
   751                    b: (_|_){
   752                      // [incomplete] nestedNonMonotonic.incomplete.a.n2.p2.x.a.b: invalid value {c:1} (does not satisfy struct.MinFields(2)): len(fields) < MinFields(2) (1 < 2):
   753                      //     ./in.cue:102:15
   754                      //     ./in.cue:101:12
   755                      //     ./in.cue:102:32
   756                      c: (int){ 1 }
   757                    }
   758                  }
   759                }, (null){ null }) }
   760            }
   761          }
   762        }
   763        b: (struct){
   764          n1: (struct){
   765            p1: (struct){
   766              x: (null){ null }
   767            }
   768            p2: (struct){
   769              x: (null){ null }
   770            }
   771            p3: (struct){
   772              x: (null){ null }
   773            }
   774          }
   775          n2: (struct){
   776            p1: (struct){
   777              x: ((null|struct)){ |((struct){
   778                  a: (struct){
   779                    b: (_|_){
   780                      // [incomplete] nestedNonMonotonic.incomplete.b.n2.p1.x.a.b: invalid value {c:1,d:1} (does not satisfy struct.MinFields(3)): len(fields) < MinFields(3) (2 < 3):
   781                      //     ./in.cue:138:15
   782                      //     ./in.cue:124:15
   783                      //     ./in.cue:125:12
   784                      //     ./in.cue:126:12
   785                      //     ./in.cue:130:12
   786                      //     ./in.cue:131:15
   787                      //     ./in.cue:132:12
   788                      //     ./in.cue:136:12
   789                      //     ./in.cue:137:12
   790                      //     ./in.cue:138:32
   791                      c: (int){ 1 }
   792                      d: (int){ 1 }
   793                    }
   794                  }
   795                }, (null){ null }) }
   796            }
   797          }
   798        }
   799      }
   800    }
   801    preserveClosedness: (struct){
   802      small: (struct){
   803        p1: (struct){
   804          #A: (#struct){ |(*(#struct){
   805              a: (string){ string }
   806            }, (#struct){
   807              a: (string){ string }
   808              b: (int){ int }
   809            }) }
   810          #B: (#struct){ |(*(#struct){
   811            }, (#struct){
   812              b: (int){ int }
   813            }, (#struct){
   814              a: (string){ string }
   815            }, (#struct){
   816              a: (string){ string }
   817              b: (int){ int }
   818            }) }
   819        }
   820        p2: (struct){
   821          #A: (#struct){ |(*(#struct){
   822              a: (string){ string }
   823            }, (#struct){
   824              a: (string){ string }
   825              b: (int){ int }
   826            }) }
   827          #B: (#struct){ |(*(#struct){
   828            }, (#struct){
   829              a: (string){ string }
   830              b: (int){ int }
   831            }, (#struct){
   832              a: (string){ string }
   833            }, (#struct){
   834              b: (int){ int }
   835            }) }
   836        }
   837      }
   838      medium: (struct){
   839        p1: (struct){
   840          #A: (#struct){ |(*(#struct){
   841              a: (string){ string }
   842            }, (#struct){
   843              a: (string){ string }
   844              c: (int){ int }
   845            }, (#struct){
   846              a: (string){ string }
   847              d: (string){ string }
   848            }) }
   849          #B: (#struct){ |(*(#struct){
   850            }, (#struct){
   851              c: (int){ int }
   852            }, (#struct){
   853              d: (string){ string }
   854            }, (#struct){
   855              a: (string){ string }
   856            }, (#struct){
   857              a: (string){ string }
   858              c: (int){ int }
   859            }, (#struct){
   860              a: (string){ string }
   861              d: (string){ string }
   862            }, (#struct){
   863              b: (string){ string }
   864            }, (#struct){
   865              b: (string){ string }
   866              c: (int){ int }
   867            }, (#struct){
   868              b: (string){ string }
   869              d: (string){ string }
   870            }) }
   871        }
   872        p2: (struct){
   873          #A: (#struct){ |(*(#struct){
   874              a: (string){ string }
   875            }, (#struct){
   876              a: (string){ string }
   877              c: (int){ int }
   878            }, (#struct){
   879              a: (string){ string }
   880              d: (string){ string }
   881            }) }
   882          #B: (#struct){ |(*(#struct){
   883            }, (#struct){
   884              a: (string){ string }
   885              c: (int){ int }
   886            }, (#struct){
   887              a: (string){ string }
   888              d: (string){ string }
   889            }, (#struct){
   890              a: (string){ string }
   891            }, (#struct){
   892              c: (int){ int }
   893            }, (#struct){
   894              d: (string){ string }
   895            }, (#struct){
   896              b: (string){ string }
   897            }, (#struct){
   898              b: (string){ string }
   899              c: (int){ int }
   900            }, (#struct){
   901              b: (string){ string }
   902              d: (string){ string }
   903            }) }
   904        }
   905        p3: (struct){
   906          #A: (#struct){ |(*(#struct){
   907              a: (string){ string }
   908            }, (#struct){
   909              a: (string){ string }
   910              c: (int){ int }
   911            }, (#struct){
   912              a: (string){ string }
   913              d: (string){ string }
   914            }) }
   915          #B: (#struct){ |(*(#struct){
   916            }, (#struct){
   917              a: (string){ string }
   918              c: (int){ int }
   919            }, (#struct){
   920              a: (string){ string }
   921              d: (string){ string }
   922            }, (#struct){
   923              b: (string){ string }
   924            }, (#struct){
   925              b: (string){ string }
   926              c: (int){ int }
   927            }, (#struct){
   928              b: (string){ string }
   929              d: (string){ string }
   930            }, (#struct){
   931              a: (string){ string }
   932            }, (#struct){
   933              c: (int){ int }
   934            }, (#struct){
   935              d: (string){ string }
   936            }) }
   937        }
   938      }
   939    }
   940    noChildError: (struct){
   941      issue1608: (struct){
   942        myValue: (#struct){
   943          fieldName: (string){ "some string" }
   944        }
   945        #type: (#struct){
   946          fieldName: ((string|struct)){ |((string){ string }, (#struct){
   947              foo: (string){ string }
   948            }) }
   949        }
   950        #subtype: ((string|struct)){ |((string){ string }, (#struct){
   951            foo: (string){ string }
   952          }) }
   953      }
   954      t1: (struct){
   955        #D: (#struct){
   956          b: (string){ string }
   957        }
   958        o: (#struct){
   959          b: (string){ "test" }
   960        }
   961      }
   962      t2: (struct){
   963        o: (#struct){
   964          b: (string){ "test" }
   965        }
   966        #D: (#struct){
   967          b: (string){ string }
   968        }
   969      }
   970      t3: (struct){
   971        #D: (#struct){ |((#struct){
   972            a: (null){ null }
   973          }, (#struct){
   974            b: (string){ string }
   975          }) }
   976        o: (#struct){
   977          b: (string){ "test" }
   978        }
   979      }
   980      t4: (struct){
   981        o: (#struct){
   982          b: (string){ "test" }
   983        }
   984        #D: (#struct){ |((#struct){
   985            a: (null){ null }
   986          }, (#struct){
   987            b: (string){ string }
   988          }) }
   989      }
   990    }
   991    issue1924: (struct){
   992      t1: (struct){
   993        m: (struct){
   994          a: (int){ 2 }
   995        }
   996        x: (int){ 2 }
   997      }
   998      t2: (struct){
   999        m: (struct){
  1000          a: (int){ 2 }
  1001        }
  1002        x: (int){ 3 }
  1003      }
  1004      t3: (struct){
  1005        m: (struct){
  1006          a: (int){ 2 }
  1007        }
  1008        x: (int){ 1 }
  1009      }
  1010    }
  1011    issue1838: (struct){
  1012      t1: (struct){
  1013        p?: (#list){
  1014        }
  1015        a: (null){ null }
  1016      }
  1017      t2: (struct){
  1018        p?: (#list){
  1019        }
  1020        a: (null){ null }
  1021      }
  1022    }
  1023    noHang: (struct){
  1024      #T: (list){
  1025        0: (string){ "d" }
  1026      }
  1027      x: ~(noHang.#T)
  1028      #X: ~(noHang.#T)
  1029    }
  1030    issue1940: (struct){
  1031      #T: (#list){
  1032        0: (string){ "d" }
  1033        1: (list){
  1034        }
  1035      }
  1036      #A: (#struct){
  1037        type: ~(issue1940.#T)
  1038      }
  1039      #B: (#struct){
  1040      }
  1041      #C: (#struct){
  1042        x: ~(issue1940.#A)
  1043      }
  1044    }
  1045    issue1417: (struct){
  1046      #ID: (string){ |((string){ &(!~"^a", =~"^a") }, (string){ &(!~"^a", !~"[A-Z]") }, (string){ &(=~"^ab$", =~"^a") }, (string){ &(=~"^ab$", !~"[A-Z]") }, (string){ &(=~"^aB$", =~"^a") }, (string){ &(=~"^aB$", !~"[A-Z]") }) }
  1047      ids: (#list){
  1048        0: (string){ "xyz" }
  1049        1: (string){ "ab" }
  1050        2: (string){ "aB" }
  1051      }
  1052    }
  1053    issue2209: (struct){
  1054      simplified: (struct){
  1055        t1: (struct){
  1056          #SpecFoo: (#struct){
  1057            foo: (#struct){
  1058              min: (int){ 1 }
  1059            }
  1060          }
  1061          #SpecBar: (#struct){
  1062            bar: (#struct){
  1063              min: (int){ 1 }
  1064            }
  1065          }
  1066          spec: (#struct){
  1067            bar: (#struct){
  1068              min: (int){ 1 }
  1069            }
  1070          }
  1071          out: (struct){ |((struct){
  1072              minBar: (int){ 1 }
  1073              X: ~(issue2209.simplified.t1.spec)
  1074              nullFoo: (null){ null }
  1075              minFoo: (int){ int }
  1076            }, (struct){
  1077              minBar: (int){ 1 }
  1078              X: ~(issue2209.simplified.t1.spec)
  1079              nullFoo: (null){ null }
  1080            }, (struct){
  1081              minBar: (int){ 1 }
  1082              X: ~(issue2209.simplified.t1.spec)
  1083              nullBar: (null){ null }
  1084              minFoo: (int){ int }
  1085            }, (struct){
  1086              minBar: (int){ 1 }
  1087              X: ~(issue2209.simplified.t1.spec)
  1088              nullBar: (null){ null }
  1089            }) }
  1090        }
  1091        t2: (struct){ |((struct){
  1092            #SpecFoo: (#struct){
  1093              foo: (#struct){
  1094              }
  1095            }
  1096            #SpecBar: (#struct){
  1097              bar: (#struct){
  1098                x: (int){ 1 }
  1099              }
  1100            }
  1101            spec: (#struct){
  1102              bar: (#struct){
  1103                x: (int){ 1 }
  1104              }
  1105            }
  1106            BAZ: (int){ 1 }
  1107            f1: (int){ int }
  1108            f2: (int){ int }
  1109          }, (struct){
  1110            #SpecFoo: (#struct){
  1111              foo: (#struct){
  1112              }
  1113            }
  1114            #SpecBar: (#struct){
  1115              bar: (#struct){
  1116                x: (int){ 1 }
  1117              }
  1118            }
  1119            spec: (#struct){
  1120              bar: (#struct){
  1121                x: (int){ 1 }
  1122              }
  1123            }
  1124            BAZ: (int){ 1 }
  1125            f1: (int){ int }
  1126            b2: (int){ int }
  1127          }, (struct){
  1128            #SpecFoo: (#struct){
  1129              foo: (#struct){
  1130              }
  1131            }
  1132            #SpecBar: (#struct){
  1133              bar: (#struct){
  1134                x: (int){ 1 }
  1135              }
  1136            }
  1137            spec: (#struct){
  1138              bar: (#struct){
  1139                x: (int){ 1 }
  1140              }
  1141            }
  1142            BAZ: (int){ 1 }
  1143            b2: (int){ int }
  1144            f2: (int){ int }
  1145          }, (struct){
  1146            #SpecFoo: (#struct){
  1147              foo: (#struct){
  1148              }
  1149            }
  1150            #SpecBar: (#struct){
  1151              bar: (#struct){
  1152                x: (int){ 1 }
  1153              }
  1154            }
  1155            spec: (#struct){
  1156              bar: (#struct){
  1157                x: (int){ 1 }
  1158              }
  1159            }
  1160            BAZ: (int){ 1 }
  1161            b2: (int){ int }
  1162          }) }
  1163        t3: (struct){ |((struct){
  1164            #A: (#struct){
  1165              v: (int){ 1 }
  1166            }
  1167            BAZ: (int){ 1 }
  1168            S: (#struct){
  1169              x: (int){ 1 }
  1170              y: (int){ 1 }
  1171            }
  1172            #B: (#struct){
  1173              x: (int){ 1 }
  1174              y: (int){ 1 }
  1175            }
  1176            f1: (int){ int }
  1177            f2: (int){ int }
  1178          }, (struct){
  1179            #A: (#struct){
  1180              v: (int){ 1 }
  1181            }
  1182            BAZ: (int){ 1 }
  1183            S: (#struct){
  1184              x: (int){ 1 }
  1185              y: (int){ 1 }
  1186            }
  1187            #B: (#struct){
  1188              x: (int){ 1 }
  1189              y: (int){ 1 }
  1190            }
  1191            f1: (int){ int }
  1192            b2: (int){ int }
  1193          }, (struct){
  1194            #A: (#struct){
  1195              v: (int){ 1 }
  1196            }
  1197            BAZ: (int){ 1 }
  1198            S: (#struct){
  1199              x: (int){ 1 }
  1200              y: (int){ 1 }
  1201            }
  1202            #B: (#struct){
  1203              x: (int){ 1 }
  1204              y: (int){ 1 }
  1205            }
  1206            b2: (int){ int }
  1207            f2: (int){ int }
  1208          }, (struct){
  1209            #A: (#struct){
  1210              v: (int){ 1 }
  1211            }
  1212            BAZ: (int){ 1 }
  1213            S: (#struct){
  1214              x: (int){ 1 }
  1215              y: (int){ 1 }
  1216            }
  1217            #B: (#struct){
  1218              x: (int){ 1 }
  1219              y: (int){ 1 }
  1220            }
  1221            b2: (int){ int }
  1222          }) }
  1223      }
  1224      full: (struct){
  1225        Foo: (#struct){
  1226          spec: (#struct){
  1227            foo: (#struct){
  1228              min: (int){ |(*(int){ 10 }, (int){ int }) }
  1229              max: (int){ |(*(int){ 20 }, (int){ int }) }
  1230            }
  1231          }
  1232          resource: (#struct){
  1233            _X: (#struct){
  1234              spec: ~(issue2209.full.Foo.spec)
  1235            }
  1236            spec: (#struct){ |(*(#struct){
  1237                minFoo: (int){ |(*(int){ 10 }, (int){ int }) }
  1238                maxFoo: (int){ |(*(int){ 20 }, (int){ int }) }
  1239                minBar?: (null){ null }
  1240                maxBar?: (null){ null }
  1241                hoge?: ((null|bool)){ |((null){ null }, (bool){ bool }) }
  1242                fuga?: (null){ null }
  1243              }, (#struct){
  1244                minFoo: (int){ |(*(int){ 10 }, (int){ int }) }
  1245                maxFoo: (int){ |(*(int){ 20 }, (int){ int }) }
  1246                minBar?: (null){ null }
  1247                maxBar?: (null){ null }
  1248                hoge?: (null){ null }
  1249                fuga?: ((null|bool)){ |((null){ null }, (bool){ bool }) }
  1250              }) }
  1251          }
  1252        }
  1253        Bar: (#struct){
  1254          spec: (#struct){
  1255            bar: (#struct){
  1256              min: (int){ |(*(int){ 30 }, (int){ int }) }
  1257              max: (int){ |(*(int){ 40 }, (int){ int }) }
  1258            }
  1259          }
  1260          resource: (#struct){
  1261            _X: (#struct){
  1262              spec: ~(issue2209.full.Bar.spec)
  1263            }
  1264            spec: (#struct){ |(*(#struct){
  1265                minFoo?: (null){ null }
  1266                maxFoo?: (null){ null }
  1267                minBar: (int){ |(*(int){ 30 }, (int){ int }) }
  1268                maxBar: (int){ |(*(int){ 40 }, (int){ int }) }
  1269                hoge?: ((null|bool)){ |((null){ null }, (bool){ bool }) }
  1270                fuga?: (null){ null }
  1271              }, (#struct){
  1272                minFoo?: (null){ null }
  1273                maxFoo?: (null){ null }
  1274                minBar: (int){ |(*(int){ 30 }, (int){ int }) }
  1275                maxBar: (int){ |(*(int){ 40 }, (int){ int }) }
  1276                hoge?: (null){ null }
  1277                fuga?: ((null|bool)){ |((null){ null }, (bool){ bool }) }
  1278              }) }
  1279          }
  1280        }
  1281        #Abstract: (#struct){
  1282          spec: (#struct){ |(*(#struct){
  1283              foo: (#struct){
  1284                min: (int){ |(*(int){ 10 }, (int){ int }) }
  1285                max: (int){ |(*(int){ 20 }, (int){ int }) }
  1286              }
  1287            }, (#struct){
  1288              bar: (#struct){
  1289                min: (int){ |(*(int){ 30 }, (int){ int }) }
  1290                max: (int){ |(*(int){ 40 }, (int){ int }) }
  1291              }
  1292            }) }
  1293          resource: (#struct){
  1294            _X: (#struct){
  1295              spec: (#struct){ |(*(#struct){
  1296                  foo: (#struct){
  1297                    min: (int){ |(*(int){ 10 }, (int){ int }) }
  1298                    max: (int){ |(*(int){ 20 }, (int){ int }) }
  1299                  }
  1300                }, (#struct){
  1301                  bar: (#struct){
  1302                    min: (int){ |(*(int){ 30 }, (int){ int }) }
  1303                    max: (int){ |(*(int){ 40 }, (int){ int }) }
  1304                  }
  1305                }) }
  1306            }
  1307            spec: (#struct){ |(*(#struct){
  1308                minFoo: (int){ |(*(int){ 10 }, (int){ int }) }
  1309                maxFoo: (int){ |(*(int){ 20 }, (int){ int }) }
  1310                minBar?: (null){ null }
  1311                maxBar?: (null){ null }
  1312                hoge?: ((null|bool)){ |((null){ null }, (bool){ bool }) }
  1313                fuga?: (null){ null }
  1314              }, (#struct){
  1315                minFoo: (int){ |(*(int){ 10 }, (int){ int }) }
  1316                maxFoo: (int){ |(*(int){ 20 }, (int){ int }) }
  1317                minBar?: (null){ null }
  1318                maxBar?: (null){ null }
  1319                hoge?: (null){ null }
  1320                fuga?: ((null|bool)){ |((null){ null }, (bool){ bool }) }
  1321              }) }
  1322          }
  1323        }
  1324        _#Spec: (#struct){ |(*(#struct){
  1325            foo: (#struct){
  1326              min: (int){ |(*(int){ 10 }, (int){ int }) }
  1327              max: (int){ |(*(int){ 20 }, (int){ int }) }
  1328            }
  1329          }, (#struct){
  1330            bar: (#struct){
  1331              min: (int){ |(*(int){ 30 }, (int){ int }) }
  1332              max: (int){ |(*(int){ 40 }, (int){ int }) }
  1333            }
  1334          }) }
  1335        _#SpecFoo: (#struct){
  1336          foo: (#struct){
  1337            min: (int){ |(*(int){ 10 }, (int){ int }) }
  1338            max: (int){ |(*(int){ 20 }, (int){ int }) }
  1339          }
  1340        }
  1341        _#SpecBar: (#struct){
  1342          bar: (#struct){
  1343            min: (int){ |(*(int){ 30 }, (int){ int }) }
  1344            max: (int){ |(*(int){ 40 }, (int){ int }) }
  1345          }
  1346        }
  1347        _Thing: (#struct){
  1348          _X: (_){ _ }
  1349          spec: (#struct){ |(*(#struct){
  1350              minFoo: (int){ |(*(int){ 10 }, (int){ int }) }
  1351              maxFoo: (int){ |(*(int){ 20 }, (int){ int }) }
  1352              minBar?: (null){ null }
  1353              maxBar?: (null){ null }
  1354              hoge?: ((null|bool)){ |((null){ null }, (bool){ bool }) }
  1355              fuga?: (null){ null }
  1356            }, *(#struct){
  1357              minFoo?: (null){ null }
  1358              maxFoo?: (null){ null }
  1359              minBar: (int){ |(*(int){ 30 }, (int){ int }) }
  1360              maxBar: (int){ |(*(int){ 40 }, (int){ int }) }
  1361              hoge?: ((null|bool)){ |((null){ null }, (bool){ bool }) }
  1362              fuga?: (null){ null }
  1363            }, (#struct){
  1364              minFoo: (int){ |(*(int){ 10 }, (int){ int }) }
  1365              maxFoo: (int){ |(*(int){ 20 }, (int){ int }) }
  1366              minBar?: (null){ null }
  1367              maxBar?: (null){ null }
  1368              hoge?: (null){ null }
  1369              fuga?: ((null|bool)){ |((null){ null }, (bool){ bool }) }
  1370            }, (#struct){
  1371              minFoo?: (null){ null }
  1372              maxFoo?: (null){ null }
  1373              minBar: (int){ |(*(int){ 30 }, (int){ int }) }
  1374              maxBar: (int){ |(*(int){ 40 }, (int){ int }) }
  1375              hoge?: (null){ null }
  1376              fuga?: ((null|bool)){ |((null){ null }, (bool){ bool }) }
  1377            }) }
  1378        }
  1379        #Constrained: (#struct){
  1380          spec: (#struct){ |(*(#struct){
  1381              minFoo: (int){ |(*(int){ 10 }, (int){ int }) }
  1382              maxFoo: (int){ |(*(int){ 20 }, (int){ int }) }
  1383              minBar?: (null){ null }
  1384              maxBar?: (null){ null }
  1385              hoge?: ((null|bool)){ |((null){ null }, (bool){ bool }) }
  1386              fuga?: (null){ null }
  1387            }, *(#struct){
  1388              minFoo?: (null){ null }
  1389              maxFoo?: (null){ null }
  1390              minBar: (int){ |(*(int){ 30 }, (int){ int }) }
  1391              maxBar: (int){ |(*(int){ 40 }, (int){ int }) }
  1392              hoge?: ((null|bool)){ |((null){ null }, (bool){ bool }) }
  1393              fuga?: (null){ null }
  1394            }, (#struct){
  1395              minFoo: (int){ |(*(int){ 10 }, (int){ int }) }
  1396              maxFoo: (int){ |(*(int){ 20 }, (int){ int }) }
  1397              minBar?: (null){ null }
  1398              maxBar?: (null){ null }
  1399              hoge?: (null){ null }
  1400              fuga?: ((null|bool)){ |((null){ null }, (bool){ bool }) }
  1401            }, (#struct){
  1402              minFoo?: (null){ null }
  1403              maxFoo?: (null){ null }
  1404              minBar: (int){ |(*(int){ 30 }, (int){ int }) }
  1405              maxBar: (int){ |(*(int){ 40 }, (int){ int }) }
  1406              hoge?: (null){ null }
  1407              fuga?: ((null|bool)){ |((null){ null }, (bool){ bool }) }
  1408            }) }
  1409        }
  1410        #Base: (#struct){
  1411          spec: (#struct){
  1412            minFoo?: ((null|int)){ |((null){ null }, (int){ int }) }
  1413            maxFoo?: ((null|int)){ |((null){ null }, (int){ int }) }
  1414            minBar?: ((null|int)){ |((null){ null }, (int){ int }) }
  1415            maxBar?: ((null|int)){ |((null){ null }, (int){ int }) }
  1416            hoge?: ((null|bool)){ |((null){ null }, (bool){ bool }) }
  1417            fuga?: ((null|bool)){ |((null){ null }, (bool){ bool }) }
  1418          }
  1419        }
  1420      }
  1421    }
  1422    issue2246: (struct){
  1423      simplified: (struct){
  1424        #FormFoo: (#struct){
  1425          fooID: (string){ string }
  1426        }
  1427        #FormBar: (#struct){
  1428          barID: (string){ string }
  1429        }
  1430        #Form: (#struct){ |((#struct){
  1431            fooID: (string){ string }
  1432          }, (#struct){
  1433            barID: (string){ string }
  1434          }) }
  1435        data: (struct){
  1436          fooID: (string){ "123" }
  1437        }
  1438        out1: (#struct){
  1439          fooID: (string){ "123" }
  1440        }
  1441        out2: (#struct){
  1442          fooID: (string){ "123" }
  1443        }
  1444      }
  1445      full: (struct){
  1446        data: (struct){
  1447          forms: (#list){
  1448            0: (struct){
  1449              fooID: (string){ "00-0000001" }
  1450            }
  1451          }
  1452        }
  1453        form1040: (#list){
  1454          0: (int){ 3 }
  1455        }
  1456        #K1: (#struct){
  1457          #_base: (#struct){
  1458            common: (int){ 3 }
  1459          }
  1460          #FormFoo: (#struct){
  1461            fooID: (string){ string }
  1462            common: (int){ 3 }
  1463          }
  1464          #FormBar: (#struct){
  1465            barID: (string){ string }
  1466            common: (int){ 3 }
  1467          }
  1468          #Form: (#struct){ |((#struct){
  1469              fooID: (string){ string }
  1470              common: (int){ 3 }
  1471            }, (#struct){
  1472              barID: (string){ string }
  1473              common: (int){ 3 }
  1474            }) }
  1475        }
  1476        #Input: (#struct){
  1477          forms: (list){
  1478          }
  1479        }
  1480        #summarizeReturn: (#struct){
  1481          in: ~(issue2246.full.#Input)
  1482          out: (#list){
  1483          }
  1484        }
  1485        #compute: (#struct){
  1486          in: ~(issue2246.full.#Input)
  1487          out: (#list){
  1488          }
  1489        }
  1490      }
  1491    }
  1492    issue2263: (struct){
  1493      simplified: (struct){
  1494        metrics: (#struct){
  1495          id: (string){ "foo" }
  1496          avg: (int){ 60 }
  1497        }
  1498        #Metric: (#struct){ |((#struct){
  1499            id: (string){ string }
  1500            avg: (number){ number }
  1501          }, (#struct){
  1502            id: (string){ string }
  1503          }, (#struct){
  1504            avg: (number){ number }
  1505          }, (#struct){
  1506          }) }
  1507        #IDSource: (#struct){
  1508          id: (string){ string }
  1509        }
  1510        #TargetAverage: (#struct){
  1511          avg: (number){ number }
  1512        }
  1513      }
  1514      full: (struct){
  1515        metrics: (#list){
  1516          0: (#struct){
  1517            id: (string){ "foo" }
  1518            avg: (int){ 60 }
  1519          }
  1520          1: (#struct){
  1521            id: (string){ "bar" }
  1522            value: (int){ 80 }
  1523          }
  1524          2: (#struct){
  1525            uri: (string){ "baz" }
  1526            avg: (int){ 70 }
  1527          }
  1528          3: (#struct){
  1529            uri: (string){ "qux" }
  1530            value: (int){ 90 }
  1531          }
  1532        }
  1533        #Metric: (#struct){ |((#struct){
  1534            id: (string){ string }
  1535            avg: (number){ number }
  1536          }, (#struct){
  1537            id: (string){ string }
  1538            value: (number){ number }
  1539          }, (#struct){
  1540            uri: (string){ string }
  1541            avg: (number){ number }
  1542          }, (#struct){
  1543            uri: (string){ string }
  1544            value: (number){ number }
  1545          }) }
  1546        #Source: (#struct){ |((#struct){
  1547            id: (string){ string }
  1548          }, (#struct){
  1549            uri: (string){ string }
  1550          }) }
  1551        #Target: (#struct){ |((#struct){
  1552            avg: (number){ number }
  1553          }, (#struct){
  1554            value: (number){ number }
  1555          }) }
  1556        #IDSource: (#struct){
  1557          id: (string){ string }
  1558        }
  1559        #URISource: (#struct){
  1560          uri: (string){ string }
  1561        }
  1562        #TargetAverage: (#struct){
  1563          avg: (number){ number }
  1564        }
  1565        #TargetValue: (#struct){
  1566          value: (number){ number }
  1567        }
  1568      }
  1569    }
  1570    issue3149: (struct){
  1571      #valid: (#struct){
  1572        name!: (string){ |((string){ &(=~"^Foo", =~"Foo$") }, (string){ "an exception" }) }
  1573      }
  1574      list: (#list){
  1575        0: (#struct){
  1576          name: (string){ "FooBarFoo" }
  1577        }
  1578        1: (#struct){
  1579          name: (string){ "FooBazFoo" }
  1580        }
  1581        2: (#struct){
  1582          name: (string){ "FooQuuxFoo" }
  1583        }
  1584        3: (#struct){
  1585          name: (string){ "an exception" }
  1586        }
  1587      }
  1588    }
  1589    issue3528: (struct){
  1590      original: (struct){
  1591        workflows: (#list){
  1592          0: (#struct){
  1593            container: (#struct){
  1594            }
  1595            #container: ((string|struct)){ |((string){ string }, (#struct){
  1596                volumes?: (list){
  1597                }
  1598              }) }
  1599          }
  1600        }
  1601        test: (#struct){
  1602          container: (#struct){
  1603          }
  1604          #container: ((string|struct)){ |((string){ string }, (#struct){
  1605              volumes?: (list){
  1606              }
  1607            }) }
  1608        }
  1609        #Workflow: (#struct){
  1610          container: (#struct){
  1611          }
  1612          #container: ((string|struct)){ |((string){ string }, (#struct){
  1613              volumes?: (list){
  1614              }
  1615            }) }
  1616        }
  1617      }
  1618      reduced: (struct){
  1619        a: (#struct){
  1620          A: (#struct){
  1621          }
  1622          #a: ((int|struct)){ |((int){ 2 }, (#struct){
  1623              v: (int){ 1 }
  1624            }) }
  1625        }
  1626        #A: (#struct){
  1627          A: (#struct){
  1628          }
  1629          #a: ((int|struct)){ |((int){ 2 }, (#struct){
  1630              v: (int){ 1 }
  1631            }) }
  1632        }
  1633      }
  1634      counter: (struct){
  1635      }
  1636      nested: (struct){
  1637        t1: ((int|struct)){ |((struct){
  1638            v: (int){ 1 }
  1639          }, (int){ 2 }, (int){ 3 }) }
  1640        t2: ((int|struct)){ |((struct){
  1641            v: (int){ 1 }
  1642          }, (int){ 2 }) }
  1643      }
  1644    }
  1645    issue3784: (struct){
  1646      reduced: (struct){
  1647        #Schema: (#struct){
  1648          a: (#struct){ |((#struct){
  1649              kind: (string){ "A" }
  1650              b: (#struct){
  1651                c?: (string){ string }
  1652              }
  1653            }, (#struct){
  1654              kind: (string){ "B" }
  1655            }) }
  1656        }
  1657        out: (#struct){
  1658          a: (#struct){
  1659            kind: (string){ "A" }
  1660            b: (#struct){
  1661              c: (string){ "x" }
  1662            }
  1663          }
  1664        }
  1665      }
  1666      full: (struct){
  1667        #Schema: (#struct){
  1668          pages?: (#struct){ |((#struct){
  1669              build_type!: (string){ "legacy" }
  1670              source!: (#struct){
  1671                branch!: (string){ string }
  1672                path?: (string){ string }
  1673              }
  1674              cname?: (string){ string }
  1675            }, (#struct){
  1676              build_type!: (string){ "workflow" }
  1677              source?: (_|_){
  1678                // [eval] issue3784.full.#Schema.pages.source: field not allowed:
  1679                //     ./issue3784.cue:20:4
  1680                branch?: (string){ string }
  1681                path?: (string){ string }
  1682              }
  1683              cname?: (string){ string }
  1684            }) }
  1685        }
  1686        out: (#struct){
  1687          pages: (#struct){
  1688            cname: (string){ "foo.com" }
  1689            build_type: (string){ "legacy" }
  1690            source: (#struct){
  1691              branch: (string){ "main" }
  1692              path: (string){ "/" }
  1693            }
  1694          }
  1695        }
  1696      }
  1697      variant1: (struct){
  1698        #Schema: (#struct){
  1699          pages: (#struct){
  1700            build_type!: (string){ "legacy" }
  1701            source: (#struct){
  1702              branch!: (string){ string }
  1703              path?: (string){ string }
  1704            }
  1705            cname?: (string){ string }
  1706          }
  1707        }
  1708      }
  1709      variant2: (struct){
  1710        #Schema: (#struct){ |((#struct){
  1711            build_type!: (string){ "legacy" }
  1712            source!: (#struct){
  1713              branch!: (_){ _ }
  1714            }
  1715          }, (#struct){
  1716            build_type!: (string){ "workflow" }
  1717            cname?: (_){ _ }
  1718          }) }
  1719        a: (#struct){
  1720          build_type!: (string){ "legacy" }
  1721          source: (#struct){
  1722            branch!: (string){ string }
  1723            path?: (_|_){
  1724              // [eval] issue3784.variant2.a.source.path: field not allowed:
  1725              //     ./issue3784.cue:83:4
  1726            }
  1727          }
  1728          cname?: (_|_){
  1729            // [eval] issue3784.variant2.a.cname: field not allowed:
  1730            //     ./issue3784.cue:85:3
  1731          }
  1732        }
  1733      }
  1734    }
  1735    issue770: (struct){
  1736      #A: (#struct){
  1737        v: (string){ |((string){ "a" }, (string){ "b" }, (string){ "c" }) }
  1738      }
  1739      h: (struct){
  1740        a: (#struct){
  1741          v: (string){ |(*(string){ "a" }, (string){ "b" }, (string){ "c" }) }
  1742        }
  1743        b: (#struct){
  1744          v: (string){ |(*(string){ "a" }, (string){ "b" }, (string){ "c" }) }
  1745        }
  1746        boo: (#struct){
  1747          v: (string){ |(*(string){ "a" }, (string){ "b" }, (string){ "c" }) }
  1748        }
  1749        c: (#struct){
  1750          v: (string){ |(*(string){ "a" }, (string){ "b" }, (string){ "c" }) }
  1751        }
  1752        coo: (#struct){
  1753          v: (string){ |(*(string){ "a" }, (string){ "b" }, (string){ "c" }) }
  1754        }
  1755      }
  1756    }
  1757  }
  1758  -- diff/-out/evalalpha<==>+out/eval --
  1759  diff old new
  1760  --- old
  1761  +++ new
  1762  @@ -1,58 +1,4 @@
  1763  -Errors:
  1764  -issue1417.ids.2: 2 errors in empty disjunction:
  1765  -issue2209.full.Bar.resource.spec: 6 errors in empty disjunction:
  1766  -issue2209.full.Bar.resource.spec.minBar: 2 errors in empty disjunction:
  1767  -issue2209.full.Bar.resource.spec.minBar: conflicting values null and int (mismatched types null and int):
  1768  -    ./issue2209full.cue:43:7
  1769  -    ./issue2209full.cue:48:13
  1770  -    ./issue2209full.cue:67:10
  1771  -    ./issue2209full.cue:83:16
  1772  -    ./issue2209full.cue:87:13
  1773  -    ./issue2209full.cue:107:20
  1774  -issue2209.full.Bar.resource.spec.minFoo: 2 errors in empty disjunction:
  1775  -issue2209.full.Bar.resource.spec.minFoo: conflicting values null and 10 (mismatched types null and int):
  1776  -    ./issue2209full.cue:43:7
  1777  -    ./issue2209full.cue:48:13
  1778  -    ./issue2209full.cue:55:16
  1779  -    ./issue2209full.cue:71:4
  1780  -    ./issue2209full.cue:72:13
  1781  -    ./issue2209full.cue:92:13
  1782  -issue2209.full.Bar.resource.spec.minFoo: conflicting values null and int (mismatched types null and int):
  1783  -    ./issue2209full.cue:43:7
  1784  -    ./issue2209full.cue:48:13
  1785  -    ./issue2209full.cue:67:10
  1786  -    ./issue2209full.cue:83:16
  1787  -    ./issue2209full.cue:92:13
  1788  -    ./issue2209full.cue:105:20
  1789  -issue3149.list.3.name: 2 errors in empty disjunction:
  1790  -issue1417.ids.1: invalid value "ab" (out of bound !~"^a"):
  1791  -    ./issue1417.cue:2:7
  1792  -    ./issue1417.cue:4:11
  1793  -    ./issue1417.cue:4:26
  1794  -issue1417.ids.2: invalid value "aB" (out of bound !~"^a"):
  1795  -    ./issue1417.cue:2:7
  1796  -    ./issue1417.cue:4:11
  1797  -    ./issue1417.cue:4:32
  1798  -issue1417.ids.2: invalid value "aB" (out of bound !~"[A-Z]"):
  1799  -    ./issue1417.cue:3:16
  1800  -    ./issue1417.cue:4:11
  1801  -    ./issue1417.cue:4:32
  1802  -issue2209.simplified.t3.BAZ: undefined field: y:
  1803  -    ./issue2209full.cue:35:9
  1804  -issue2209.full.Bar.resource.spec.minBar: undefined field: min:
  1805  -    ./issue2209full.cue:77:25
  1806  -issue3149.list.3.name: invalid value "an exception" (out of bound =~"^Foo"):
  1807  -    ./issue3149.cue:3:13
  1808  -    ./issue3149.cue:3:10
  1809  -    ./issue3149.cue:10:10
  1810  -issue3149.list.3.name: invalid value "an exception" (out of bound =~"Foo$"):
  1811  -    ./issue3149.cue:3:46
  1812  -    ./issue3149.cue:3:10
  1813  -    ./issue3149.cue:10:10
  1814  -
  1815  -Result:
  1816  -(_|_){
  1817  -  // [eval]
  1818  +(struct){
  1819     disambiguateClosed: (struct){
  1820       b: (#struct){ |((#struct){
  1821           x: (bool){ true }
  1822  @@ -181,7 +127,7 @@
  1823               x: ((null|struct)){ |((struct){
  1824                   a: (struct){
  1825                     b: (_|_){
  1826  -                    // [incomplete] nestedNonMonotonic.incomplete.b.n2.p1.x.a.b: invalid value {c:1 & 1 & 1,d:1 & 1 & 1} (does not satisfy struct.MinFields(3)): len(fields) < MinFields(3) (2 < 3):
  1827  +                    // [incomplete] nestedNonMonotonic.incomplete.b.n2.p1.x.a.b: invalid value {c:1,d:1} (does not satisfy struct.MinFields(3)): len(fields) < MinFields(3) (2 < 3):
  1828                       //     ./in.cue:138:15
  1829                       //     ./in.cue:124:15
  1830                       //     ./in.cue:125:12
  1831  @@ -349,10 +295,6 @@
  1832         #type: (#struct){
  1833           fieldName: ((string|struct)){ |((string){ string }, (#struct){
  1834               foo: (string){ string }
  1835  -          }, (#struct){
  1836  -            bar: ((string|struct)){ |((string){ string }, (#struct){
  1837  -                foo: (string){ string }
  1838  -              }) }
  1839             }) }
  1840         }
  1841         #subtype: ((string|struct)){ |((string){ string }, (#struct){
  1842  @@ -432,12 +374,8 @@
  1843       #T: (list){
  1844         0: (string){ "d" }
  1845       }
  1846  -    x: (list){
  1847  -      0: (string){ "d" }
  1848  -    }
  1849  -    #X: (list){
  1850  -      0: (string){ "d" }
  1851  -    }
  1852  +    x: ~(noHang.#T)
  1853  +    #X: ~(noHang.#T)
  1854     }
  1855     issue1940: (struct){
  1856       #T: (#list){
  1857  @@ -446,53 +384,24 @@
  1858         }
  1859       }
  1860       #A: (#struct){
  1861  -      type: (#list){
  1862  -        0: (string){ "d" }
  1863  -        1: (list){
  1864  -        }
  1865  -      }
  1866  +      type: ~(issue1940.#T)
  1867       }
  1868       #B: (#struct){
  1869       }
  1870       #C: (#struct){
  1871  -      x: (#struct){
  1872  -        type: (#list){
  1873  -          0: (string){ "d" }
  1874  -          1: (list){
  1875  -          }
  1876  -        }
  1877  -      }
  1878  -    }
  1879  -  }
  1880  -  issue1417: (_|_){
  1881  -    // [eval]
  1882  +      x: ~(issue1940.#A)
  1883  +    }
  1884  +  }
  1885  +  issue1417: (struct){
  1886       #ID: (string){ |((string){ &(!~"^a", =~"^a") }, (string){ &(!~"^a", !~"[A-Z]") }, (string){ &(=~"^ab$", =~"^a") }, (string){ &(=~"^ab$", !~"[A-Z]") }, (string){ &(=~"^aB$", =~"^a") }, (string){ &(=~"^aB$", !~"[A-Z]") }) }
  1887  -    ids: (_|_){
  1888  -      // [eval]
  1889  +    ids: (#list){
  1890         0: (string){ "xyz" }
  1891  -      1: (_|_){
  1892  -        // [eval] issue1417.ids.1: invalid value "ab" (out of bound !~"^a"):
  1893  -        //     ./issue1417.cue:2:7
  1894  -        //     ./issue1417.cue:4:11
  1895  -        //     ./issue1417.cue:4:26
  1896  -      }
  1897  -      2: (_|_){
  1898  -        // [eval] issue1417.ids.2: 2 errors in empty disjunction:
  1899  -        // issue1417.ids.2: invalid value "aB" (out of bound !~"^a"):
  1900  -        //     ./issue1417.cue:2:7
  1901  -        //     ./issue1417.cue:4:11
  1902  -        //     ./issue1417.cue:4:32
  1903  -        // issue1417.ids.2: invalid value "aB" (out of bound !~"[A-Z]"):
  1904  -        //     ./issue1417.cue:3:16
  1905  -        //     ./issue1417.cue:4:11
  1906  -        //     ./issue1417.cue:4:32
  1907  -      }
  1908  -    }
  1909  -  }
  1910  -  issue2209: (_|_){
  1911  -    // [eval]
  1912  -    simplified: (_|_){
  1913  -      // [eval]
  1914  +      1: (string){ "ab" }
  1915  +      2: (string){ "aB" }
  1916  +    }
  1917  +  }
  1918  +  issue2209: (struct){
  1919  +    simplified: (struct){
  1920         t1: (struct){
  1921           #SpecFoo: (#struct){
  1922             foo: (#struct){
  1923  @@ -510,93 +419,159 @@
  1924             }
  1925           }
  1926           out: (struct){ |((struct){
  1927  -            X: (#struct){
  1928  -              bar: (#struct){
  1929  -                min: (int){ 1 }
  1930  -              }
  1931  -            }
  1932  -            nullFoo: (null){ null }
  1933  -            minFoo: (int){ int }
  1934  -          }, (struct){
  1935  -            minBar: (int){ int }
  1936  -            X: (#struct){
  1937  -              bar: (#struct){
  1938  -                min: (int){ 1 }
  1939  -              }
  1940  -            }
  1941  -            nullFoo: (null){ null }
  1942  -          }, (struct){
  1943  -            X: (#struct){
  1944  -              bar: (#struct){
  1945  -                min: (int){ 1 }
  1946  -              }
  1947  -            }
  1948  -            nullBar: (null){ null }
  1949  -            minFoo: (int){ int }
  1950  -          }, (struct){
  1951  -            minBar: (int){ int }
  1952  -            X: (#struct){
  1953  -              bar: (#struct){
  1954  -                min: (int){ 1 }
  1955  -              }
  1956  -            }
  1957  -            nullBar: (null){ null }
  1958  -          }) }
  1959  -      }
  1960  -      t2: (_|_){
  1961  -        // [incomplete] issue2209.simplified.t2.BAZ: undefined field: x:
  1962  -        //     ./issue2209full.cue:24:17
  1963  -        #SpecFoo: (#struct){
  1964  -          foo: (#struct){
  1965  -          }
  1966  -        }
  1967  -        #SpecBar: (#struct){
  1968  -          bar: (#struct){
  1969  -            x: (int){ 1 }
  1970  -          }
  1971  -        }
  1972  -        spec: (#struct){ |(*(#struct){
  1973  -            bar: (struct){
  1974  -            }
  1975  -            foo: (#struct){
  1976  -            }
  1977  -          }, (#struct){
  1978  -            bar: (#struct){
  1979  -              x: (int){ 1 }
  1980  -            }
  1981  -          }) }
  1982  -        BAZ: (_|_){
  1983  -          // [incomplete] issue2209.simplified.t2.BAZ: undefined field: x:
  1984  -          //     ./issue2209full.cue:24:17
  1985  -        }
  1986  -        b2: (int){ int }
  1987  -      }
  1988  -      t3: (_|_){
  1989  -        // [eval] issue2209.simplified.t3.BAZ: undefined field: y:
  1990  -        //     ./issue2209full.cue:35:9
  1991  -        #A: (#struct){
  1992  -          v: (int){ 1 }
  1993  -        }
  1994  -        BAZ: (_|_){
  1995  -          // [eval] issue2209.simplified.t3.BAZ: undefined field: y:
  1996  -          //     ./issue2209full.cue:35:9
  1997  -        }
  1998  -        S: (#struct){ |(*(#struct){
  1999  -            x: (int){ 1 }
  2000  -            v: (int){ 1 }
  2001  -          }, (#struct){
  2002  -            x: (int){ 1 }
  2003  -            y: (int){ 1 }
  2004  -          }) }
  2005  -        #B: (#struct){
  2006  -          x: (int){ 1 }
  2007  -          y: (int){ 1 }
  2008  -        }
  2009  -        b2: (int){ int }
  2010  -      }
  2011  -    }
  2012  -    full: (_|_){
  2013  -      // [eval]
  2014  +            minBar: (int){ 1 }
  2015  +            X: ~(issue2209.simplified.t1.spec)
  2016  +            nullFoo: (null){ null }
  2017  +            minFoo: (int){ int }
  2018  +          }, (struct){
  2019  +            minBar: (int){ 1 }
  2020  +            X: ~(issue2209.simplified.t1.spec)
  2021  +            nullFoo: (null){ null }
  2022  +          }, (struct){
  2023  +            minBar: (int){ 1 }
  2024  +            X: ~(issue2209.simplified.t1.spec)
  2025  +            nullBar: (null){ null }
  2026  +            minFoo: (int){ int }
  2027  +          }, (struct){
  2028  +            minBar: (int){ 1 }
  2029  +            X: ~(issue2209.simplified.t1.spec)
  2030  +            nullBar: (null){ null }
  2031  +          }) }
  2032  +      }
  2033  +      t2: (struct){ |((struct){
  2034  +          #SpecFoo: (#struct){
  2035  +            foo: (#struct){
  2036  +            }
  2037  +          }
  2038  +          #SpecBar: (#struct){
  2039  +            bar: (#struct){
  2040  +              x: (int){ 1 }
  2041  +            }
  2042  +          }
  2043  +          spec: (#struct){
  2044  +            bar: (#struct){
  2045  +              x: (int){ 1 }
  2046  +            }
  2047  +          }
  2048  +          BAZ: (int){ 1 }
  2049  +          f1: (int){ int }
  2050  +          f2: (int){ int }
  2051  +        }, (struct){
  2052  +          #SpecFoo: (#struct){
  2053  +            foo: (#struct){
  2054  +            }
  2055  +          }
  2056  +          #SpecBar: (#struct){
  2057  +            bar: (#struct){
  2058  +              x: (int){ 1 }
  2059  +            }
  2060  +          }
  2061  +          spec: (#struct){
  2062  +            bar: (#struct){
  2063  +              x: (int){ 1 }
  2064  +            }
  2065  +          }
  2066  +          BAZ: (int){ 1 }
  2067  +          f1: (int){ int }
  2068  +          b2: (int){ int }
  2069  +        }, (struct){
  2070  +          #SpecFoo: (#struct){
  2071  +            foo: (#struct){
  2072  +            }
  2073  +          }
  2074  +          #SpecBar: (#struct){
  2075  +            bar: (#struct){
  2076  +              x: (int){ 1 }
  2077  +            }
  2078  +          }
  2079  +          spec: (#struct){
  2080  +            bar: (#struct){
  2081  +              x: (int){ 1 }
  2082  +            }
  2083  +          }
  2084  +          BAZ: (int){ 1 }
  2085  +          b2: (int){ int }
  2086  +          f2: (int){ int }
  2087  +        }, (struct){
  2088  +          #SpecFoo: (#struct){
  2089  +            foo: (#struct){
  2090  +            }
  2091  +          }
  2092  +          #SpecBar: (#struct){
  2093  +            bar: (#struct){
  2094  +              x: (int){ 1 }
  2095  +            }
  2096  +          }
  2097  +          spec: (#struct){
  2098  +            bar: (#struct){
  2099  +              x: (int){ 1 }
  2100  +            }
  2101  +          }
  2102  +          BAZ: (int){ 1 }
  2103  +          b2: (int){ int }
  2104  +        }) }
  2105  +      t3: (struct){ |((struct){
  2106  +          #A: (#struct){
  2107  +            v: (int){ 1 }
  2108  +          }
  2109  +          BAZ: (int){ 1 }
  2110  +          S: (#struct){
  2111  +            x: (int){ 1 }
  2112  +            y: (int){ 1 }
  2113  +          }
  2114  +          #B: (#struct){
  2115  +            x: (int){ 1 }
  2116  +            y: (int){ 1 }
  2117  +          }
  2118  +          f1: (int){ int }
  2119  +          f2: (int){ int }
  2120  +        }, (struct){
  2121  +          #A: (#struct){
  2122  +            v: (int){ 1 }
  2123  +          }
  2124  +          BAZ: (int){ 1 }
  2125  +          S: (#struct){
  2126  +            x: (int){ 1 }
  2127  +            y: (int){ 1 }
  2128  +          }
  2129  +          #B: (#struct){
  2130  +            x: (int){ 1 }
  2131  +            y: (int){ 1 }
  2132  +          }
  2133  +          f1: (int){ int }
  2134  +          b2: (int){ int }
  2135  +        }, (struct){
  2136  +          #A: (#struct){
  2137  +            v: (int){ 1 }
  2138  +          }
  2139  +          BAZ: (int){ 1 }
  2140  +          S: (#struct){
  2141  +            x: (int){ 1 }
  2142  +            y: (int){ 1 }
  2143  +          }
  2144  +          #B: (#struct){
  2145  +            x: (int){ 1 }
  2146  +            y: (int){ 1 }
  2147  +          }
  2148  +          b2: (int){ int }
  2149  +          f2: (int){ int }
  2150  +        }, (struct){
  2151  +          #A: (#struct){
  2152  +            v: (int){ 1 }
  2153  +          }
  2154  +          BAZ: (int){ 1 }
  2155  +          S: (#struct){
  2156  +            x: (int){ 1 }
  2157  +            y: (int){ 1 }
  2158  +          }
  2159  +          #B: (#struct){
  2160  +            x: (int){ 1 }
  2161  +            y: (int){ 1 }
  2162  +          }
  2163  +          b2: (int){ int }
  2164  +        }) }
  2165  +    }
  2166  +    full: (struct){
  2167         Foo: (#struct){
  2168           spec: (#struct){
  2169             foo: (#struct){
  2170  @@ -605,135 +580,52 @@
  2171             }
  2172           }
  2173           resource: (#struct){
  2174  -          spec: (#struct){ |(*(#struct){
  2175  -              minFoo: (int){ |(*(int){ 10 }, (int){ int }) }
  2176  -              maxFoo: (int){ |(*(int){ 20 }, (int){ int }) }
  2177  -              minBar?: (null){ null }
  2178  -              maxBar?: (null){ null }
  2179  -              hoge?: ((null|bool)){ |((null){ null }, (bool){ bool }) }
  2180  -              fuga?: (null){ null }
  2181  -            }, (#struct){
  2182  -              minFoo: (int){ |(*(int){ 10 }, (int){ int }) }
  2183  -              maxFoo: (int){ |(*(int){ 20 }, (int){ int }) }
  2184  -              minBar?: (null){ null }
  2185  -              maxBar?: (null){ null }
  2186  -              hoge?: (null){ null }
  2187  -              fuga?: ((null|bool)){ |((null){ null }, (bool){ bool }) }
  2188  -            }) }
  2189  -          _X: (#struct){
  2190  -            spec: (#struct){ |(*(#struct){
  2191  -                foo: (#struct){
  2192  -                  min: (int){ |(*(int){ 10 }, (int){ int }) }
  2193  -                  max: (int){ |(*(int){ 20 }, (int){ int }) }
  2194  -                }
  2195  -              }, (#struct){
  2196  -                foo: (#struct){
  2197  -                }
  2198  -                bar: (#struct){
  2199  -                  min: (int){ |(*(int){ 30 }, (int){ int }) }
  2200  -                  max: (int){ |(*(int){ 40 }, (int){ int }) }
  2201  -                }
  2202  -              }) }
  2203  -          }
  2204  -        }
  2205  -      }
  2206  -      Bar: (_|_){
  2207  -        // [eval]
  2208  -        spec: (#struct){
  2209  -          bar: (#struct){
  2210  -            min: (int){ |(*(int){ 30 }, (int){ int }) }
  2211  -            max: (int){ |(*(int){ 40 }, (int){ int }) }
  2212  -          }
  2213  -        }
  2214  -        resource: (_|_){
  2215  -          // [eval]
  2216  -          spec: (_|_){
  2217  -            // [eval] issue2209.full.Bar.resource.spec: 6 errors in empty disjunction:
  2218  -            // issue2209.full.Bar.resource.spec.minBar: 2 errors in empty disjunction:
  2219  -            // issue2209.full.Bar.resource.spec.minBar: conflicting values null and int (mismatched types null and int):
  2220  -            //     ./issue2209full.cue:43:7
  2221  -            //     ./issue2209full.cue:48:13
  2222  -            //     ./issue2209full.cue:67:10
  2223  -            //     ./issue2209full.cue:83:16
  2224  -            //     ./issue2209full.cue:87:13
  2225  -            //     ./issue2209full.cue:107:20
  2226  -            // issue2209.full.Bar.resource.spec.minFoo: 2 errors in empty disjunction:
  2227  -            // issue2209.full.Bar.resource.spec.minFoo: conflicting values null and 10 (mismatched types null and int):
  2228  -            //     ./issue2209full.cue:43:7
  2229  -            //     ./issue2209full.cue:48:13
  2230  -            //     ./issue2209full.cue:55:16
  2231  -            //     ./issue2209full.cue:71:4
  2232  -            //     ./issue2209full.cue:72:13
  2233  -            //     ./issue2209full.cue:92:13
  2234  -            // issue2209.full.Bar.resource.spec.minFoo: conflicting values null and int (mismatched types null and int):
  2235  -            //     ./issue2209full.cue:43:7
  2236  -            //     ./issue2209full.cue:48:13
  2237  -            //     ./issue2209full.cue:67:10
  2238  -            //     ./issue2209full.cue:83:16
  2239  -            //     ./issue2209full.cue:92:13
  2240  -            //     ./issue2209full.cue:105:20
  2241  -            // issue2209.full.Bar.resource.spec.minBar: undefined field: min:
  2242  -            //     ./issue2209full.cue:77:25
  2243  -            minFoo: (_|_){
  2244  -              // [eval] issue2209.full.Bar.resource.spec.minFoo: 2 errors in empty disjunction:
  2245  -              // issue2209.full.Bar.resource.spec.minFoo: conflicting values null and 10 (mismatched types null and int):
  2246  -              //     ./issue2209full.cue:43:7
  2247  -              //     ./issue2209full.cue:48:13
  2248  -              //     ./issue2209full.cue:55:16
  2249  -              //     ./issue2209full.cue:71:4
  2250  -              //     ./issue2209full.cue:72:13
  2251  -              //     ./issue2209full.cue:92:13
  2252  -              // issue2209.full.Bar.resource.spec.minFoo: conflicting values null and int (mismatched types null and int):
  2253  -              //     ./issue2209full.cue:43:7
  2254  -              //     ./issue2209full.cue:48:13
  2255  -              //     ./issue2209full.cue:67:10
  2256  -              //     ./issue2209full.cue:83:16
  2257  -              //     ./issue2209full.cue:92:13
  2258  -              //     ./issue2209full.cue:105:20
  2259  -            }
  2260  -            maxFoo: (_|_){
  2261  -              // [eval] issue2209.full.Bar.resource.spec.maxFoo: 2 errors in empty disjunction:
  2262  -              // issue2209.full.Bar.resource.spec.maxFoo: conflicting values null and 20 (mismatched types null and int):
  2263  -              //     ./issue2209full.cue:43:7
  2264  -              //     ./issue2209full.cue:48:13
  2265  -              //     ./issue2209full.cue:56:16
  2266  -              //     ./issue2209full.cue:71:4
  2267  -              //     ./issue2209full.cue:73:13
  2268  -              //     ./issue2209full.cue:93:13
  2269  -              // issue2209.full.Bar.resource.spec.maxFoo: conflicting values null and int (mismatched types null and int):
  2270  -              //     ./issue2209full.cue:43:7
  2271  -              //     ./issue2209full.cue:48:13
  2272  -              //     ./issue2209full.cue:67:10
  2273  -              //     ./issue2209full.cue:83:16
  2274  -              //     ./issue2209full.cue:93:13
  2275  -              //     ./issue2209full.cue:106:20
  2276  -            }
  2277  -            minBar: (_|_){
  2278  -              // [eval] issue2209.full.Bar.resource.spec.minBar: undefined field: min:
  2279  -              //     ./issue2209full.cue:77:25
  2280  -            }
  2281  -            maxBar: (_|_){
  2282  -              // [eval] issue2209.full.Bar.resource.spec.maxBar: undefined field: max:
  2283  -              //     ./issue2209full.cue:78:25
  2284  -            }
  2285  -            hoge?: ((null|bool)){ |((null){ null }, (bool){ bool }) }
  2286  -            fuga?: ((null|bool)){ |((null){ null }, (bool){ bool }) }
  2287  -          }
  2288  -          _X: (#struct){
  2289  -            spec: (#struct){ |(*(#struct){
  2290  -                bar: (#struct){
  2291  -                }
  2292  -                foo: (#struct){
  2293  -                  min: (int){ |(*(int){ 10 }, (int){ int }) }
  2294  -                  max: (int){ |(*(int){ 20 }, (int){ int }) }
  2295  -                }
  2296  -              }, (#struct){
  2297  -                bar: (#struct){
  2298  -                  min: (int){ |(*(int){ 30 }, (int){ int }) }
  2299  -                  max: (int){ |(*(int){ 40 }, (int){ int }) }
  2300  -                }
  2301  -              }) }
  2302  -          }
  2303  +          _X: (#struct){
  2304  +            spec: ~(issue2209.full.Foo.spec)
  2305  +          }
  2306  +          spec: (#struct){ |(*(#struct){
  2307  +              minFoo: (int){ |(*(int){ 10 }, (int){ int }) }
  2308  +              maxFoo: (int){ |(*(int){ 20 }, (int){ int }) }
  2309  +              minBar?: (null){ null }
  2310  +              maxBar?: (null){ null }
  2311  +              hoge?: ((null|bool)){ |((null){ null }, (bool){ bool }) }
  2312  +              fuga?: (null){ null }
  2313  +            }, (#struct){
  2314  +              minFoo: (int){ |(*(int){ 10 }, (int){ int }) }
  2315  +              maxFoo: (int){ |(*(int){ 20 }, (int){ int }) }
  2316  +              minBar?: (null){ null }
  2317  +              maxBar?: (null){ null }
  2318  +              hoge?: (null){ null }
  2319  +              fuga?: ((null|bool)){ |((null){ null }, (bool){ bool }) }
  2320  +            }) }
  2321  +        }
  2322  +      }
  2323  +      Bar: (#struct){
  2324  +        spec: (#struct){
  2325  +          bar: (#struct){
  2326  +            min: (int){ |(*(int){ 30 }, (int){ int }) }
  2327  +            max: (int){ |(*(int){ 40 }, (int){ int }) }
  2328  +          }
  2329  +        }
  2330  +        resource: (#struct){
  2331  +          _X: (#struct){
  2332  +            spec: ~(issue2209.full.Bar.spec)
  2333  +          }
  2334  +          spec: (#struct){ |(*(#struct){
  2335  +              minFoo?: (null){ null }
  2336  +              maxFoo?: (null){ null }
  2337  +              minBar: (int){ |(*(int){ 30 }, (int){ int }) }
  2338  +              maxBar: (int){ |(*(int){ 40 }, (int){ int }) }
  2339  +              hoge?: ((null|bool)){ |((null){ null }, (bool){ bool }) }
  2340  +              fuga?: (null){ null }
  2341  +            }, (#struct){
  2342  +              minFoo?: (null){ null }
  2343  +              maxFoo?: (null){ null }
  2344  +              minBar: (int){ |(*(int){ 30 }, (int){ int }) }
  2345  +              maxBar: (int){ |(*(int){ 40 }, (int){ int }) }
  2346  +              hoge?: (null){ null }
  2347  +              fuga?: ((null|bool)){ |((null){ null }, (bool){ bool }) }
  2348  +            }) }
  2349           }
  2350         }
  2351         #Abstract: (#struct){
  2352  @@ -749,34 +641,34 @@
  2353               }
  2354             }) }
  2355           resource: (#struct){
  2356  -          spec: (#struct){ |(*(#struct){
  2357  -              minFoo: (int){ |(*(int){ 10 }, (int){ int }) }
  2358  -              maxFoo: (int){ |(*(int){ 20 }, (int){ int }) }
  2359  -              minBar?: (null){ null }
  2360  -              maxBar?: (null){ null }
  2361  -              hoge?: ((null|bool)){ |((null){ null }, (bool){ bool }) }
  2362  -              fuga?: (null){ null }
  2363  -            }, (#struct){
  2364  -              minFoo: (int){ |(*(int){ 10 }, (int){ int }) }
  2365  -              maxFoo: (int){ |(*(int){ 20 }, (int){ int }) }
  2366  -              minBar?: (null){ null }
  2367  -              maxBar?: (null){ null }
  2368  -              hoge?: (null){ null }
  2369  -              fuga?: ((null|bool)){ |((null){ null }, (bool){ bool }) }
  2370  -            }) }
  2371  -          _X: (#struct){
  2372  -            spec: (#struct){ |(*(#struct){
  2373  -                foo: (#struct){
  2374  -                  min: (int){ |(*(int){ 10 }, (int){ int }) }
  2375  -                  max: (int){ |(*(int){ 20 }, (int){ int }) }
  2376  -                }
  2377  -              }, (#struct){
  2378  -                bar: (#struct){
  2379  -                  min: (int){ |(*(int){ 30 }, (int){ int }) }
  2380  -                  max: (int){ |(*(int){ 40 }, (int){ int }) }
  2381  -                }
  2382  -              }) }
  2383  -          }
  2384  +          _X: (#struct){
  2385  +            spec: (#struct){ |(*(#struct){
  2386  +                foo: (#struct){
  2387  +                  min: (int){ |(*(int){ 10 }, (int){ int }) }
  2388  +                  max: (int){ |(*(int){ 20 }, (int){ int }) }
  2389  +                }
  2390  +              }, (#struct){
  2391  +                bar: (#struct){
  2392  +                  min: (int){ |(*(int){ 30 }, (int){ int }) }
  2393  +                  max: (int){ |(*(int){ 40 }, (int){ int }) }
  2394  +                }
  2395  +              }) }
  2396  +          }
  2397  +          spec: (#struct){ |(*(#struct){
  2398  +              minFoo: (int){ |(*(int){ 10 }, (int){ int }) }
  2399  +              maxFoo: (int){ |(*(int){ 20 }, (int){ int }) }
  2400  +              minBar?: (null){ null }
  2401  +              maxBar?: (null){ null }
  2402  +              hoge?: ((null|bool)){ |((null){ null }, (bool){ bool }) }
  2403  +              fuga?: (null){ null }
  2404  +            }, (#struct){
  2405  +              minFoo: (int){ |(*(int){ 10 }, (int){ int }) }
  2406  +              maxFoo: (int){ |(*(int){ 20 }, (int){ int }) }
  2407  +              minBar?: (null){ null }
  2408  +              maxBar?: (null){ null }
  2409  +              hoge?: (null){ null }
  2410  +              fuga?: ((null|bool)){ |((null){ null }, (bool){ bool }) }
  2411  +            }) }
  2412           }
  2413         }
  2414         _#Spec: (#struct){ |(*(#struct){
  2415  @@ -803,36 +695,36 @@
  2416           }
  2417         }
  2418         _Thing: (#struct){
  2419  -        spec: (#struct){ |(*(#struct){
  2420  -            minFoo: (int){ |(*(int){ 10 }, (int){ int }) }
  2421  -            maxFoo: (int){ |(*(int){ 20 }, (int){ int }) }
  2422  -            minBar?: (null){ null }
  2423  -            maxBar?: (null){ null }
  2424  -            hoge?: ((null|bool)){ |((null){ null }, (bool){ bool }) }
  2425  -            fuga?: (null){ null }
  2426  -          }, *(#struct){
  2427  -            minFoo?: (null){ null }
  2428  -            maxFoo?: (null){ null }
  2429  -            minBar: (int){ |(*(int){ 30 }, (int){ int }) }
  2430  -            maxBar: (int){ |(*(int){ 40 }, (int){ int }) }
  2431  -            hoge?: ((null|bool)){ |((null){ null }, (bool){ bool }) }
  2432  -            fuga?: (null){ null }
  2433  -          }, (#struct){
  2434  -            minFoo: (int){ |(*(int){ 10 }, (int){ int }) }
  2435  -            maxFoo: (int){ |(*(int){ 20 }, (int){ int }) }
  2436  -            minBar?: (null){ null }
  2437  -            maxBar?: (null){ null }
  2438  -            hoge?: (null){ null }
  2439  -            fuga?: ((null|bool)){ |((null){ null }, (bool){ bool }) }
  2440  -          }, (#struct){
  2441  -            minFoo?: (null){ null }
  2442  -            maxFoo?: (null){ null }
  2443  -            minBar: (int){ |(*(int){ 30 }, (int){ int }) }
  2444  -            maxBar: (int){ |(*(int){ 40 }, (int){ int }) }
  2445  -            hoge?: (null){ null }
  2446  -            fuga?: ((null|bool)){ |((null){ null }, (bool){ bool }) }
  2447  -          }) }
  2448           _X: (_){ _ }
  2449  +        spec: (#struct){ |(*(#struct){
  2450  +            minFoo: (int){ |(*(int){ 10 }, (int){ int }) }
  2451  +            maxFoo: (int){ |(*(int){ 20 }, (int){ int }) }
  2452  +            minBar?: (null){ null }
  2453  +            maxBar?: (null){ null }
  2454  +            hoge?: ((null|bool)){ |((null){ null }, (bool){ bool }) }
  2455  +            fuga?: (null){ null }
  2456  +          }, *(#struct){
  2457  +            minFoo?: (null){ null }
  2458  +            maxFoo?: (null){ null }
  2459  +            minBar: (int){ |(*(int){ 30 }, (int){ int }) }
  2460  +            maxBar: (int){ |(*(int){ 40 }, (int){ int }) }
  2461  +            hoge?: ((null|bool)){ |((null){ null }, (bool){ bool }) }
  2462  +            fuga?: (null){ null }
  2463  +          }, (#struct){
  2464  +            minFoo: (int){ |(*(int){ 10 }, (int){ int }) }
  2465  +            maxFoo: (int){ |(*(int){ 20 }, (int){ int }) }
  2466  +            minBar?: (null){ null }
  2467  +            maxBar?: (null){ null }
  2468  +            hoge?: (null){ null }
  2469  +            fuga?: ((null|bool)){ |((null){ null }, (bool){ bool }) }
  2470  +          }, (#struct){
  2471  +            minFoo?: (null){ null }
  2472  +            maxFoo?: (null){ null }
  2473  +            minBar: (int){ |(*(int){ 30 }, (int){ int }) }
  2474  +            maxBar: (int){ |(*(int){ 40 }, (int){ int }) }
  2475  +            hoge?: (null){ null }
  2476  +            fuga?: ((null|bool)){ |((null){ null }, (bool){ bool }) }
  2477  +          }) }
  2478         }
  2479         #Constrained: (#struct){
  2480           spec: (#struct){ |(*(#struct){
  2481  @@ -916,19 +808,19 @@
  2482             common: (int){ 3 }
  2483           }
  2484           #FormFoo: (#struct){
  2485  -          common: (int){ 3 }
  2486  -          fooID: (string){ string }
  2487  +          fooID: (string){ string }
  2488  +          common: (int){ 3 }
  2489           }
  2490           #FormBar: (#struct){
  2491  -          common: (int){ 3 }
  2492  -          barID: (string){ string }
  2493  +          barID: (string){ string }
  2494  +          common: (int){ 3 }
  2495           }
  2496           #Form: (#struct){ |((#struct){
  2497  -            common: (int){ 3 }
  2498               fooID: (string){ string }
  2499  -          }, (#struct){
  2500  -            common: (int){ 3 }
  2501  +            common: (int){ 3 }
  2502  +          }, (#struct){
  2503               barID: (string){ string }
  2504  +            common: (int){ 3 }
  2505             }) }
  2506         }
  2507         #Input: (#struct){
  2508  @@ -936,18 +828,12 @@
  2509           }
  2510         }
  2511         #summarizeReturn: (#struct){
  2512  -        in: (#struct){
  2513  -          forms: (list){
  2514  -          }
  2515  -        }
  2516  +        in: ~(issue2246.full.#Input)
  2517           out: (#list){
  2518           }
  2519         }
  2520         #compute: (#struct){
  2521  -        in: (#struct){
  2522  -          forms: (list){
  2523  -          }
  2524  -        }
  2525  +        in: ~(issue2246.full.#Input)
  2526           out: (#list){
  2527           }
  2528         }
  2529  @@ -1031,13 +917,11 @@
  2530         }
  2531       }
  2532     }
  2533  -  issue3149: (_|_){
  2534  -    // [eval]
  2535  +  issue3149: (struct){
  2536       #valid: (#struct){
  2537         name!: (string){ |((string){ &(=~"^Foo", =~"Foo$") }, (string){ "an exception" }) }
  2538       }
  2539  -    list: (_|_){
  2540  -      // [eval]
  2541  +    list: (#list){
  2542         0: (#struct){
  2543           name: (string){ "FooBarFoo" }
  2544         }
  2545  @@ -1047,19 +931,8 @@
  2546         2: (#struct){
  2547           name: (string){ "FooQuuxFoo" }
  2548         }
  2549  -      3: (_|_){
  2550  -        // [eval]
  2551  -        name: (_|_){
  2552  -          // [eval] issue3149.list.3.name: 2 errors in empty disjunction:
  2553  -          // issue3149.list.3.name: invalid value "an exception" (out of bound =~"^Foo"):
  2554  -          //     ./issue3149.cue:3:13
  2555  -          //     ./issue3149.cue:3:10
  2556  -          //     ./issue3149.cue:10:10
  2557  -          // issue3149.list.3.name: invalid value "an exception" (out of bound =~"Foo$"):
  2558  -          //     ./issue3149.cue:3:46
  2559  -          //     ./issue3149.cue:3:10
  2560  -          //     ./issue3149.cue:10:10
  2561  -        }
  2562  +      3: (#struct){
  2563  +        name: (string){ "an exception" }
  2564         }
  2565       }
  2566     }
  2567  @@ -1151,7 +1024,9 @@
  2568               cname?: (string){ string }
  2569             }, (#struct){
  2570               build_type!: (string){ "workflow" }
  2571  -            source?: (#struct){
  2572  +            source?: (_|_){
  2573  +              // [eval] issue3784.full.#Schema.pages.source: field not allowed:
  2574  +              //     ./issue3784.cue:20:4
  2575                 branch?: (string){ string }
  2576                 path?: (string){ string }
  2577               }
  2578  @@ -1160,12 +1035,12 @@
  2579         }
  2580         out: (#struct){
  2581           pages: (#struct){
  2582  +          cname: (string){ "foo.com" }
  2583             build_type: (string){ "legacy" }
  2584             source: (#struct){
  2585               branch: (string){ "main" }
  2586               path: (string){ "/" }
  2587             }
  2588  -          cname: (string){ "foo.com" }
  2589           }
  2590         }
  2591       }
  2592  @@ -1195,9 +1070,15 @@
  2593           build_type!: (string){ "legacy" }
  2594           source: (#struct){
  2595             branch!: (string){ string }
  2596  -          path?: (string){ string }
  2597  -        }
  2598  -        cname?: (string){ string }
  2599  +          path?: (_|_){
  2600  +            // [eval] issue3784.variant2.a.source.path: field not allowed:
  2601  +            //     ./issue3784.cue:83:4
  2602  +          }
  2603  +        }
  2604  +        cname?: (_|_){
  2605  +          // [eval] issue3784.variant2.a.cname: field not allowed:
  2606  +          //     ./issue3784.cue:85:3
  2607  +        }
  2608         }
  2609       }
  2610     }
  2611  @@ -1216,10 +1097,10 @@
  2612           v: (string){ |(*(string){ "a" }, (string){ "b" }, (string){ "c" }) }
  2613         }
  2614         c: (#struct){
  2615  -        v: (string){ |(*(string){ "a" }, *(string){ "b" }, *(string){ "c" }) }
  2616  +        v: (string){ |(*(string){ "a" }, (string){ "b" }, (string){ "c" }) }
  2617         }
  2618         coo: (#struct){
  2619  -        v: (string){ |(*(string){ "a" }, *(string){ "b" }, *(string){ "c" }) }
  2620  +        v: (string){ |(*(string){ "a" }, (string){ "b" }, (string){ "c" }) }
  2621         }
  2622       }
  2623     }
  2624  -- out/evalalpha/stats --
  2625  Leaks:  2786
  2626  Freed:  0
  2627  Reused: 0
  2628  Allocs: 2786
  2629  Retain: 0
  2630  
  2631  Unifications: 686
  2632  Conjuncts:    2767
  2633  Disjuncts:    1290
  2634  
  2635  CloseIDElems: 5666
  2636  NumCloseIDs: 317
  2637  -- diff/-out/evalalpha/stats<==>+out/eval/stats --
  2638  diff old new
  2639  --- old
  2640  +++ new
  2641  @@ -1,9 +1,12 @@
  2642  -Leaks:  9
  2643  -Freed:  2786
  2644  -Reused: 2771
  2645  -Allocs: 24
  2646  -Retain: 123
  2647  -
  2648  -Unifications: 1427
  2649  -Conjuncts:    4068
  2650  -Disjuncts:    2909
  2651  +Leaks:  2786
  2652  +Freed:  0
  2653  +Reused: 0
  2654  +Allocs: 2786
  2655  +Retain: 0
  2656  +
  2657  +Unifications: 686
  2658  +Conjuncts:    2767
  2659  +Disjuncts:    1290
  2660  +
  2661  +CloseIDElems: 5666
  2662  +NumCloseIDs: 317
  2663  -- out/eval/stats --
  2664  Leaks:  9
  2665  Freed:  2786
  2666  Reused: 2771
  2667  Allocs: 24
  2668  Retain: 123
  2669  
  2670  Unifications: 1427
  2671  Conjuncts:    4068
  2672  Disjuncts:    2909
  2673  -- diff/todo/p2 --
  2674  noChildError.issue1808.#type: one disjunction options eliminated due to earlier detected structural cycle. May be okay, but investigate.
  2675  issue2209.simplified.full._X: ditto
  2676  -- diff/explanation --
  2677  issue2209.simplified.t2.BAZ: now fixed
  2678  issue2209.simplified.t3.BAZ: missing error.
  2679  issue2209.simplified.t3: new evaluator fixes known bug.
  2680  preserveClosedness.medium.p*: discarding of default is correct.
  2681  issue1417: new evaluator fixes known bug
  2682  issue3149: new evaluator fixes known bug
  2683  issue770: new evaluator fixes a bug in "c" and "coo" where defaults did not apply correctly.
  2684  -- out/eval --
  2685  Errors:
  2686  issue1417.ids.2: 2 errors in empty disjunction:
  2687  issue2209.full.Bar.resource.spec: 6 errors in empty disjunction:
  2688  issue2209.full.Bar.resource.spec.minBar: 2 errors in empty disjunction:
  2689  issue2209.full.Bar.resource.spec.minBar: conflicting values null and int (mismatched types null and int):
  2690      ./issue2209full.cue:43:7
  2691      ./issue2209full.cue:48:13
  2692      ./issue2209full.cue:67:10
  2693      ./issue2209full.cue:83:16
  2694      ./issue2209full.cue:87:13
  2695      ./issue2209full.cue:107:20
  2696  issue2209.full.Bar.resource.spec.minFoo: 2 errors in empty disjunction:
  2697  issue2209.full.Bar.resource.spec.minFoo: conflicting values null and 10 (mismatched types null and int):
  2698      ./issue2209full.cue:43:7
  2699      ./issue2209full.cue:48:13
  2700      ./issue2209full.cue:55:16
  2701      ./issue2209full.cue:71:4
  2702      ./issue2209full.cue:72:13
  2703      ./issue2209full.cue:92:13
  2704  issue2209.full.Bar.resource.spec.minFoo: conflicting values null and int (mismatched types null and int):
  2705      ./issue2209full.cue:43:7
  2706      ./issue2209full.cue:48:13
  2707      ./issue2209full.cue:67:10
  2708      ./issue2209full.cue:83:16
  2709      ./issue2209full.cue:92:13
  2710      ./issue2209full.cue:105:20
  2711  issue3149.list.3.name: 2 errors in empty disjunction:
  2712  issue1417.ids.1: invalid value "ab" (out of bound !~"^a"):
  2713      ./issue1417.cue:2:7
  2714      ./issue1417.cue:4:11
  2715      ./issue1417.cue:4:26
  2716  issue1417.ids.2: invalid value "aB" (out of bound !~"^a"):
  2717      ./issue1417.cue:2:7
  2718      ./issue1417.cue:4:11
  2719      ./issue1417.cue:4:32
  2720  issue1417.ids.2: invalid value "aB" (out of bound !~"[A-Z]"):
  2721      ./issue1417.cue:3:16
  2722      ./issue1417.cue:4:11
  2723      ./issue1417.cue:4:32
  2724  issue2209.simplified.t3.BAZ: undefined field: y:
  2725      ./issue2209full.cue:35:9
  2726  issue2209.full.Bar.resource.spec.minBar: undefined field: min:
  2727      ./issue2209full.cue:77:25
  2728  issue3149.list.3.name: invalid value "an exception" (out of bound =~"^Foo"):
  2729      ./issue3149.cue:3:13
  2730      ./issue3149.cue:3:10
  2731      ./issue3149.cue:10:10
  2732  issue3149.list.3.name: invalid value "an exception" (out of bound =~"Foo$"):
  2733      ./issue3149.cue:3:46
  2734      ./issue3149.cue:3:10
  2735      ./issue3149.cue:10:10
  2736  
  2737  Result:
  2738  (_|_){
  2739    // [eval]
  2740    disambiguateClosed: (struct){
  2741      b: (#struct){ |((#struct){
  2742          x: (bool){ true }
  2743        }, (#struct){
  2744          y: (bool){ true }
  2745        }) }
  2746      a: (#struct){ |((#struct){
  2747          x: (bool){ true }
  2748        }, (#struct){
  2749          y: (bool){ true }
  2750        }) }
  2751      #Def: (#struct){ |((#struct){
  2752          x: (bool){ true }
  2753        }, (#struct){
  2754          y: (bool){ true }
  2755        }) }
  2756    }
  2757    alwaysCheckMatchers1: (struct){
  2758      b: (struct){
  2759        c: (string){ "yyyyy" }
  2760      }
  2761    }
  2762    alwaysCheckPatterns2: (struct){
  2763      a: (#struct){
  2764        c: (string){ "yyyyy" }
  2765      }
  2766      b: (#struct){
  2767        c: (string){ "yyyyy" }
  2768      }
  2769      #X: ((string|struct)){ |((string){ string }, (#struct){
  2770          c: (string){ string }
  2771        }) }
  2772    }
  2773    nestedNonMonotonic: (struct){
  2774      resolved: (struct){
  2775        n1: (struct){
  2776          x: ((null|struct)){ |((struct){
  2777              a: (struct){
  2778                c: (int){ 1 }
  2779                d: (int){ 1 }
  2780              }
  2781            }, (null){ null }) }
  2782        }
  2783        n2: (struct){
  2784          x: ((null|struct)){ |((struct){
  2785              a: (struct){
  2786                b: (struct){
  2787                  c: (int){ 1 }
  2788                  d: (int){ 1 }
  2789                }
  2790              }
  2791            }, (null){ null }) }
  2792        }
  2793      }
  2794      eliminated: (struct){
  2795        n1: (struct){
  2796          p1: (struct){
  2797            x: (null){ null }
  2798          }
  2799          p2: (struct){
  2800            x: (null){ null }
  2801          }
  2802        }
  2803        n2: (struct){
  2804          p1: (struct){
  2805            x: (null){ null }
  2806          }
  2807          p2: (struct){
  2808            x: (null){ null }
  2809          }
  2810        }
  2811      }
  2812      incomplete: (struct){
  2813        a: (struct){
  2814          n1: (struct){
  2815            p1: (struct){
  2816              x: (null){ null }
  2817            }
  2818            p2: (struct){
  2819              x: (null){ null }
  2820            }
  2821          }
  2822          n2: (struct){
  2823            p1: (struct){
  2824              x: ((null|struct)){ |((struct){
  2825                  a: (struct){
  2826                    b: (_|_){
  2827                      // [incomplete] nestedNonMonotonic.incomplete.a.n2.p1.x.a.b: invalid value {c:1} (does not satisfy struct.MinFields(2)): len(fields) < MinFields(2) (1 < 2):
  2828                      //     ./in.cue:96:15
  2829                      //     ./in.cue:96:32
  2830                      //     ./in.cue:97:12
  2831                      c: (int){ 1 }
  2832                    }
  2833                  }
  2834                }, (null){ null }) }
  2835            }
  2836            p2: (struct){
  2837              x: ((null|struct)){ |((struct){
  2838                  a: (struct){
  2839                    b: (_|_){
  2840                      // [incomplete] nestedNonMonotonic.incomplete.a.n2.p2.x.a.b: invalid value {c:1} (does not satisfy struct.MinFields(2)): len(fields) < MinFields(2) (1 < 2):
  2841                      //     ./in.cue:102:15
  2842                      //     ./in.cue:101:12
  2843                      //     ./in.cue:102:32
  2844                      c: (int){ 1 }
  2845                    }
  2846                  }
  2847                }, (null){ null }) }
  2848            }
  2849          }
  2850        }
  2851        b: (struct){
  2852          n1: (struct){
  2853            p1: (struct){
  2854              x: (null){ null }
  2855            }
  2856            p2: (struct){
  2857              x: (null){ null }
  2858            }
  2859            p3: (struct){
  2860              x: (null){ null }
  2861            }
  2862          }
  2863          n2: (struct){
  2864            p1: (struct){
  2865              x: ((null|struct)){ |((struct){
  2866                  a: (struct){
  2867                    b: (_|_){
  2868                      // [incomplete] nestedNonMonotonic.incomplete.b.n2.p1.x.a.b: invalid value {c:1 & 1 & 1,d:1 & 1 & 1} (does not satisfy struct.MinFields(3)): len(fields) < MinFields(3) (2 < 3):
  2869                      //     ./in.cue:138:15
  2870                      //     ./in.cue:124:15
  2871                      //     ./in.cue:125:12
  2872                      //     ./in.cue:126:12
  2873                      //     ./in.cue:130:12
  2874                      //     ./in.cue:131:15
  2875                      //     ./in.cue:132:12
  2876                      //     ./in.cue:136:12
  2877                      //     ./in.cue:137:12
  2878                      //     ./in.cue:138:32
  2879                      c: (int){ 1 }
  2880                      d: (int){ 1 }
  2881                    }
  2882                  }
  2883                }, (null){ null }) }
  2884            }
  2885          }
  2886        }
  2887      }
  2888    }
  2889    preserveClosedness: (struct){
  2890      small: (struct){
  2891        p1: (struct){
  2892          #A: (#struct){ |(*(#struct){
  2893              a: (string){ string }
  2894            }, (#struct){
  2895              a: (string){ string }
  2896              b: (int){ int }
  2897            }) }
  2898          #B: (#struct){ |(*(#struct){
  2899            }, (#struct){
  2900              b: (int){ int }
  2901            }, (#struct){
  2902              a: (string){ string }
  2903            }, (#struct){
  2904              a: (string){ string }
  2905              b: (int){ int }
  2906            }) }
  2907        }
  2908        p2: (struct){
  2909          #A: (#struct){ |(*(#struct){
  2910              a: (string){ string }
  2911            }, (#struct){
  2912              a: (string){ string }
  2913              b: (int){ int }
  2914            }) }
  2915          #B: (#struct){ |(*(#struct){
  2916            }, (#struct){
  2917              a: (string){ string }
  2918              b: (int){ int }
  2919            }, (#struct){
  2920              a: (string){ string }
  2921            }, (#struct){
  2922              b: (int){ int }
  2923            }) }
  2924        }
  2925      }
  2926      medium: (struct){
  2927        p1: (struct){
  2928          #A: (#struct){ |(*(#struct){
  2929              a: (string){ string }
  2930            }, (#struct){
  2931              a: (string){ string }
  2932              c: (int){ int }
  2933            }, (#struct){
  2934              a: (string){ string }
  2935              d: (string){ string }
  2936            }) }
  2937          #B: (#struct){ |(*(#struct){
  2938            }, (#struct){
  2939              c: (int){ int }
  2940            }, (#struct){
  2941              d: (string){ string }
  2942            }, (#struct){
  2943              a: (string){ string }
  2944            }, (#struct){
  2945              a: (string){ string }
  2946              c: (int){ int }
  2947            }, (#struct){
  2948              a: (string){ string }
  2949              d: (string){ string }
  2950            }, (#struct){
  2951              b: (string){ string }
  2952            }, (#struct){
  2953              b: (string){ string }
  2954              c: (int){ int }
  2955            }, (#struct){
  2956              b: (string){ string }
  2957              d: (string){ string }
  2958            }) }
  2959        }
  2960        p2: (struct){
  2961          #A: (#struct){ |(*(#struct){
  2962              a: (string){ string }
  2963            }, (#struct){
  2964              a: (string){ string }
  2965              c: (int){ int }
  2966            }, (#struct){
  2967              a: (string){ string }
  2968              d: (string){ string }
  2969            }) }
  2970          #B: (#struct){ |(*(#struct){
  2971            }, (#struct){
  2972              a: (string){ string }
  2973              c: (int){ int }
  2974            }, (#struct){
  2975              a: (string){ string }
  2976              d: (string){ string }
  2977            }, (#struct){
  2978              a: (string){ string }
  2979            }, (#struct){
  2980              c: (int){ int }
  2981            }, (#struct){
  2982              d: (string){ string }
  2983            }, (#struct){
  2984              b: (string){ string }
  2985            }, (#struct){
  2986              b: (string){ string }
  2987              c: (int){ int }
  2988            }, (#struct){
  2989              b: (string){ string }
  2990              d: (string){ string }
  2991            }) }
  2992        }
  2993        p3: (struct){
  2994          #A: (#struct){ |(*(#struct){
  2995              a: (string){ string }
  2996            }, (#struct){
  2997              a: (string){ string }
  2998              c: (int){ int }
  2999            }, (#struct){
  3000              a: (string){ string }
  3001              d: (string){ string }
  3002            }) }
  3003          #B: (#struct){ |(*(#struct){
  3004            }, (#struct){
  3005              a: (string){ string }
  3006              c: (int){ int }
  3007            }, (#struct){
  3008              a: (string){ string }
  3009              d: (string){ string }
  3010            }, (#struct){
  3011              b: (string){ string }
  3012            }, (#struct){
  3013              b: (string){ string }
  3014              c: (int){ int }
  3015            }, (#struct){
  3016              b: (string){ string }
  3017              d: (string){ string }
  3018            }, (#struct){
  3019              a: (string){ string }
  3020            }, (#struct){
  3021              c: (int){ int }
  3022            }, (#struct){
  3023              d: (string){ string }
  3024            }) }
  3025        }
  3026      }
  3027    }
  3028    noChildError: (struct){
  3029      issue1608: (struct){
  3030        myValue: (#struct){
  3031          fieldName: (string){ "some string" }
  3032        }
  3033        #type: (#struct){
  3034          fieldName: ((string|struct)){ |((string){ string }, (#struct){
  3035              foo: (string){ string }
  3036            }, (#struct){
  3037              bar: ((string|struct)){ |((string){ string }, (#struct){
  3038                  foo: (string){ string }
  3039                }) }
  3040            }) }
  3041        }
  3042        #subtype: ((string|struct)){ |((string){ string }, (#struct){
  3043            foo: (string){ string }
  3044          }) }
  3045      }
  3046      t1: (struct){
  3047        #D: (#struct){
  3048          b: (string){ string }
  3049        }
  3050        o: (#struct){
  3051          b: (string){ "test" }
  3052        }
  3053      }
  3054      t2: (struct){
  3055        o: (#struct){
  3056          b: (string){ "test" }
  3057        }
  3058        #D: (#struct){
  3059          b: (string){ string }
  3060        }
  3061      }
  3062      t3: (struct){
  3063        #D: (#struct){ |((#struct){
  3064            a: (null){ null }
  3065          }, (#struct){
  3066            b: (string){ string }
  3067          }) }
  3068        o: (#struct){
  3069          b: (string){ "test" }
  3070        }
  3071      }
  3072      t4: (struct){
  3073        o: (#struct){
  3074          b: (string){ "test" }
  3075        }
  3076        #D: (#struct){ |((#struct){
  3077            a: (null){ null }
  3078          }, (#struct){
  3079            b: (string){ string }
  3080          }) }
  3081      }
  3082    }
  3083    issue1924: (struct){
  3084      t1: (struct){
  3085        m: (struct){
  3086          a: (int){ 2 }
  3087        }
  3088        x: (int){ 2 }
  3089      }
  3090      t2: (struct){
  3091        m: (struct){
  3092          a: (int){ 2 }
  3093        }
  3094        x: (int){ 3 }
  3095      }
  3096      t3: (struct){
  3097        m: (struct){
  3098          a: (int){ 2 }
  3099        }
  3100        x: (int){ 1 }
  3101      }
  3102    }
  3103    issue1838: (struct){
  3104      t1: (struct){
  3105        p?: (#list){
  3106        }
  3107        a: (null){ null }
  3108      }
  3109      t2: (struct){
  3110        p?: (#list){
  3111        }
  3112        a: (null){ null }
  3113      }
  3114    }
  3115    noHang: (struct){
  3116      #T: (list){
  3117        0: (string){ "d" }
  3118      }
  3119      x: (list){
  3120        0: (string){ "d" }
  3121      }
  3122      #X: (list){
  3123        0: (string){ "d" }
  3124      }
  3125    }
  3126    issue1940: (struct){
  3127      #T: (#list){
  3128        0: (string){ "d" }
  3129        1: (list){
  3130        }
  3131      }
  3132      #A: (#struct){
  3133        type: (#list){
  3134          0: (string){ "d" }
  3135          1: (list){
  3136          }
  3137        }
  3138      }
  3139      #B: (#struct){
  3140      }
  3141      #C: (#struct){
  3142        x: (#struct){
  3143          type: (#list){
  3144            0: (string){ "d" }
  3145            1: (list){
  3146            }
  3147          }
  3148        }
  3149      }
  3150    }
  3151    issue1417: (_|_){
  3152      // [eval]
  3153      #ID: (string){ |((string){ &(!~"^a", =~"^a") }, (string){ &(!~"^a", !~"[A-Z]") }, (string){ &(=~"^ab$", =~"^a") }, (string){ &(=~"^ab$", !~"[A-Z]") }, (string){ &(=~"^aB$", =~"^a") }, (string){ &(=~"^aB$", !~"[A-Z]") }) }
  3154      ids: (_|_){
  3155        // [eval]
  3156        0: (string){ "xyz" }
  3157        1: (_|_){
  3158          // [eval] issue1417.ids.1: invalid value "ab" (out of bound !~"^a"):
  3159          //     ./issue1417.cue:2:7
  3160          //     ./issue1417.cue:4:11
  3161          //     ./issue1417.cue:4:26
  3162        }
  3163        2: (_|_){
  3164          // [eval] issue1417.ids.2: 2 errors in empty disjunction:
  3165          // issue1417.ids.2: invalid value "aB" (out of bound !~"^a"):
  3166          //     ./issue1417.cue:2:7
  3167          //     ./issue1417.cue:4:11
  3168          //     ./issue1417.cue:4:32
  3169          // issue1417.ids.2: invalid value "aB" (out of bound !~"[A-Z]"):
  3170          //     ./issue1417.cue:3:16
  3171          //     ./issue1417.cue:4:11
  3172          //     ./issue1417.cue:4:32
  3173        }
  3174      }
  3175    }
  3176    issue2209: (_|_){
  3177      // [eval]
  3178      simplified: (_|_){
  3179        // [eval]
  3180        t1: (struct){
  3181          #SpecFoo: (#struct){
  3182            foo: (#struct){
  3183              min: (int){ 1 }
  3184            }
  3185          }
  3186          #SpecBar: (#struct){
  3187            bar: (#struct){
  3188              min: (int){ 1 }
  3189            }
  3190          }
  3191          spec: (#struct){
  3192            bar: (#struct){
  3193              min: (int){ 1 }
  3194            }
  3195          }
  3196          out: (struct){ |((struct){
  3197              X: (#struct){
  3198                bar: (#struct){
  3199                  min: (int){ 1 }
  3200                }
  3201              }
  3202              nullFoo: (null){ null }
  3203              minFoo: (int){ int }
  3204            }, (struct){
  3205              minBar: (int){ int }
  3206              X: (#struct){
  3207                bar: (#struct){
  3208                  min: (int){ 1 }
  3209                }
  3210              }
  3211              nullFoo: (null){ null }
  3212            }, (struct){
  3213              X: (#struct){
  3214                bar: (#struct){
  3215                  min: (int){ 1 }
  3216                }
  3217              }
  3218              nullBar: (null){ null }
  3219              minFoo: (int){ int }
  3220            }, (struct){
  3221              minBar: (int){ int }
  3222              X: (#struct){
  3223                bar: (#struct){
  3224                  min: (int){ 1 }
  3225                }
  3226              }
  3227              nullBar: (null){ null }
  3228            }) }
  3229        }
  3230        t2: (_|_){
  3231          // [incomplete] issue2209.simplified.t2.BAZ: undefined field: x:
  3232          //     ./issue2209full.cue:24:17
  3233          #SpecFoo: (#struct){
  3234            foo: (#struct){
  3235            }
  3236          }
  3237          #SpecBar: (#struct){
  3238            bar: (#struct){
  3239              x: (int){ 1 }
  3240            }
  3241          }
  3242          spec: (#struct){ |(*(#struct){
  3243              bar: (struct){
  3244              }
  3245              foo: (#struct){
  3246              }
  3247            }, (#struct){
  3248              bar: (#struct){
  3249                x: (int){ 1 }
  3250              }
  3251            }) }
  3252          BAZ: (_|_){
  3253            // [incomplete] issue2209.simplified.t2.BAZ: undefined field: x:
  3254            //     ./issue2209full.cue:24:17
  3255          }
  3256          b2: (int){ int }
  3257        }
  3258        t3: (_|_){
  3259          // [eval] issue2209.simplified.t3.BAZ: undefined field: y:
  3260          //     ./issue2209full.cue:35:9
  3261          #A: (#struct){
  3262            v: (int){ 1 }
  3263          }
  3264          BAZ: (_|_){
  3265            // [eval] issue2209.simplified.t3.BAZ: undefined field: y:
  3266            //     ./issue2209full.cue:35:9
  3267          }
  3268          S: (#struct){ |(*(#struct){
  3269              x: (int){ 1 }
  3270              v: (int){ 1 }
  3271            }, (#struct){
  3272              x: (int){ 1 }
  3273              y: (int){ 1 }
  3274            }) }
  3275          #B: (#struct){
  3276            x: (int){ 1 }
  3277            y: (int){ 1 }
  3278          }
  3279          b2: (int){ int }
  3280        }
  3281      }
  3282      full: (_|_){
  3283        // [eval]
  3284        Foo: (#struct){
  3285          spec: (#struct){
  3286            foo: (#struct){
  3287              min: (int){ |(*(int){ 10 }, (int){ int }) }
  3288              max: (int){ |(*(int){ 20 }, (int){ int }) }
  3289            }
  3290          }
  3291          resource: (#struct){
  3292            spec: (#struct){ |(*(#struct){
  3293                minFoo: (int){ |(*(int){ 10 }, (int){ int }) }
  3294                maxFoo: (int){ |(*(int){ 20 }, (int){ int }) }
  3295                minBar?: (null){ null }
  3296                maxBar?: (null){ null }
  3297                hoge?: ((null|bool)){ |((null){ null }, (bool){ bool }) }
  3298                fuga?: (null){ null }
  3299              }, (#struct){
  3300                minFoo: (int){ |(*(int){ 10 }, (int){ int }) }
  3301                maxFoo: (int){ |(*(int){ 20 }, (int){ int }) }
  3302                minBar?: (null){ null }
  3303                maxBar?: (null){ null }
  3304                hoge?: (null){ null }
  3305                fuga?: ((null|bool)){ |((null){ null }, (bool){ bool }) }
  3306              }) }
  3307            _X: (#struct){
  3308              spec: (#struct){ |(*(#struct){
  3309                  foo: (#struct){
  3310                    min: (int){ |(*(int){ 10 }, (int){ int }) }
  3311                    max: (int){ |(*(int){ 20 }, (int){ int }) }
  3312                  }
  3313                }, (#struct){
  3314                  foo: (#struct){
  3315                  }
  3316                  bar: (#struct){
  3317                    min: (int){ |(*(int){ 30 }, (int){ int }) }
  3318                    max: (int){ |(*(int){ 40 }, (int){ int }) }
  3319                  }
  3320                }) }
  3321            }
  3322          }
  3323        }
  3324        Bar: (_|_){
  3325          // [eval]
  3326          spec: (#struct){
  3327            bar: (#struct){
  3328              min: (int){ |(*(int){ 30 }, (int){ int }) }
  3329              max: (int){ |(*(int){ 40 }, (int){ int }) }
  3330            }
  3331          }
  3332          resource: (_|_){
  3333            // [eval]
  3334            spec: (_|_){
  3335              // [eval] issue2209.full.Bar.resource.spec: 6 errors in empty disjunction:
  3336              // issue2209.full.Bar.resource.spec.minBar: 2 errors in empty disjunction:
  3337              // issue2209.full.Bar.resource.spec.minBar: conflicting values null and int (mismatched types null and int):
  3338              //     ./issue2209full.cue:43:7
  3339              //     ./issue2209full.cue:48:13
  3340              //     ./issue2209full.cue:67:10
  3341              //     ./issue2209full.cue:83:16
  3342              //     ./issue2209full.cue:87:13
  3343              //     ./issue2209full.cue:107:20
  3344              // issue2209.full.Bar.resource.spec.minFoo: 2 errors in empty disjunction:
  3345              // issue2209.full.Bar.resource.spec.minFoo: conflicting values null and 10 (mismatched types null and int):
  3346              //     ./issue2209full.cue:43:7
  3347              //     ./issue2209full.cue:48:13
  3348              //     ./issue2209full.cue:55:16
  3349              //     ./issue2209full.cue:71:4
  3350              //     ./issue2209full.cue:72:13
  3351              //     ./issue2209full.cue:92:13
  3352              // issue2209.full.Bar.resource.spec.minFoo: conflicting values null and int (mismatched types null and int):
  3353              //     ./issue2209full.cue:43:7
  3354              //     ./issue2209full.cue:48:13
  3355              //     ./issue2209full.cue:67:10
  3356              //     ./issue2209full.cue:83:16
  3357              //     ./issue2209full.cue:92:13
  3358              //     ./issue2209full.cue:105:20
  3359              // issue2209.full.Bar.resource.spec.minBar: undefined field: min:
  3360              //     ./issue2209full.cue:77:25
  3361              minFoo: (_|_){
  3362                // [eval] issue2209.full.Bar.resource.spec.minFoo: 2 errors in empty disjunction:
  3363                // issue2209.full.Bar.resource.spec.minFoo: conflicting values null and 10 (mismatched types null and int):
  3364                //     ./issue2209full.cue:43:7
  3365                //     ./issue2209full.cue:48:13
  3366                //     ./issue2209full.cue:55:16
  3367                //     ./issue2209full.cue:71:4
  3368                //     ./issue2209full.cue:72:13
  3369                //     ./issue2209full.cue:92:13
  3370                // issue2209.full.Bar.resource.spec.minFoo: conflicting values null and int (mismatched types null and int):
  3371                //     ./issue2209full.cue:43:7
  3372                //     ./issue2209full.cue:48:13
  3373                //     ./issue2209full.cue:67:10
  3374                //     ./issue2209full.cue:83:16
  3375                //     ./issue2209full.cue:92:13
  3376                //     ./issue2209full.cue:105:20
  3377              }
  3378              maxFoo: (_|_){
  3379                // [eval] issue2209.full.Bar.resource.spec.maxFoo: 2 errors in empty disjunction:
  3380                // issue2209.full.Bar.resource.spec.maxFoo: conflicting values null and 20 (mismatched types null and int):
  3381                //     ./issue2209full.cue:43:7
  3382                //     ./issue2209full.cue:48:13
  3383                //     ./issue2209full.cue:56:16
  3384                //     ./issue2209full.cue:71:4
  3385                //     ./issue2209full.cue:73:13
  3386                //     ./issue2209full.cue:93:13
  3387                // issue2209.full.Bar.resource.spec.maxFoo: conflicting values null and int (mismatched types null and int):
  3388                //     ./issue2209full.cue:43:7
  3389                //     ./issue2209full.cue:48:13
  3390                //     ./issue2209full.cue:67:10
  3391                //     ./issue2209full.cue:83:16
  3392                //     ./issue2209full.cue:93:13
  3393                //     ./issue2209full.cue:106:20
  3394              }
  3395              minBar: (_|_){
  3396                // [eval] issue2209.full.Bar.resource.spec.minBar: undefined field: min:
  3397                //     ./issue2209full.cue:77:25
  3398              }
  3399              maxBar: (_|_){
  3400                // [eval] issue2209.full.Bar.resource.spec.maxBar: undefined field: max:
  3401                //     ./issue2209full.cue:78:25
  3402              }
  3403              hoge?: ((null|bool)){ |((null){ null }, (bool){ bool }) }
  3404              fuga?: ((null|bool)){ |((null){ null }, (bool){ bool }) }
  3405            }
  3406            _X: (#struct){
  3407              spec: (#struct){ |(*(#struct){
  3408                  bar: (#struct){
  3409                  }
  3410                  foo: (#struct){
  3411                    min: (int){ |(*(int){ 10 }, (int){ int }) }
  3412                    max: (int){ |(*(int){ 20 }, (int){ int }) }
  3413                  }
  3414                }, (#struct){
  3415                  bar: (#struct){
  3416                    min: (int){ |(*(int){ 30 }, (int){ int }) }
  3417                    max: (int){ |(*(int){ 40 }, (int){ int }) }
  3418                  }
  3419                }) }
  3420            }
  3421          }
  3422        }
  3423        #Abstract: (#struct){
  3424          spec: (#struct){ |(*(#struct){
  3425              foo: (#struct){
  3426                min: (int){ |(*(int){ 10 }, (int){ int }) }
  3427                max: (int){ |(*(int){ 20 }, (int){ int }) }
  3428              }
  3429            }, (#struct){
  3430              bar: (#struct){
  3431                min: (int){ |(*(int){ 30 }, (int){ int }) }
  3432                max: (int){ |(*(int){ 40 }, (int){ int }) }
  3433              }
  3434            }) }
  3435          resource: (#struct){
  3436            spec: (#struct){ |(*(#struct){
  3437                minFoo: (int){ |(*(int){ 10 }, (int){ int }) }
  3438                maxFoo: (int){ |(*(int){ 20 }, (int){ int }) }
  3439                minBar?: (null){ null }
  3440                maxBar?: (null){ null }
  3441                hoge?: ((null|bool)){ |((null){ null }, (bool){ bool }) }
  3442                fuga?: (null){ null }
  3443              }, (#struct){
  3444                minFoo: (int){ |(*(int){ 10 }, (int){ int }) }
  3445                maxFoo: (int){ |(*(int){ 20 }, (int){ int }) }
  3446                minBar?: (null){ null }
  3447                maxBar?: (null){ null }
  3448                hoge?: (null){ null }
  3449                fuga?: ((null|bool)){ |((null){ null }, (bool){ bool }) }
  3450              }) }
  3451            _X: (#struct){
  3452              spec: (#struct){ |(*(#struct){
  3453                  foo: (#struct){
  3454                    min: (int){ |(*(int){ 10 }, (int){ int }) }
  3455                    max: (int){ |(*(int){ 20 }, (int){ int }) }
  3456                  }
  3457                }, (#struct){
  3458                  bar: (#struct){
  3459                    min: (int){ |(*(int){ 30 }, (int){ int }) }
  3460                    max: (int){ |(*(int){ 40 }, (int){ int }) }
  3461                  }
  3462                }) }
  3463            }
  3464          }
  3465        }
  3466        _#Spec: (#struct){ |(*(#struct){
  3467            foo: (#struct){
  3468              min: (int){ |(*(int){ 10 }, (int){ int }) }
  3469              max: (int){ |(*(int){ 20 }, (int){ int }) }
  3470            }
  3471          }, (#struct){
  3472            bar: (#struct){
  3473              min: (int){ |(*(int){ 30 }, (int){ int }) }
  3474              max: (int){ |(*(int){ 40 }, (int){ int }) }
  3475            }
  3476          }) }
  3477        _#SpecFoo: (#struct){
  3478          foo: (#struct){
  3479            min: (int){ |(*(int){ 10 }, (int){ int }) }
  3480            max: (int){ |(*(int){ 20 }, (int){ int }) }
  3481          }
  3482        }
  3483        _#SpecBar: (#struct){
  3484          bar: (#struct){
  3485            min: (int){ |(*(int){ 30 }, (int){ int }) }
  3486            max: (int){ |(*(int){ 40 }, (int){ int }) }
  3487          }
  3488        }
  3489        _Thing: (#struct){
  3490          spec: (#struct){ |(*(#struct){
  3491              minFoo: (int){ |(*(int){ 10 }, (int){ int }) }
  3492              maxFoo: (int){ |(*(int){ 20 }, (int){ int }) }
  3493              minBar?: (null){ null }
  3494              maxBar?: (null){ null }
  3495              hoge?: ((null|bool)){ |((null){ null }, (bool){ bool }) }
  3496              fuga?: (null){ null }
  3497            }, *(#struct){
  3498              minFoo?: (null){ null }
  3499              maxFoo?: (null){ null }
  3500              minBar: (int){ |(*(int){ 30 }, (int){ int }) }
  3501              maxBar: (int){ |(*(int){ 40 }, (int){ int }) }
  3502              hoge?: ((null|bool)){ |((null){ null }, (bool){ bool }) }
  3503              fuga?: (null){ null }
  3504            }, (#struct){
  3505              minFoo: (int){ |(*(int){ 10 }, (int){ int }) }
  3506              maxFoo: (int){ |(*(int){ 20 }, (int){ int }) }
  3507              minBar?: (null){ null }
  3508              maxBar?: (null){ null }
  3509              hoge?: (null){ null }
  3510              fuga?: ((null|bool)){ |((null){ null }, (bool){ bool }) }
  3511            }, (#struct){
  3512              minFoo?: (null){ null }
  3513              maxFoo?: (null){ null }
  3514              minBar: (int){ |(*(int){ 30 }, (int){ int }) }
  3515              maxBar: (int){ |(*(int){ 40 }, (int){ int }) }
  3516              hoge?: (null){ null }
  3517              fuga?: ((null|bool)){ |((null){ null }, (bool){ bool }) }
  3518            }) }
  3519          _X: (_){ _ }
  3520        }
  3521        #Constrained: (#struct){
  3522          spec: (#struct){ |(*(#struct){
  3523              minFoo: (int){ |(*(int){ 10 }, (int){ int }) }
  3524              maxFoo: (int){ |(*(int){ 20 }, (int){ int }) }
  3525              minBar?: (null){ null }
  3526              maxBar?: (null){ null }
  3527              hoge?: ((null|bool)){ |((null){ null }, (bool){ bool }) }
  3528              fuga?: (null){ null }
  3529            }, *(#struct){
  3530              minFoo?: (null){ null }
  3531              maxFoo?: (null){ null }
  3532              minBar: (int){ |(*(int){ 30 }, (int){ int }) }
  3533              maxBar: (int){ |(*(int){ 40 }, (int){ int }) }
  3534              hoge?: ((null|bool)){ |((null){ null }, (bool){ bool }) }
  3535              fuga?: (null){ null }
  3536            }, (#struct){
  3537              minFoo: (int){ |(*(int){ 10 }, (int){ int }) }
  3538              maxFoo: (int){ |(*(int){ 20 }, (int){ int }) }
  3539              minBar?: (null){ null }
  3540              maxBar?: (null){ null }
  3541              hoge?: (null){ null }
  3542              fuga?: ((null|bool)){ |((null){ null }, (bool){ bool }) }
  3543            }, (#struct){
  3544              minFoo?: (null){ null }
  3545              maxFoo?: (null){ null }
  3546              minBar: (int){ |(*(int){ 30 }, (int){ int }) }
  3547              maxBar: (int){ |(*(int){ 40 }, (int){ int }) }
  3548              hoge?: (null){ null }
  3549              fuga?: ((null|bool)){ |((null){ null }, (bool){ bool }) }
  3550            }) }
  3551        }
  3552        #Base: (#struct){
  3553          spec: (#struct){
  3554            minFoo?: ((null|int)){ |((null){ null }, (int){ int }) }
  3555            maxFoo?: ((null|int)){ |((null){ null }, (int){ int }) }
  3556            minBar?: ((null|int)){ |((null){ null }, (int){ int }) }
  3557            maxBar?: ((null|int)){ |((null){ null }, (int){ int }) }
  3558            hoge?: ((null|bool)){ |((null){ null }, (bool){ bool }) }
  3559            fuga?: ((null|bool)){ |((null){ null }, (bool){ bool }) }
  3560          }
  3561        }
  3562      }
  3563    }
  3564    issue2246: (struct){
  3565      simplified: (struct){
  3566        #FormFoo: (#struct){
  3567          fooID: (string){ string }
  3568        }
  3569        #FormBar: (#struct){
  3570          barID: (string){ string }
  3571        }
  3572        #Form: (#struct){ |((#struct){
  3573            fooID: (string){ string }
  3574          }, (#struct){
  3575            barID: (string){ string }
  3576          }) }
  3577        data: (struct){
  3578          fooID: (string){ "123" }
  3579        }
  3580        out1: (#struct){
  3581          fooID: (string){ "123" }
  3582        }
  3583        out2: (#struct){
  3584          fooID: (string){ "123" }
  3585        }
  3586      }
  3587      full: (struct){
  3588        data: (struct){
  3589          forms: (#list){
  3590            0: (struct){
  3591              fooID: (string){ "00-0000001" }
  3592            }
  3593          }
  3594        }
  3595        form1040: (#list){
  3596          0: (int){ 3 }
  3597        }
  3598        #K1: (#struct){
  3599          #_base: (#struct){
  3600            common: (int){ 3 }
  3601          }
  3602          #FormFoo: (#struct){
  3603            common: (int){ 3 }
  3604            fooID: (string){ string }
  3605          }
  3606          #FormBar: (#struct){
  3607            common: (int){ 3 }
  3608            barID: (string){ string }
  3609          }
  3610          #Form: (#struct){ |((#struct){
  3611              common: (int){ 3 }
  3612              fooID: (string){ string }
  3613            }, (#struct){
  3614              common: (int){ 3 }
  3615              barID: (string){ string }
  3616            }) }
  3617        }
  3618        #Input: (#struct){
  3619          forms: (list){
  3620          }
  3621        }
  3622        #summarizeReturn: (#struct){
  3623          in: (#struct){
  3624            forms: (list){
  3625            }
  3626          }
  3627          out: (#list){
  3628          }
  3629        }
  3630        #compute: (#struct){
  3631          in: (#struct){
  3632            forms: (list){
  3633            }
  3634          }
  3635          out: (#list){
  3636          }
  3637        }
  3638      }
  3639    }
  3640    issue2263: (struct){
  3641      simplified: (struct){
  3642        metrics: (#struct){
  3643          id: (string){ "foo" }
  3644          avg: (int){ 60 }
  3645        }
  3646        #Metric: (#struct){ |((#struct){
  3647            id: (string){ string }
  3648            avg: (number){ number }
  3649          }, (#struct){
  3650            id: (string){ string }
  3651          }, (#struct){
  3652            avg: (number){ number }
  3653          }, (#struct){
  3654          }) }
  3655        #IDSource: (#struct){
  3656          id: (string){ string }
  3657        }
  3658        #TargetAverage: (#struct){
  3659          avg: (number){ number }
  3660        }
  3661      }
  3662      full: (struct){
  3663        metrics: (#list){
  3664          0: (#struct){
  3665            id: (string){ "foo" }
  3666            avg: (int){ 60 }
  3667          }
  3668          1: (#struct){
  3669            id: (string){ "bar" }
  3670            value: (int){ 80 }
  3671          }
  3672          2: (#struct){
  3673            uri: (string){ "baz" }
  3674            avg: (int){ 70 }
  3675          }
  3676          3: (#struct){
  3677            uri: (string){ "qux" }
  3678            value: (int){ 90 }
  3679          }
  3680        }
  3681        #Metric: (#struct){ |((#struct){
  3682            id: (string){ string }
  3683            avg: (number){ number }
  3684          }, (#struct){
  3685            id: (string){ string }
  3686            value: (number){ number }
  3687          }, (#struct){
  3688            uri: (string){ string }
  3689            avg: (number){ number }
  3690          }, (#struct){
  3691            uri: (string){ string }
  3692            value: (number){ number }
  3693          }) }
  3694        #Source: (#struct){ |((#struct){
  3695            id: (string){ string }
  3696          }, (#struct){
  3697            uri: (string){ string }
  3698          }) }
  3699        #Target: (#struct){ |((#struct){
  3700            avg: (number){ number }
  3701          }, (#struct){
  3702            value: (number){ number }
  3703          }) }
  3704        #IDSource: (#struct){
  3705          id: (string){ string }
  3706        }
  3707        #URISource: (#struct){
  3708          uri: (string){ string }
  3709        }
  3710        #TargetAverage: (#struct){
  3711          avg: (number){ number }
  3712        }
  3713        #TargetValue: (#struct){
  3714          value: (number){ number }
  3715        }
  3716      }
  3717    }
  3718    issue3149: (_|_){
  3719      // [eval]
  3720      #valid: (#struct){
  3721        name!: (string){ |((string){ &(=~"^Foo", =~"Foo$") }, (string){ "an exception" }) }
  3722      }
  3723      list: (_|_){
  3724        // [eval]
  3725        0: (#struct){
  3726          name: (string){ "FooBarFoo" }
  3727        }
  3728        1: (#struct){
  3729          name: (string){ "FooBazFoo" }
  3730        }
  3731        2: (#struct){
  3732          name: (string){ "FooQuuxFoo" }
  3733        }
  3734        3: (_|_){
  3735          // [eval]
  3736          name: (_|_){
  3737            // [eval] issue3149.list.3.name: 2 errors in empty disjunction:
  3738            // issue3149.list.3.name: invalid value "an exception" (out of bound =~"^Foo"):
  3739            //     ./issue3149.cue:3:13
  3740            //     ./issue3149.cue:3:10
  3741            //     ./issue3149.cue:10:10
  3742            // issue3149.list.3.name: invalid value "an exception" (out of bound =~"Foo$"):
  3743            //     ./issue3149.cue:3:46
  3744            //     ./issue3149.cue:3:10
  3745            //     ./issue3149.cue:10:10
  3746          }
  3747        }
  3748      }
  3749    }
  3750    issue3528: (struct){
  3751      original: (struct){
  3752        workflows: (#list){
  3753          0: (#struct){
  3754            container: (#struct){
  3755            }
  3756            #container: ((string|struct)){ |((string){ string }, (#struct){
  3757                volumes?: (list){
  3758                }
  3759              }) }
  3760          }
  3761        }
  3762        test: (#struct){
  3763          container: (#struct){
  3764          }
  3765          #container: ((string|struct)){ |((string){ string }, (#struct){
  3766              volumes?: (list){
  3767              }
  3768            }) }
  3769        }
  3770        #Workflow: (#struct){
  3771          container: (#struct){
  3772          }
  3773          #container: ((string|struct)){ |((string){ string }, (#struct){
  3774              volumes?: (list){
  3775              }
  3776            }) }
  3777        }
  3778      }
  3779      reduced: (struct){
  3780        a: (#struct){
  3781          A: (#struct){
  3782          }
  3783          #a: ((int|struct)){ |((int){ 2 }, (#struct){
  3784              v: (int){ 1 }
  3785            }) }
  3786        }
  3787        #A: (#struct){
  3788          A: (#struct){
  3789          }
  3790          #a: ((int|struct)){ |((int){ 2 }, (#struct){
  3791              v: (int){ 1 }
  3792            }) }
  3793        }
  3794      }
  3795      counter: (struct){
  3796      }
  3797      nested: (struct){
  3798        t1: ((int|struct)){ |((struct){
  3799            v: (int){ 1 }
  3800          }, (int){ 2 }, (int){ 3 }) }
  3801        t2: ((int|struct)){ |((struct){
  3802            v: (int){ 1 }
  3803          }, (int){ 2 }) }
  3804      }
  3805    }
  3806    issue3784: (struct){
  3807      reduced: (struct){
  3808        #Schema: (#struct){
  3809          a: (#struct){ |((#struct){
  3810              kind: (string){ "A" }
  3811              b: (#struct){
  3812                c?: (string){ string }
  3813              }
  3814            }, (#struct){
  3815              kind: (string){ "B" }
  3816            }) }
  3817        }
  3818        out: (#struct){
  3819          a: (#struct){
  3820            kind: (string){ "A" }
  3821            b: (#struct){
  3822              c: (string){ "x" }
  3823            }
  3824          }
  3825        }
  3826      }
  3827      full: (struct){
  3828        #Schema: (#struct){
  3829          pages?: (#struct){ |((#struct){
  3830              build_type!: (string){ "legacy" }
  3831              source!: (#struct){
  3832                branch!: (string){ string }
  3833                path?: (string){ string }
  3834              }
  3835              cname?: (string){ string }
  3836            }, (#struct){
  3837              build_type!: (string){ "workflow" }
  3838              source?: (#struct){
  3839                branch?: (string){ string }
  3840                path?: (string){ string }
  3841              }
  3842              cname?: (string){ string }
  3843            }) }
  3844        }
  3845        out: (#struct){
  3846          pages: (#struct){
  3847            build_type: (string){ "legacy" }
  3848            source: (#struct){
  3849              branch: (string){ "main" }
  3850              path: (string){ "/" }
  3851            }
  3852            cname: (string){ "foo.com" }
  3853          }
  3854        }
  3855      }
  3856      variant1: (struct){
  3857        #Schema: (#struct){
  3858          pages: (#struct){
  3859            build_type!: (string){ "legacy" }
  3860            source: (#struct){
  3861              branch!: (string){ string }
  3862              path?: (string){ string }
  3863            }
  3864            cname?: (string){ string }
  3865          }
  3866        }
  3867      }
  3868      variant2: (struct){
  3869        #Schema: (#struct){ |((#struct){
  3870            build_type!: (string){ "legacy" }
  3871            source!: (#struct){
  3872              branch!: (_){ _ }
  3873            }
  3874          }, (#struct){
  3875            build_type!: (string){ "workflow" }
  3876            cname?: (_){ _ }
  3877          }) }
  3878        a: (#struct){
  3879          build_type!: (string){ "legacy" }
  3880          source: (#struct){
  3881            branch!: (string){ string }
  3882            path?: (string){ string }
  3883          }
  3884          cname?: (string){ string }
  3885        }
  3886      }
  3887    }
  3888    issue770: (struct){
  3889      #A: (#struct){
  3890        v: (string){ |((string){ "a" }, (string){ "b" }, (string){ "c" }) }
  3891      }
  3892      h: (struct){
  3893        a: (#struct){
  3894          v: (string){ |(*(string){ "a" }, (string){ "b" }, (string){ "c" }) }
  3895        }
  3896        b: (#struct){
  3897          v: (string){ |(*(string){ "a" }, (string){ "b" }, (string){ "c" }) }
  3898        }
  3899        boo: (#struct){
  3900          v: (string){ |(*(string){ "a" }, (string){ "b" }, (string){ "c" }) }
  3901        }
  3902        c: (#struct){
  3903          v: (string){ |(*(string){ "a" }, *(string){ "b" }, *(string){ "c" }) }
  3904        }
  3905        coo: (#struct){
  3906          v: (string){ |(*(string){ "a" }, *(string){ "b" }, *(string){ "c" }) }
  3907        }
  3908      }
  3909    }
  3910  }
  3911  -- out/compile --
  3912  --- in.cue
  3913  {
  3914    disambiguateClosed: {
  3915      b: (〈0;#Def〉 & 〈0;a〉)
  3916      a: 〈0;#Def〉
  3917      #Def: {
  3918        ({
  3919          x: true
  3920        }|{
  3921          y: true
  3922        })
  3923      }
  3924    }
  3925    alwaysCheckMatchers1: {
  3926      b: ({
  3927        [=~"^xxxx$"]: int
  3928      }|null)
  3929      b: ({
  3930        c: string
  3931      }|null)
  3932      b: {
  3933        c: "yyyyy"
  3934      }
  3935    }
  3936    alwaysCheckPatterns2: {
  3937      a: 〈0;#X〉
  3938      a: 〈0;b〉
  3939      b: 〈0;#X〉
  3940      b: {
  3941        c: "yyyyy"
  3942      }
  3943      #X: (string|{
  3944        c: string
  3945        {
  3946          [=~"^xxxx$"]: int
  3947        }
  3948      })
  3949    }
  3950    nestedNonMonotonic: {
  3951      resolved: {
  3952        n1: {
  3953          x: ({
  3954            a: 〈import;struct〉.MinFields(2)
  3955          }|null)
  3956          x: ({
  3957            a: {
  3958              c: 1
  3959            }
  3960          }|null)
  3961          x: ({
  3962            a: {
  3963              d: 1
  3964            }
  3965          }|null)
  3966        }
  3967      }
  3968    }
  3969    nestedNonMonotonic: {
  3970      resolved: {
  3971        n2: {
  3972          x: ({
  3973            a: {
  3974              b: 〈import;struct〉.MinFields(2)
  3975            }
  3976          }|null)
  3977          x: ({
  3978            a: {
  3979              b: {
  3980                c: 1
  3981              }
  3982            }
  3983          }|null)
  3984          x: ({
  3985            a: {
  3986              b: {
  3987                d: 1
  3988              }
  3989            }
  3990          }|null)
  3991        }
  3992      }
  3993    }
  3994    nestedNonMonotonic: {
  3995      eliminated: {
  3996        n1: {
  3997          p1: {
  3998            x: ({
  3999              a: 〈import;struct〉.MaxFields(1)
  4000            }|null)
  4001            x: ({
  4002              a: {
  4003                c: 1
  4004              }
  4005            }|null)
  4006            x: ({
  4007              a: {
  4008                d: 1
  4009              }
  4010            }|null)
  4011          }
  4012        }
  4013      }
  4014    }
  4015    nestedNonMonotonic: {
  4016      eliminated: {
  4017        n1: {
  4018          p2: {
  4019            x: ({
  4020              a: {
  4021                c: 1
  4022              }
  4023            }|null)
  4024            x: ({
  4025              a: 〈import;struct〉.MaxFields(1)
  4026            }|null)
  4027            x: ({
  4028              a: {
  4029                d: 1
  4030              }
  4031            }|null)
  4032          }
  4033        }
  4034      }
  4035    }
  4036    nestedNonMonotonic: {
  4037      eliminated: {
  4038        n1: {
  4039          p2: {
  4040            x: ({
  4041              a: {
  4042                c: 1
  4043              }
  4044            }|null)
  4045            x: ({
  4046              a: {
  4047                d: 1
  4048              }
  4049            }|null)
  4050            x: ({
  4051              a: 〈import;struct〉.MaxFields(1)
  4052            }|null)
  4053          }
  4054        }
  4055      }
  4056    }
  4057    nestedNonMonotonic: {
  4058      eliminated: {
  4059        n2: {
  4060          p1: {
  4061            x: ({
  4062              a: {
  4063                b: 〈import;struct〉.MaxFields(1)
  4064              }
  4065            }|null)
  4066            x: ({
  4067              a: {
  4068                b: {
  4069                  c: 1
  4070                }
  4071              }
  4072            }|null)
  4073            x: ({
  4074              a: {
  4075                b: {
  4076                  d: 1
  4077                }
  4078              }
  4079            }|null)
  4080          }
  4081        }
  4082      }
  4083    }
  4084    nestedNonMonotonic: {
  4085      eliminated: {
  4086        n2: {
  4087          p2: {
  4088            x: ({
  4089              a: {
  4090                b: {
  4091                  c: 1
  4092                }
  4093              }
  4094            }|null)
  4095            x: ({
  4096              a: {
  4097                b: 〈import;struct〉.MaxFields(1)
  4098              }
  4099            }|null)
  4100            x: ({
  4101              a: {
  4102                b: {
  4103                  d: 1
  4104                }
  4105              }
  4106            }|null)
  4107          }
  4108        }
  4109      }
  4110    }
  4111    nestedNonMonotonic: {
  4112      eliminated: {
  4113        n2: {
  4114          p2: {
  4115            x: ({
  4116              a: {
  4117                b: {
  4118                  c: 1
  4119                }
  4120              }
  4121            }|null)
  4122            x: ({
  4123              a: {
  4124                b: {
  4125                  d: 1
  4126                }
  4127              }
  4128            }|null)
  4129            x: ({
  4130              a: {
  4131                b: 〈import;struct〉.MaxFields(1)
  4132              }
  4133            }|null)
  4134          }
  4135        }
  4136      }
  4137    }
  4138    nestedNonMonotonic: {
  4139      incomplete: {
  4140        a: {
  4141          n1: {
  4142            p1: {
  4143              x: ({
  4144                a: 〈import;struct〉.MinFields(2)
  4145              }|null)
  4146              x: ({
  4147                a: {
  4148                  c: 1
  4149                }
  4150              }|null)
  4151            }
  4152          }
  4153        }
  4154      }
  4155    }
  4156    nestedNonMonotonic: {
  4157      incomplete: {
  4158        a: {
  4159          n1: {
  4160            p2: {
  4161              x: ({
  4162                a: {
  4163                  c: 1
  4164                }
  4165              }|null)
  4166              x: ({
  4167                a: 〈import;struct〉.MinFields(2)
  4168              }|null)
  4169            }
  4170          }
  4171        }
  4172      }
  4173    }
  4174    nestedNonMonotonic: {
  4175      incomplete: {
  4176        a: {
  4177          n2: {
  4178            p1: {
  4179              x: ({
  4180                a: {
  4181                  b: 〈import;struct〉.MinFields(2)
  4182                }
  4183              }|null)
  4184              x: ({
  4185                a: {
  4186                  b: {
  4187                    c: 1
  4188                  }
  4189                }
  4190              }|null)
  4191            }
  4192          }
  4193        }
  4194      }
  4195    }
  4196    nestedNonMonotonic: {
  4197      incomplete: {
  4198        a: {
  4199          n2: {
  4200            p2: {
  4201              x: ({
  4202                a: {
  4203                  b: {
  4204                    c: 1
  4205                  }
  4206                }
  4207              }|null)
  4208              x: ({
  4209                a: {
  4210                  b: 〈import;struct〉.MinFields(2)
  4211                }
  4212              }|null)
  4213            }
  4214          }
  4215        }
  4216      }
  4217    }
  4218    nestedNonMonotonic: {
  4219      incomplete: {
  4220        b: {
  4221          n1: {
  4222            p1: {
  4223              x: ({
  4224                a: 〈import;struct〉.MinFields(3)
  4225              }|null)
  4226              x: ({
  4227                a: {
  4228                  c: 1
  4229                }
  4230              }|null)
  4231              x: ({
  4232                a: {
  4233                  d: 1
  4234                }
  4235              }|null)
  4236            }
  4237          }
  4238        }
  4239      }
  4240    }
  4241    nestedNonMonotonic: {
  4242      incomplete: {
  4243        b: {
  4244          n1: {
  4245            p2: {
  4246              x: ({
  4247                a: {
  4248                  c: 1
  4249                }
  4250              }|null)
  4251              x: ({
  4252                a: 〈import;struct〉.MinFields(3)
  4253              }|null)
  4254              x: ({
  4255                a: {
  4256                  d: 1
  4257                }
  4258              }|null)
  4259            }
  4260          }
  4261        }
  4262      }
  4263    }
  4264    nestedNonMonotonic: {
  4265      incomplete: {
  4266        b: {
  4267          n1: {
  4268            p3: {
  4269              x: ({
  4270                a: {
  4271                  c: 1
  4272                }
  4273              }|null)
  4274              x: ({
  4275                a: {
  4276                  d: 1
  4277                }
  4278              }|null)
  4279              x: ({
  4280                a: 〈import;struct〉.MinFields(3)
  4281              }|null)
  4282            }
  4283          }
  4284        }
  4285      }
  4286    }
  4287    nestedNonMonotonic: {
  4288      incomplete: {
  4289        b: {
  4290          n2: {
  4291            p1: {
  4292              x: ({
  4293                a: {
  4294                  b: 〈import;struct〉.MinFields(3)
  4295                }
  4296              }|null)
  4297              x: ({
  4298                a: {
  4299                  b: {
  4300                    c: 1
  4301                  }
  4302                }
  4303              }|null)
  4304              x: ({
  4305                a: {
  4306                  b: {
  4307                    d: 1
  4308                  }
  4309                }
  4310              }|null)
  4311            }
  4312          }
  4313        }
  4314      }
  4315    }
  4316    nestedNonMonotonic: {
  4317      incomplete: {
  4318        b: {
  4319          n2: {
  4320            p1: {
  4321              x: ({
  4322                a: {
  4323                  b: {
  4324                    c: 1
  4325                  }
  4326                }
  4327              }|null)
  4328              x: ({
  4329                a: {
  4330                  b: 〈import;struct〉.MinFields(3)
  4331                }
  4332              }|null)
  4333              x: ({
  4334                a: {
  4335                  b: {
  4336                    d: 1
  4337                  }
  4338                }
  4339              }|null)
  4340            }
  4341          }
  4342        }
  4343      }
  4344    }
  4345    nestedNonMonotonic: {
  4346      incomplete: {
  4347        b: {
  4348          n2: {
  4349            p1: {
  4350              x: ({
  4351                a: {
  4352                  b: {
  4353                    c: 1
  4354                  }
  4355                }
  4356              }|null)
  4357              x: ({
  4358                a: {
  4359                  b: {
  4360                    d: 1
  4361                  }
  4362                }
  4363              }|null)
  4364              x: ({
  4365                a: {
  4366                  b: 〈import;struct〉.MinFields(3)
  4367                }
  4368              }|null)
  4369            }
  4370          }
  4371        }
  4372      }
  4373    }
  4374    preserveClosedness: {
  4375      small: {
  4376        p1: {
  4377          #A: (〈0;#B〉 & {
  4378            a: string
  4379          })
  4380          #B: {
  4381            (*{}|{
  4382              a: string
  4383            })
  4384            (*{}|{
  4385              b: int
  4386            })
  4387          }
  4388        }
  4389      }
  4390    }
  4391    preserveClosedness: {
  4392      small: {
  4393        p2: {
  4394          #A: (〈0;#B〉 & {
  4395            a: string
  4396          })
  4397          #B: {
  4398            ({
  4399              a: string
  4400            }|*{})
  4401            (*{}|{
  4402              b: int
  4403            })
  4404          }
  4405        }
  4406      }
  4407    }
  4408    preserveClosedness: {
  4409      medium: {
  4410        p1: {
  4411          #A: (〈0;#B〉 & {
  4412            a: string
  4413          })
  4414          #B: {
  4415            (*{}|{
  4416              a: string
  4417            }|{
  4418              b: string
  4419            })
  4420            (*{}|{
  4421              c: int
  4422            }|{
  4423              d: string
  4424            })
  4425          }
  4426        }
  4427      }
  4428    }
  4429    preserveClosedness: {
  4430      medium: {
  4431        p2: {
  4432          #A: (〈0;#B〉 & {
  4433            a: string
  4434          })
  4435          #B: {
  4436            ({
  4437              a: string
  4438            }|*{}|{
  4439              b: string
  4440            })
  4441            (*{}|{
  4442              c: int
  4443            }|{
  4444              d: string
  4445            })
  4446          }
  4447        }
  4448      }
  4449    }
  4450    preserveClosedness: {
  4451      medium: {
  4452        p3: {
  4453          #A: (〈0;#B〉 & {
  4454            a: string
  4455          })
  4456          #B: {
  4457            ({
  4458              a: string
  4459            }|{
  4460              b: string
  4461            }|*{})
  4462            (*{}|{
  4463              c: int
  4464            }|{
  4465              d: string
  4466            })
  4467          }
  4468        }
  4469      }
  4470    }
  4471    noChildError: _
  4472    noChildError: {
  4473      issue1608: {
  4474        myValue: (〈0;#type〉 & {
  4475          fieldName: "some string"
  4476        })
  4477        #type: {
  4478          fieldName: 〈1;#subtype〉
  4479        }
  4480        #subtype: (string|{
  4481          foo: string
  4482        }|{
  4483          bar: 〈1;#subtype〉
  4484        })
  4485      }
  4486    }
  4487    noChildError: {
  4488      t1: {
  4489        #D: ({
  4490          b: string
  4491        }|{
  4492          c: 〈1;#D〉
  4493        })
  4494        o: (〈0;#D〉 & {
  4495          b: "test"
  4496        })
  4497      }
  4498    }
  4499    noChildError: {
  4500      t2: {
  4501        o: (〈0;#D〉 & {
  4502          b: "test"
  4503        })
  4504        #D: ({
  4505          b: string
  4506        }|{
  4507          c: 〈1;#D〉
  4508        })
  4509      }
  4510    }
  4511    noChildError: {
  4512      t3: {
  4513        #D: ({
  4514          a: null
  4515        }|{
  4516          b: string
  4517        }|{
  4518          c: 〈1;#D〉
  4519        })
  4520        o: (〈0;#D〉 & {
  4521          b: "test"
  4522        })
  4523      }
  4524    }
  4525    noChildError: {
  4526      t4: {
  4527        o: (〈0;#D〉 & {
  4528          b: "test"
  4529        })
  4530        #D: ({
  4531          a: null
  4532        }|{
  4533          b: string
  4534        }|{
  4535          c: 〈1;#D〉
  4536        })
  4537      }
  4538    }
  4539    issue1924: {
  4540      t1: {
  4541        m: {
  4542          a: 2
  4543        }
  4544        x: (*[
  4545          〈1;m〉.b,
  4546        ]|2)
  4547      }
  4548    }
  4549    issue1924: {
  4550      t2: {
  4551        m: {
  4552          a: 2
  4553        }
  4554        x: (*{
  4555          v: 〈1;m〉.b
  4556        }|3)
  4557      }
  4558    }
  4559    issue1924: {
  4560      t3: {
  4561        m: {
  4562          a: 2
  4563        }
  4564        x: (*〈0;m〉.b|1)
  4565      }
  4566    }
  4567    issue1838: {
  4568      t1: {
  4569        p?: []
  4570        a: ([
  4571          for _, k in 〈1;p〉 {
  4572            〈1;k〉
  4573          },
  4574        ]|null)
  4575      }
  4576    }
  4577    issue1838: {
  4578      t2: {
  4579        p?: []
  4580        a: (null|[
  4581          for _, k in 〈1;p〉 {
  4582            〈1;k〉
  4583          },
  4584        ])
  4585      }
  4586    }
  4587    noHang: {
  4588      #T: ([
  4589        "a",
  4590        〈1;#T〉,
  4591      ]|[
  4592        "d",
  4593        ...〈1;#T〉,
  4594      ])
  4595      x: 〈0;#T〉
  4596      #X: 〈0;x〉
  4597      #X: 〈0;#T〉
  4598    }
  4599    issue1940: {
  4600      #T: ([
  4601        "a",
  4602        〈1;#T〉,
  4603      ]|[
  4604        "b",
  4605        〈1;#T〉,
  4606      ]|[
  4607        "c",
  4608        〈1;#T〉,
  4609      ]|[
  4610        "d",
  4611        [
  4612          ...〈2;#T〉,
  4613        ],
  4614      ])
  4615      #A: {
  4616        type: 〈1;#T〉
  4617      }
  4618      #B: {
  4619        [string]: 〈1;#A〉
  4620      }
  4621      #C: (〈0;#B〉 & {
  4622        x: 〈1;#A〉
  4623      })
  4624    }
  4625  }
  4626  --- issue1417.cue
  4627  {
  4628    issue1417: {
  4629      #ID: (!~"^a"|=~"^ab$"|=~"^aB$")
  4630      #ID: (=~"^a"|!~"[A-Z]")
  4631      ids: ([
  4632        ...〈1;#ID〉,
  4633      ] & [
  4634        "xyz",
  4635        "ab",
  4636        "aB",
  4637      ])
  4638    }
  4639  }
  4640  --- issue2209full.cue
  4641  {
  4642    issue2209: {
  4643      simplified: {
  4644        t1: {
  4645          #SpecFoo: {
  4646            foo: {
  4647              min: 1
  4648            }
  4649          }
  4650          #SpecBar: {
  4651            bar: {
  4652              min: 1
  4653            }
  4654          }
  4655          spec: {
  4656            bar: {}
  4657          }
  4658          spec: (〈0;#SpecFoo〉|〈0;#SpecBar〉)
  4659          out: {
  4660            ({
  4661              nullFoo: null
  4662            }|{
  4663              nullBar: null
  4664            })
  4665            ({
  4666              minFoo: int
  4667            }|{
  4668              minBar: int
  4669            })
  4670            if (〈0;X〉.bar != _|_(explicit error (_|_ literal) in source)) {
  4671              minBar: 〈1;X〉.bar.min
  4672            }
  4673            X: 〈1;spec〉
  4674          }
  4675        }
  4676      }
  4677    }
  4678    issue2209: {
  4679      simplified: {
  4680        t2: {
  4681          #SpecFoo: {
  4682            foo: {}
  4683          }
  4684          #SpecBar: {
  4685            bar: {
  4686              x: 1
  4687            }
  4688          }
  4689          spec: {
  4690            bar: {}
  4691          }
  4692          spec: (*〈0;#SpecFoo〉|〈0;#SpecBar〉)
  4693          if (〈0;spec〉.bar != _|_(explicit error (_|_ literal) in source)) {
  4694            BAZ: 〈1;spec〉.bar.x
  4695          }
  4696          ({
  4697            f1: int
  4698          }|{
  4699            b2: int
  4700          })
  4701          ({
  4702            f2: int
  4703          }|{
  4704            b2: int
  4705          })
  4706        }
  4707      }
  4708    }
  4709    issue2209: {
  4710      simplified: {
  4711        t3: {
  4712          #A: {
  4713            v: 1
  4714          }
  4715          ({
  4716            f1: int
  4717          }|{
  4718            b2: int
  4719          })
  4720          ({
  4721            f2: int
  4722          }|{
  4723            b2: int
  4724          })
  4725          BAZ: 〈0;S〉.y
  4726          S: (*〈0;#A〉|〈0;#B〉)
  4727          #B: {
  4728            x: 1
  4729            y: 1
  4730          }
  4731          S: {
  4732            x: 1
  4733          }
  4734        }
  4735      }
  4736    }
  4737    issue2209: {
  4738      full: {
  4739        Foo: (〈0;#Abstract〉 & {
  4740          spec: {
  4741            foo: {}
  4742          }
  4743        })
  4744        Bar: (〈0;#Abstract〉 & {
  4745          spec: {
  4746            bar: {}
  4747          }
  4748        })
  4749        #Abstract: {
  4750          spec: 〈1;_#Spec〉
  4751          resource: (〈1;_Thing〉 & {
  4752            _X: {
  4753              spec: 〈3〉.spec
  4754            }
  4755          })
  4756        }
  4757        _#Spec: (*〈0;_#SpecFoo〉|〈0;_#SpecBar〉)
  4758        _#SpecFoo: {
  4759          foo: {
  4760            min: (int|*10)
  4761            max: (int|*20)
  4762          }
  4763        }
  4764        _#SpecBar: {
  4765          bar: {
  4766            min: (int|*30)
  4767            max: (int|*40)
  4768          }
  4769        }
  4770        _Thing: (〈0;#Constrained〉 & {
  4771          _X: _
  4772          spec: {
  4773            if (〈1;_X〉.spec.foo != _|_(explicit error (_|_ literal) in source)) {
  4774              minFoo: 〈2;_X〉.spec.foo.min
  4775              maxFoo: 〈2;_X〉.spec.foo.max
  4776            }
  4777            if (〈1;_X〉.spec.bar != _|_(explicit error (_|_ literal) in source)) {
  4778              minBar: 〈2;_X〉.spec.bar.min
  4779              maxBar: 〈2;_X〉.spec.bar.max
  4780            }
  4781          }
  4782        })
  4783        #Constrained: (〈0;#Base〉 & {
  4784          spec: ({
  4785            minFoo: (int|*10)
  4786            maxFoo: (int|*20)
  4787            minBar?: null
  4788            maxBar?: null
  4789          }|{
  4790            minBar: (int|*30)
  4791            maxBar: (int|*40)
  4792            minFoo?: null
  4793            maxFoo?: null
  4794          })
  4795          spec: (*{
  4796            fuga?: null
  4797          }|{
  4798            hoge?: null
  4799          })
  4800        })
  4801        #Base: {
  4802          spec: {
  4803            minFoo?: (null|int)
  4804            maxFoo?: (null|int)
  4805            minBar?: (null|int)
  4806            maxBar?: (null|int)
  4807            hoge?: (null|bool)
  4808            fuga?: (null|bool)
  4809          }
  4810        }
  4811      }
  4812    }
  4813  }
  4814  --- issue2246.cue
  4815  {
  4816    issue2246: {
  4817      simplified: {
  4818        #FormFoo: {
  4819          fooID: string
  4820        }
  4821        #FormBar: {
  4822          barID: string
  4823        }
  4824        #Form: {
  4825          (〈1;#FormFoo〉|〈1;#FormBar〉)
  4826        }
  4827        data: {
  4828          fooID: "123"
  4829        }
  4830        out1: (〈0;#Form〉 & 〈0;data〉)
  4831        out2: (〈0;#Form〉 & 〈0;out1〉)
  4832      }
  4833    }
  4834    issue2246: {
  4835      full: {
  4836        data: {
  4837          forms: [
  4838            {
  4839              fooID: "00-0000001"
  4840            },
  4841          ]
  4842        }
  4843        form1040: (〈0;#compute〉 & {
  4844          in: 〈1;data〉
  4845        }).out
  4846        #K1: {
  4847          #_base: {
  4848            common: 3
  4849          }
  4850          #FormFoo: {
  4851            〈1;#_base〉
  4852            fooID: string
  4853          }
  4854          #FormBar: {
  4855            〈1;#_base〉
  4856            barID: string
  4857          }
  4858          #Form: {
  4859            (〈1;#FormFoo〉|〈1;#FormBar〉)
  4860          }
  4861        }
  4862        #Input: {
  4863          forms: [
  4864            ...〈2;#K1〉.#Form,
  4865          ]
  4866        }
  4867        #summarizeReturn: {
  4868          in: 〈1;#Input〉
  4869          out: [
  4870            for _, k in 〈1;in〉.forms {
  4871              〈1;k〉.common
  4872            },
  4873          ]
  4874        }
  4875        #compute: {
  4876          in: 〈1;#Input〉
  4877          out: (〈1;#summarizeReturn〉 & {
  4878            in: 〈1;in〉
  4879          }).out
  4880        }
  4881      }
  4882    }
  4883  }
  4884  --- issue2263.cue
  4885  {
  4886    issue2263: {
  4887      simplified: {
  4888        metrics: 〈0;#Metric〉
  4889        #Metric: {
  4890          (〈1;#IDSource〉|{})
  4891          (〈1;#TargetAverage〉|{})
  4892        }
  4893        metrics: {
  4894          id: "foo"
  4895          avg: 60
  4896        }
  4897        #IDSource: {
  4898          id: string
  4899        }
  4900        #TargetAverage: {
  4901          avg: number
  4902        }
  4903      }
  4904    }
  4905    issue2263: {
  4906      full: {
  4907        metrics: [
  4908          ...〈1;#Metric〉,
  4909        ]
  4910        metrics: [
  4911          {
  4912            id: "foo"
  4913            avg: 60
  4914          },
  4915          {
  4916            id: "bar"
  4917            value: 80
  4918          },
  4919          {
  4920            uri: "baz"
  4921            avg: 70
  4922          },
  4923          {
  4924            uri: "qux"
  4925            value: 90
  4926          },
  4927        ]
  4928        #Metric: {
  4929          〈1;#Source〉
  4930          〈1;#Target〉
  4931        }
  4932        #Source: (〈0;#IDSource〉|〈0;#URISource〉)
  4933        #Target: (〈0;#TargetAverage〉|〈0;#TargetValue〉)
  4934        #IDSource: {
  4935          id: string
  4936        }
  4937        #URISource: {
  4938          uri: string
  4939        }
  4940        #TargetAverage: {
  4941          avg: number
  4942        }
  4943        #TargetValue: {
  4944          value: number
  4945        }
  4946      }
  4947    }
  4948  }
  4949  --- issue3149.cue
  4950  {
  4951    issue3149: {
  4952      #valid: {
  4953        name!: ((=~"^Foo"|"an exception") & (=~"Foo$"|"an exception"))
  4954      }
  4955      list: [
  4956        ...〈1;#valid〉,
  4957      ]
  4958      list: [
  4959        {
  4960          name: "FooBarFoo"
  4961        },
  4962        {
  4963          name: "FooBazFoo"
  4964        },
  4965        {
  4966          name: "FooQuuxFoo"
  4967        },
  4968        {
  4969          name: "an exception"
  4970        },
  4971      ]
  4972    }
  4973  }
  4974  --- issue3528.cue
  4975  {
  4976    issue3528: {
  4977      original: {
  4978        workflows: [
  4979          ...〈1;#Workflow〉,
  4980        ]
  4981        workflows: [
  4982          〈1;test〉,
  4983        ]
  4984        test: (〈0;#Workflow〉 & {})
  4985        #Workflow: {
  4986          container: {
  4987            [string]: (string|〈1;#container〉)
  4988          }
  4989          #container: (string|{
  4990            volumes?: [
  4991              ...string,
  4992            ]
  4993          })
  4994        }
  4995      }
  4996    }
  4997    issue3528: {
  4998      reduced: {
  4999        a?: 〈0;#A〉
  5000        a: (〈0;#A〉 & {})
  5001        #A: {
  5002          A: {
  5003            [string]: (1|〈1;#a〉)
  5004          }
  5005          #a: (2|{
  5006            v: 1
  5007          })
  5008        }
  5009      }
  5010    }
  5011    issue3528: {
  5012      counter: {}
  5013    }
  5014    issue3528: {
  5015      nested: {
  5016        t1: {
  5017          ({
  5018            v: 1
  5019          }|(2|3))
  5020          ({
  5021            v: 1
  5022          }|(2|3))
  5023          ({
  5024            v: 1
  5025          }|(2|3))
  5026          ({
  5027            v: 1
  5028          }|(2|3))
  5029        }
  5030      }
  5031    }
  5032    issue3528: {
  5033      nested: {
  5034        t2: {
  5035          ({
  5036            v: 1
  5037          }|2)
  5038          ({
  5039            v: 1
  5040          }|(2|3))
  5041          ({
  5042            v: 1
  5043          }|2)
  5044          ({
  5045            v: 1
  5046          }|2)
  5047        }
  5048      }
  5049    }
  5050  }
  5051  --- issue3784.cue
  5052  {
  5053    issue3784: {
  5054      reduced: {
  5055        #Schema: {
  5056          a: ({
  5057            kind: "A"
  5058            b: {
  5059              c?: string
  5060            }
  5061            b: {}
  5062          }|{
  5063            kind: "B"
  5064          })
  5065        }
  5066        out: 〈0;#Schema〉
  5067        out: {
  5068          a: {
  5069            kind: "A"
  5070            b: {
  5071              c: "x"
  5072            }
  5073          }
  5074        }
  5075      }
  5076    }
  5077    issue3784: {
  5078      full: {
  5079        #Schema: {
  5080          pages?: {
  5081            build_type?: ("legacy"|"workflow")
  5082            source?: {
  5083              branch?: string
  5084              path?: string
  5085            }
  5086            cname?: string
  5087          }
  5088          pages?: ({
  5089            build_type!: "legacy"
  5090            source!: {
  5091              branch!: _
  5092            }
  5093          }|close({
  5094            build_type!: "workflow"
  5095            cname?: _
  5096          }))
  5097        }
  5098        out: (〈0;#Schema〉 & {
  5099          pages: {
  5100            cname: "foo.com"
  5101            build_type: "legacy"
  5102            source: {
  5103              branch: "main"
  5104              path: "/"
  5105            }
  5106          }
  5107        })
  5108      }
  5109    }
  5110    issue3784: {
  5111      variant1: {
  5112        #Schema: {
  5113          pages: {
  5114            build_type?: ("legacy"|"workflow")
  5115            source: {
  5116              branch?: string
  5117              path?: string
  5118            }
  5119            cname?: string
  5120          }
  5121          pages?: ({
  5122            build_type!: "legacy"
  5123            source!: {
  5124              branch!: _
  5125            }
  5126          }|close({
  5127            build_type!: "workflow"
  5128            cname?: _
  5129          }))
  5130        }
  5131      }
  5132    }
  5133    issue3784: {
  5134      variant2: {
  5135        #Schema: ({
  5136          build_type!: "legacy"
  5137          source!: {
  5138            branch!: _
  5139          }
  5140        }|close({
  5141          build_type!: "workflow"
  5142          cname?: _
  5143        }))
  5144        a: 〈0;#Schema〉
  5145        a: {
  5146          build_type?: ("legacy"|"workflow")
  5147          source: {
  5148            branch?: string
  5149            path?: string
  5150          }
  5151          cname?: string
  5152        }
  5153      }
  5154    }
  5155  }
  5156  --- issue770.cue
  5157  {
  5158    issue770: {
  5159      #A: {
  5160        v: ("a"|"b"|"c")
  5161      }
  5162      h: {
  5163        [string]: 〈1;#A〉
  5164      }
  5165      h: {
  5166        a: {
  5167          v: (*"a"|string)
  5168        }
  5169      }
  5170      h: {
  5171        [=~"^b"]: {
  5172          v: (*〈2;h〉.a.v|string)
  5173        }
  5174      }
  5175      h: {
  5176        [=~"^c"]: {
  5177          v: (*〈2;h〉.b.v|string)
  5178        }
  5179      }
  5180      h: {
  5181        b: _
  5182      }
  5183      h: {
  5184        boo: _
  5185      }
  5186      h: {
  5187        c: _
  5188      }
  5189      h: {
  5190        coo: _
  5191      }
  5192    }
  5193  }