cuelang.org/go@v0.10.1/internal/core/export/testdata/main/shadow.txtar (about)

     1  In this file we test cases where references are shadowed:
     2  - x: x: x
     3  - a newly created dynamic field which ends up shadowing an existing field.
     4  
     5  -- in.cue --
     6  shadowRef: t1: {
     7  	x: "x": x | null
     8  }
     9  
    10  shadowRef: t2: {
    11  	x: "x": "x": x | null
    12  }
    13  
    14  shadowRef: t3: {
    15  	x: "x": x: "x": x | null
    16  }
    17  
    18  shadowRef: t4: {
    19  	X=x: {
    20  		x: X | null
    21  		y: x
    22  	}
    23  }
    24  
    25  shadowRef: t5: {
    26  	X=x: x: X | null
    27  }
    28  
    29  shadowRef: e1: {
    30  	x: "x": x // structural error, but should still print ok.
    31  	x: {}
    32  }
    33  
    34  shadowAlias: t1: {
    35  	y: "outer"
    36  	a: {
    37  		key: "y"
    38  		X=(key): "inner"
    39  
    40  		refs: {
    41  			Z="y": 1
    42  			outer: y
    43  			mid:   X
    44  			inner: Z
    45  
    46  		}
    47  	}
    48  }
    49  
    50  shadowAlias: t2: {
    51  	a: {
    52  		key: "y"
    53  		X=(key): "inner"
    54  
    55  		refs: {
    56  			Z="y": 1
    57  			outer: y
    58  			mid:   X
    59  			inner: Z
    60  
    61  		}
    62  	}
    63  	y: "outer"
    64  }
    65  
    66  shadowField: t1: {
    67  	z: {
    68  		A=b: 0
    69  		d: {
    70  			b: 1
    71  			c: A
    72  		}
    73  	}
    74  }
    75  
    76  shadowField: t2: {
    77  	z: {
    78  		A=b: 0
    79  		d: {
    80  			b: 1
    81  			c: A
    82  		}
    83  	}
    84  	z: d: { A: 1 }
    85  }
    86  
    87  shadowField: t4: {
    88  	merge: {
    89  		z: {
    90  			A=b: 0
    91  			d: {
    92  				b: 1
    93  				c: A
    94  			}
    95  		}
    96  	}
    97  
    98  	merge: {
    99  		z: {
   100  			A=b: 0
   101  			d: {
   102  				b: 1
   103  				c: A
   104  			}
   105  		}
   106  		z: d: { A: 1 }
   107  	}
   108  }
   109  
   110  shadowField: t5: {
   111  	merge: {
   112  		A=b: 0
   113  		d: {
   114  			b: 1
   115  			c: A
   116  		}
   117  	}
   118  	merge: {
   119  		b: 0
   120  		d: b: 1
   121  	}
   122  }
   123  
   124  // TODO: could be simplified to:
   125  // 		A=b: 0
   126  //  	c:   A
   127  // or even
   128  // 		b: 0
   129  //  	c: b
   130  shadowField: t6: {
   131  	x: {
   132  		A=b: 0
   133  		c: A
   134  	}
   135  	x: b: 0
   136  }
   137  
   138  shadowField: issue2378: {
   139  	a: {
   140  		A=b: 0
   141  		d: {
   142  			b: 1
   143  			c: A & a.z
   144  		}
   145  	}
   146  }
   147  
   148  -- out/definition --
   149  shadowRef: {
   150  	t1: {
   151  		x_1=x: {
   152  			x: x_1 | null
   153  		}
   154  	}
   155  	t2: {
   156  		x_5=x: {
   157  			x: {
   158  				x: x_5 | null
   159  			}
   160  		}
   161  	}
   162  	t3: {
   163  		x: {
   164  			x: {
   165  				x_A=x: {
   166  					x: x_A | null
   167  				}
   168  			}
   169  		}
   170  	}
   171  	t4: {
   172  		X=x: {
   173  			x: X | null
   174  			y: x
   175  		}
   176  	}
   177  	t5: {
   178  		X=x: {
   179  			x: X | null
   180  		}
   181  	}
   182  	e1: {
   183  		x_8=x: {
   184  			x: x_8
   185  		}
   186  	}
   187  }
   188  shadowAlias: {
   189  	t1: {
   190  		y: "outer"
   191  		a: {
   192  			key:     "y"
   193  			X=(key): "inner"
   194  			refs: {
   195  				Z="y": 1
   196  				outer: y
   197  				mid:   X
   198  				inner: Z
   199  			}
   200  		}
   201  	}
   202  	t2: {
   203  		a: {
   204  			key:       "y"
   205  			X_1=(key): "inner"
   206  			refs: {
   207  				Z="y": 1
   208  				outer: y
   209  				mid:   X_1
   210  				inner: Z
   211  			}
   212  		}
   213  		y: "outer"
   214  	}
   215  }
   216  shadowField: {
   217  	t1: {
   218  		z: {
   219  			A=b: 0
   220  			d: {
   221  				b: 1
   222  				c: A
   223  			}
   224  		}
   225  	}
   226  	t2: {
   227  		z: {
   228  			{
   229  				A=b: 0
   230  				d: {
   231  					b: 1
   232  					c: A
   233  				}
   234  			}
   235  			d: {
   236  				A: 1
   237  			}
   238  		}
   239  	}
   240  	t4: {
   241  		merge: {
   242  			z: {
   243  				{
   244  					A=b: 0
   245  					d: {
   246  						b: 1
   247  						c: A
   248  					}
   249  				}
   250  				{
   251  					A=b: 0
   252  					d: {
   253  						b: 1
   254  						c: A
   255  					}
   256  				}
   257  				d: {
   258  					A: 1
   259  				}
   260  			}
   261  		}
   262  	}
   263  	t5: {
   264  		merge: {
   265  			{
   266  				A=b: 0
   267  				d: {
   268  					b: 1
   269  					c: A
   270  				}
   271  			}
   272  			b: 0
   273  			d: {
   274  				b: 1
   275  			}
   276  		}
   277  	}
   278  	t6: {
   279  		x: {
   280  			{
   281  				A=b: 0
   282  				c:   A
   283  			}
   284  			b: 0
   285  		}
   286  	}
   287  	issue2378: {
   288  		a: {
   289  			A=b: 0
   290  			d: {
   291  				b: 1
   292  				c: A & a.z
   293  			}
   294  		}
   295  	}
   296  }
   297  -- out/doc --
   298  []
   299  [shadowRef]
   300  [shadowRef t1]
   301  [shadowRef t1 x]
   302  [shadowRef t1 x x]
   303  [shadowRef t2]
   304  [shadowRef t2 x]
   305  [shadowRef t2 x x]
   306  [shadowRef t2 x x x]
   307  [shadowRef t3]
   308  [shadowRef t3 x]
   309  [shadowRef t3 x x]
   310  [shadowRef t3 x x x]
   311  [shadowRef t3 x x x x]
   312  [shadowRef t4]
   313  [shadowRef t4 x]
   314  [shadowRef t4 x x]
   315  [shadowRef t4 x y]
   316  [shadowRef t5]
   317  [shadowRef t5 x]
   318  [shadowRef t5 x x]
   319  [shadowRef e1]
   320  [shadowRef e1 x]
   321  [shadowRef e1 x x]
   322  [shadowAlias]
   323  [shadowAlias t1]
   324  [shadowAlias t1 y]
   325  [shadowAlias t1 a]
   326  [shadowAlias t1 a key]
   327  [shadowAlias t1 a refs]
   328  [shadowAlias t1 a refs y]
   329  [shadowAlias t1 a refs outer]
   330  [shadowAlias t1 a refs mid]
   331  [shadowAlias t1 a refs inner]
   332  [shadowAlias t1 a y]
   333  [shadowAlias t2]
   334  [shadowAlias t2 a]
   335  [shadowAlias t2 a key]
   336  [shadowAlias t2 a refs]
   337  [shadowAlias t2 a refs y]
   338  [shadowAlias t2 a refs outer]
   339  [shadowAlias t2 a refs mid]
   340  [shadowAlias t2 a refs inner]
   341  [shadowAlias t2 a y]
   342  [shadowAlias t2 y]
   343  [shadowField]
   344  [shadowField t1]
   345  [shadowField t1 z]
   346  [shadowField t1 z b]
   347  [shadowField t1 z d]
   348  [shadowField t1 z d b]
   349  [shadowField t1 z d c]
   350  [shadowField t2]
   351  [shadowField t2 z]
   352  [shadowField t2 z b]
   353  [shadowField t2 z d]
   354  [shadowField t2 z d b]
   355  [shadowField t2 z d c]
   356  [shadowField t2 z d A]
   357  [shadowField t4]
   358  [shadowField t4 merge]
   359  [shadowField t4 merge z]
   360  [shadowField t4 merge z b]
   361  [shadowField t4 merge z d]
   362  [shadowField t4 merge z d b]
   363  [shadowField t4 merge z d c]
   364  [shadowField t4 merge z d A]
   365  [shadowField t5]
   366  [shadowField t5 merge]
   367  [shadowField t5 merge b]
   368  [shadowField t5 merge d]
   369  [shadowField t5 merge d b]
   370  [shadowField t5 merge d c]
   371  [shadowField t6]
   372  - TODO: could be simplified to:
   373  		A=b: 0
   374   	c:   A
   375  or even
   376  		b: 0
   377   	c: b
   378  
   379  [shadowField t6 x]
   380  [shadowField t6 x b]
   381  [shadowField t6 x c]
   382  [shadowField issue2378]
   383  [shadowField issue2378 a]
   384  [shadowField issue2378 a b]
   385  [shadowField issue2378 a d]
   386  [shadowField issue2378 a d b]
   387  [shadowField issue2378 a d c]
   388  -- out/value-v3 --
   389  == Simplified
   390  _|_ // shadowRef.e1.x.x: structural cycle
   391  == Raw
   392  _|_ // shadowRef.e1.x.x: structural cycle
   393  == Final
   394  _|_ // shadowRef.e1.x.x: structural cycle
   395  == All
   396  {
   397  	shadowRef: {
   398  		t1: {
   399  			x: {
   400  				x: null
   401  			}
   402  		}
   403  		t2: {
   404  			x: {
   405  				x: {
   406  					x: null
   407  				}
   408  			}
   409  		}
   410  		t3: {
   411  			x: {
   412  				x: {
   413  					x: {
   414  						x: null
   415  					}
   416  				}
   417  			}
   418  		}
   419  		t4: {
   420  			x: {
   421  				x: null
   422  				y: null
   423  			}
   424  		}
   425  		t5: {
   426  			x: {
   427  				x: null
   428  			}
   429  		}
   430  		e1: {
   431  			x: {
   432  				x: _|_ // shadowRef.e1.x.x: structural cycle
   433  			}
   434  		}
   435  	}
   436  	shadowAlias: {
   437  		t1: {
   438  			y: "outer"
   439  			a: {
   440  				key: "y"
   441  				y:   "inner"
   442  				refs: {
   443  					y:     1
   444  					outer: "outer"
   445  					mid:   "inner"
   446  					inner: 1
   447  				}
   448  			}
   449  		}
   450  		t2: {
   451  			a: {
   452  				key: "y"
   453  				y:   "inner"
   454  				refs: {
   455  					y:     1
   456  					outer: "outer"
   457  					mid:   "inner"
   458  					inner: 1
   459  				}
   460  			}
   461  			y: "outer"
   462  		}
   463  	}
   464  	shadowField: {
   465  		t1: {
   466  			z: {
   467  				b: 0
   468  				d: {
   469  					b: 1
   470  					c: 0
   471  				}
   472  			}
   473  		}
   474  		t2: {
   475  			z: {
   476  				b: 0
   477  				d: {
   478  					b: 1
   479  					A: 1
   480  					c: 0
   481  				}
   482  			}
   483  		}
   484  		t4: {
   485  			merge: {
   486  				z: {
   487  					b: 0
   488  					d: {
   489  						b: 1
   490  						A: 1
   491  						c: 0
   492  					}
   493  				}
   494  			}
   495  		}
   496  		t5: {
   497  			merge: {
   498  				b: 0
   499  				d: {
   500  					b: 1
   501  					c: 0
   502  				}
   503  			}
   504  		}
   505  
   506  		// TODO: could be simplified to:
   507  		// 		A=b: 0
   508  		//  	c:   A
   509  		// or even
   510  		// 		b: 0
   511  		//  	c: b
   512  		t6: {
   513  			x: {
   514  				b: 0
   515  				c: 0
   516  			}
   517  		}
   518  		issue2378: {
   519  			a: {
   520  				b: 0
   521  				d: {
   522  					b: 1
   523  					c: A & a.z
   524  				}
   525  			}
   526  		}
   527  	}
   528  }
   529  == Eval
   530  _|_ // shadowRef.e1.x.x: structural cycle
   531  -- diff/-out/value-v3<==>+out/value --
   532  diff old new
   533  --- old
   534  +++ new
   535  @@ -1,9 +1,9 @@
   536   == Simplified
   537  -_|_ // shadowRef.e1.x.x: structural cycle (and 1 more errors)
   538  +_|_ // shadowRef.e1.x.x: structural cycle
   539   == Raw
   540  -_|_ // shadowRef.e1.x.x: structural cycle (and 1 more errors)
   541  +_|_ // shadowRef.e1.x.x: structural cycle
   542   == Final
   543  -_|_ // shadowRef.e1.x.x: structural cycle (and 1 more errors)
   544  +_|_ // shadowRef.e1.x.x: structural cycle
   545   == All
   546   {
   547   	shadowRef: {
   548  @@ -41,7 +41,7 @@
   549   		}
   550   		e1: {
   551   			x: {
   552  -				x: _|_ // shadowRef.e1.x.x: structural cycle (and 1 more errors)
   553  +				x: _|_ // shadowRef.e1.x.x: structural cycle
   554   			}
   555   		}
   556   	}
   557  @@ -139,4 +139,4 @@
   558   	}
   559   }
   560   == Eval
   561  -_|_ // shadowRef.e1.x.x: structural cycle (and 1 more errors)
   562  +_|_ // shadowRef.e1.x.x: structural cycle
   563  -- out/value --
   564  == Simplified
   565  _|_ // shadowRef.e1.x.x: structural cycle (and 1 more errors)
   566  == Raw
   567  _|_ // shadowRef.e1.x.x: structural cycle (and 1 more errors)
   568  == Final
   569  _|_ // shadowRef.e1.x.x: structural cycle (and 1 more errors)
   570  == All
   571  {
   572  	shadowRef: {
   573  		t1: {
   574  			x: {
   575  				x: null
   576  			}
   577  		}
   578  		t2: {
   579  			x: {
   580  				x: {
   581  					x: null
   582  				}
   583  			}
   584  		}
   585  		t3: {
   586  			x: {
   587  				x: {
   588  					x: {
   589  						x: null
   590  					}
   591  				}
   592  			}
   593  		}
   594  		t4: {
   595  			x: {
   596  				x: null
   597  				y: null
   598  			}
   599  		}
   600  		t5: {
   601  			x: {
   602  				x: null
   603  			}
   604  		}
   605  		e1: {
   606  			x: {
   607  				x: _|_ // shadowRef.e1.x.x: structural cycle (and 1 more errors)
   608  			}
   609  		}
   610  	}
   611  	shadowAlias: {
   612  		t1: {
   613  			y: "outer"
   614  			a: {
   615  				key: "y"
   616  				y:   "inner"
   617  				refs: {
   618  					y:     1
   619  					outer: "outer"
   620  					mid:   "inner"
   621  					inner: 1
   622  				}
   623  			}
   624  		}
   625  		t2: {
   626  			a: {
   627  				key: "y"
   628  				y:   "inner"
   629  				refs: {
   630  					y:     1
   631  					outer: "outer"
   632  					mid:   "inner"
   633  					inner: 1
   634  				}
   635  			}
   636  			y: "outer"
   637  		}
   638  	}
   639  	shadowField: {
   640  		t1: {
   641  			z: {
   642  				b: 0
   643  				d: {
   644  					b: 1
   645  					c: 0
   646  				}
   647  			}
   648  		}
   649  		t2: {
   650  			z: {
   651  				b: 0
   652  				d: {
   653  					b: 1
   654  					A: 1
   655  					c: 0
   656  				}
   657  			}
   658  		}
   659  		t4: {
   660  			merge: {
   661  				z: {
   662  					b: 0
   663  					d: {
   664  						b: 1
   665  						A: 1
   666  						c: 0
   667  					}
   668  				}
   669  			}
   670  		}
   671  		t5: {
   672  			merge: {
   673  				b: 0
   674  				d: {
   675  					b: 1
   676  					c: 0
   677  				}
   678  			}
   679  		}
   680  
   681  		// TODO: could be simplified to:
   682  		// 		A=b: 0
   683  		//  	c:   A
   684  		// or even
   685  		// 		b: 0
   686  		//  	c: b
   687  		t6: {
   688  			x: {
   689  				b: 0
   690  				c: 0
   691  			}
   692  		}
   693  		issue2378: {
   694  			a: {
   695  				b: 0
   696  				d: {
   697  					b: 1
   698  					c: A & a.z
   699  				}
   700  			}
   701  		}
   702  	}
   703  }
   704  == Eval
   705  _|_ // shadowRef.e1.x.x: structural cycle (and 1 more errors)