| -- in.cue -- |
| package deps |
| |
| a: { |
| #A: { |
| n: string |
| depends_on: [...#AnyA] |
| } |
| |
| #AnyA: { |
| n: string |
| depends_on: [...#AnyA] |
| ... |
| } |
| |
| #A1: { |
| #A |
| x: int |
| y: z: string // Comment to avoid error |
| } |
| |
| #A2: { |
| #A |
| i: string |
| } |
| |
| s: [Name=string]: #AnyA & { n: Name } |
| |
| s: foo: #A1 & { |
| x: 10 |
| y: z: "z" // Comment to avoid error |
| } |
| |
| s: bar: #A2 & { |
| i: "hello bar" |
| depends_on: [s.foo] |
| } |
| } |
| |
| b: { |
| #A: { |
| f: {...} |
| } |
| |
| #A1: { |
| #A |
| // f: {...} // Uncomment to fix |
| } |
| |
| #C: { |
| d: {...} |
| } |
| |
| s: [string]: #A1 |
| |
| s: foo: { |
| f: #C & { |
| d: foo: "bar" |
| } |
| } |
| } |
| -- out/eval -- |
| (struct){ |
| a: (struct){ |
| #A: (#struct){ |
| n: (string){ string } |
| depends_on: (list){ |
| } |
| } |
| #AnyA: (#struct){ |
| n: (string){ string } |
| depends_on: (list){ |
| } |
| } |
| #A1: (#struct){ |
| n: (string){ string } |
| depends_on: (list){ |
| } |
| x: (int){ int } |
| y: (#struct){ |
| z: (string){ string } |
| } |
| } |
| #A2: (#struct){ |
| n: (string){ string } |
| depends_on: (list){ |
| } |
| i: (string){ string } |
| } |
| s: (struct){ |
| foo: (#struct){ |
| n: (string){ "foo" } |
| depends_on: (list){ |
| } |
| x: (int){ 10 } |
| y: (#struct){ |
| z: (string){ "z" } |
| } |
| } |
| bar: (#struct){ |
| n: (string){ "bar" } |
| depends_on: (#list){ |
| 0: (#struct){ |
| n: (string){ "foo" } |
| depends_on: (list){ |
| } |
| x: (int){ 10 } |
| y: (#struct){ |
| z: (string){ "z" } |
| } |
| } |
| } |
| i: (string){ "hello bar" } |
| } |
| } |
| } |
| b: (struct){ |
| #A: (#struct){ |
| f: (#struct){ |
| } |
| } |
| #A1: (#struct){ |
| f: (#struct){ |
| } |
| } |
| #C: (#struct){ |
| d: (#struct){ |
| } |
| } |
| s: (struct){ |
| foo: (#struct){ |
| f: (#struct){ |
| d: (#struct){ |
| foo: (string){ "bar" } |
| } |
| } |
| } |
| } |
| } |
| } |
| -- out/compile -- |
| --- in.cue |
| { |
| a: { |
| #A: { |
| n: string |
| depends_on: [ |
| ...〈1;#AnyA〉, |
| ] |
| } |
| #AnyA: { |
| n: string |
| depends_on: [ |
| ...〈1;#AnyA〉, |
| ] |
| ... |
| } |
| #A1: { |
| 〈1;#A〉 |
| x: int |
| y: { |
| z: string |
| } |
| } |
| #A2: { |
| 〈1;#A〉 |
| i: string |
| } |
| s: { |
| [string]: (〈1;#AnyA〉 & { |
| n: 〈1;-〉 |
| }) |
| } |
| s: { |
| foo: (〈1;#A1〉 & { |
| x: 10 |
| y: { |
| z: "z" |
| } |
| }) |
| } |
| s: { |
| bar: (〈1;#A2〉 & { |
| i: "hello bar" |
| depends_on: [ |
| 〈2;s〉.foo, |
| ] |
| }) |
| } |
| } |
| b: { |
| #A: { |
| f: { |
| ... |
| } |
| } |
| #A1: { |
| 〈1;#A〉 |
| } |
| #C: { |
| d: { |
| ... |
| } |
| } |
| s: { |
| [string]: 〈1;#A1〉 |
| } |
| s: { |
| foo: { |
| f: (〈2;#C〉 & { |
| d: { |
| foo: "bar" |
| } |
| }) |
| } |
| } |
| } |
| } |