...

Text file src/cuelang.org/go/internal/core/export/testdata/main/shadow.txtar

Documentation: cuelang.org/go/internal/core/export/testdata/main

     1In 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 --
     6shadowRef: t1: {
     7	x: "x": x | null
     8}
     9
    10shadowRef: t2: {
    11	x: "x": "x": x | null
    12}
    13
    14shadowRef: t3: {
    15	x: "x": x: "x": x | null
    16}
    17
    18shadowRef: t4: {
    19	X=x: {
    20		x: X | null
    21		y: x
    22	}
    23}
    24
    25shadowRef: t5: {
    26	X=x: x: X | null
    27}
    28
    29shadowRef: e1: {
    30	x: "x": x // structural error, but should still print ok.
    31	x: {}
    32}
    33
    34shadowAlias: 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
    50shadowAlias: 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
    66shadowField: t1: {
    67	z: {
    68		A=b: 0
    69		d: {
    70			b: 1
    71			c: A
    72		}
    73	}
    74}
    75
    76shadowField: t2: {
    77	z: {
    78		A=b: 0
    79		d: {
    80			b: 1
    81			c: A
    82		}
    83	}
    84	z: d: { A: 1 }
    85}
    86
    87shadowField: 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
   110shadowField: 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
   130shadowField: t6: {
   131	x: {
   132		A=b: 0
   133		c: A
   134	}
   135	x: b: 0
   136}
   137
   138shadowField: issue2378: {
   139	a: {
   140		A=b: 0
   141		d: {
   142			b: 1
   143			c: A & a.z
   144		}
   145	}
   146}
   147
   148-- out/definition --
   149shadowRef: {
   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}
   188shadowAlias: {
   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}
   216shadowField: {
   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
   375or 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 --
   389== Simplified
   390_|_ // shadowRef.e1.x.x: structural cycle (and 1 more errors)
   391== Raw
   392_|_ // shadowRef.e1.x.x: structural cycle (and 1 more errors)
   393== Final
   394_|_ // shadowRef.e1.x.x: structural cycle (and 1 more errors)
   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 (and 1 more errors)
   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 (and 1 more errors)

View as plain text