# Allow otherField

-- in.cue --
#T: {
	#Schema: [_]: #D
	concrete: #Schema
}
#D: {
	fieldWithDefault: *0 | int
	...
}
s: #T & {
	#Schema: {
		foo: otherField: string
	}
	concrete: foo: otherField: "hello"
}

#Container: {
	Env: [Name=string]: {
			name:  string
			value: string
	}
}
#Deployment: {
        #Containers: [Name=string]: #Container
        containers: [ for c in #Containers { c } ] // Problem is here.
}
Something: {
        #Deployment
        #Containers: {
                // Does not allow entries other than value. Either add ... or embed
                "a thing": Env: foobar: value: "foo"
        }
}
x: Something & #Deployment

-- out/eval --
(struct){
  #T: (#struct){
    #Schema: (#struct){
    }
    concrete: (#struct){
    }
  }
  #D: (#struct){
    fieldWithDefault: (int){ |(*(int){ 0 }, (int){ int }) }
  }
  s: (#struct){
    #Schema: (#struct){
      foo: (#struct){
        otherField: (string){ string }
        fieldWithDefault: (int){ |(*(int){ 0 }, (int){ int }) }
      }
    }
    concrete: (#struct){
      foo: (#struct){
        otherField: (string){ "hello" }
        fieldWithDefault: (int){ |(*(int){ 0 }, (int){ int }) }
      }
    }
  }
  #Container: (#struct){
    Env: (#struct){
    }
  }
  #Deployment: (#struct){
    #Containers: (#struct){
    }
    containers: (#list){
    }
  }
  Something: (#struct){
    #Containers: (#struct){
      "a thing": (#struct){
        Env: (#struct){
          foobar: (#struct){
            value: (string){ "foo" }
            name: (string){ string }
          }
        }
      }
    }
    containers: (#list){
      0: (#struct){
        Env: (#struct){
          foobar: (#struct){
            value: (string){ "foo" }
            name: (string){ string }
          }
        }
      }
    }
  }
  x: (#struct){
    #Containers: (#struct){
      "a thing": (#struct){
        Env: (#struct){
          foobar: (#struct){
            value: (string){ "foo" }
            name: (string){ string }
          }
        }
      }
    }
    containers: (#list){
      0: (#struct){
        Env: (#struct){
          foobar: (#struct){
            value: (string){ "foo" }
            name: (string){ string }
          }
        }
      }
    }
  }
}
-- out/export --
#T: {
	#Schema: [_]: #D
	concrete: #Schema
}
#D: {
	fieldWithDefault: *0 | int
	...
}
s: #T & {
	#Schema: {
		foo: otherField: string
	}
	concrete: foo: otherField: "hello"
}

#Container: {
	Env: [Name=string]: {
		name:  string
		value: string
	}
}
#Deployment: {
	#Containers: [Name=string]: #Container

	containers: [ for c in #Containers {c}] // Problem is here.
}
Something: {
	#Deployment
	#Containers: {
		// Does not allow entries other than value. Either add ... or embed
		"a thing": Env: foobar: value: "foo"
	}
}
x: Something & #Deployment

-- out/compile --
--- in.cue
{
  #T: {
    #Schema: {
      [_]: 〈2;#D〉
    }
    concrete: 〈0;#Schema〉
  }
  #D: {
    fieldWithDefault: (*0|int)
    ...
  }
  s: (〈0;#T〉 & {
    #Schema: {
      foo: {
        otherField: string
      }
    }
    concrete: {
      foo: {
        otherField: "hello"
      }
    }
  })
  #Container: {
    Env: {
      [string]: {
        name: string
        value: string
      }
    }
  }
  #Deployment: {
    #Containers: {
      [string]: 〈2;#Container〉
    }
    containers: [
      for _, c in 〈0;#Containers〉 {
        〈1;c〉
      },
    ]
  }
  Something: {
    〈1;#Deployment〉
    #Containers: {
      "a thing": {
        Env: {
          foobar: {
            value: "foo"
          }
        }
      }
    }
  }
  x: (〈0;Something〉 & 〈0;#Deployment〉)
}
