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

     1  -- in.cue --
     2  package deps
     3  
     4  a: {
     5  	#A: {
     6  		n: string
     7  		depends_on: [...#AnyA]
     8  	}
     9  
    10  	#AnyA: {
    11  		n: string
    12  		depends_on: [...#AnyA]
    13  		...
    14  	}
    15  
    16  	#A1: {
    17  		#A
    18  		x: int
    19  		y: z: string // Comment to avoid error
    20  	}
    21  
    22  	#A2: {
    23  		#A
    24  		i: string
    25  	}
    26  
    27  	s: [Name=string]: #AnyA & {n: Name}
    28  
    29  	s: foo: #A1 & {
    30  		x: 10
    31  		y: z: "z" // Comment to avoid error
    32  	}
    33  
    34  	s: bar: #A2 & {
    35  		i: "hello bar"
    36  		depends_on: [s.foo]
    37  	}
    38  }
    39  
    40  b: {
    41  	#A: {
    42  		f: {...}
    43  	}
    44  
    45  	#A1: {
    46  		#A
    47  		// f: {...} // Uncomment to fix
    48  	}
    49  
    50  	#C: {
    51  		d: {...}
    52  	}
    53  
    54  	s: [string]: #A1
    55  
    56  	s: foo: {
    57  		f: #C & {
    58  			d: foo: "bar"
    59  		}
    60  	}
    61  }
    62  -- out/eval --
    63  (struct){
    64    a: (struct){
    65      #A: (#struct){
    66        n: (string){ string }
    67        depends_on: (list){
    68        }
    69      }
    70      #AnyA: (#struct){
    71        n: (string){ string }
    72        depends_on: (list){
    73        }
    74      }
    75      #A1: (#struct){
    76        n: (string){ string }
    77        depends_on: (list){
    78        }
    79        x: (int){ int }
    80        y: (#struct){
    81          z: (string){ string }
    82        }
    83      }
    84      #A2: (#struct){
    85        n: (string){ string }
    86        depends_on: (list){
    87        }
    88        i: (string){ string }
    89      }
    90      s: (struct){
    91        foo: (#struct){
    92          n: (string){ "foo" }
    93          depends_on: (list){
    94          }
    95          x: (int){ 10 }
    96          y: (#struct){
    97            z: (string){ "z" }
    98          }
    99        }
   100        bar: (#struct){
   101          n: (string){ "bar" }
   102          depends_on: (#list){
   103            0: (#struct){
   104              n: (string){ "foo" }
   105              depends_on: (list){
   106              }
   107              x: (int){ 10 }
   108              y: (#struct){
   109                z: (string){ "z" }
   110              }
   111            }
   112          }
   113          i: (string){ "hello bar" }
   114        }
   115      }
   116    }
   117    b: (struct){
   118      #A: (#struct){
   119        f: (#struct){
   120        }
   121      }
   122      #A1: (#struct){
   123        f: (#struct){
   124        }
   125      }
   126      #C: (#struct){
   127        d: (#struct){
   128        }
   129      }
   130      s: (struct){
   131        foo: (#struct){
   132          f: (#struct){
   133            d: (#struct){
   134              foo: (string){ "bar" }
   135            }
   136          }
   137        }
   138      }
   139    }
   140  }
   141  -- out/compile --
   142  --- in.cue
   143  {
   144    a: {
   145      #A: {
   146        n: string
   147        depends_on: [
   148          ...〈2;#AnyA〉,
   149        ]
   150      }
   151      #AnyA: {
   152        n: string
   153        depends_on: [
   154          ...〈2;#AnyA〉,
   155        ]
   156        ...
   157      }
   158      #A1: {
   159        〈1;#A〉
   160        x: int
   161        y: {
   162          z: string
   163        }
   164      }
   165      #A2: {
   166        〈1;#A〉
   167        i: string
   168      }
   169      s: {
   170        [string]: (〈1;#AnyA〉 & {
   171          n: 〈1;-〉
   172        })
   173      }
   174      s: {
   175        foo: (〈1;#A1〉 & {
   176          x: 10
   177          y: {
   178            z: "z"
   179          }
   180        })
   181      }
   182      s: {
   183        bar: (〈1;#A2〉 & {
   184          i: "hello bar"
   185          depends_on: [
   186            〈3;s〉.foo,
   187          ]
   188        })
   189      }
   190    }
   191    b: {
   192      #A: {
   193        f: {
   194          ...
   195        }
   196      }
   197      #A1: {
   198        〈1;#A〉
   199      }
   200      #C: {
   201        d: {
   202          ...
   203        }
   204      }
   205      s: {
   206        [string]: 〈1;#A1〉
   207      }
   208      s: {
   209        foo: {
   210          f: (〈2;#C〉 & {
   211            d: {
   212              foo: "bar"
   213            }
   214          })
   215        }
   216      }
   217    }
   218  }