blob: 8052ec9171ea8e720761321b42f84572f22b24f1 [file] [log] [blame]
-- in.cue --
a: { b: 2, c: int }
wrongConcreteType: {
if a.b {
2
}
}
wrongType: {
if a.c {
2
}
}
incomplete: {
if a.d {
2
}
}
incomplete: {
list: [1, 2, 3]
for x in list if a.d {
x
}
}
// Issue #809
useDefault: {
a: {
x: *"foo" | string
if x != _|_ {
y: x
}
}
issue809: {
#A: {
a: string
b: *a | string
}
s: [Name=string]: #A & { a: Name }
s: bar: _
foo: [
for _, a in s if a.b != _|_ {a},
]
}
}
-- out/compile --
--- in.cue
{
a: {
b: 2
c: int
}
wrongConcreteType: {
if 1;a〉.b {
2
}
}
wrongType: {
if 1;a〉.c {
2
}
}
incomplete: {
if 1;a〉.d {
2
}
}
incomplete: {
list: [
1,
2,
3,
]
for _, x in 0;list if 2;a〉.d {
1;x
}
}
useDefault: {
a: {
x: (*"foo"|string)
if (〈0;x != _|_(explicit error (_|_ literal) in source)) {
y: 1;x
}
}
issue809: {
#A: {
a: string
b: (*〈0;a〉|string)
}
s: {
[string]: (〈1;#A & {
a: 1;-〉
})
}
s: {
bar: _
}
foo: [
for _, a in 0;s if (〈0;a〉.b != _|_(explicit error (_|_ literal) in source)) {
1;a
},
]
}
}
}
-- out/eval --
Errors:
wrongConcreteType: cannot use 2 (type int) as type bool:
./in.cue:4:2
./in.cue:1:9
wrongType: cannot use int (type int) as type bool:
./in.cue:10:2
Result:
(_|_){
// [eval]
a: (struct){
b: (int){ 2 }
c: (int){ int }
}
wrongConcreteType: (_|_){
// [eval] wrongConcreteType: cannot use 2 (type int) as type bool:
// ./in.cue:4:2
// ./in.cue:1:9
}
wrongType: (_|_){
// [eval] wrongType: cannot use int (type int) as type bool:
// ./in.cue:10:2
}
incomplete: (_|_){
// [incomplete] incomplete: undefined field: d:
// ./in.cue:16:7
// incomplete: undefined field: d:
// ./in.cue:23:21
list: (#list){
0: (int){ 1 }
1: (int){ 2 }
2: (int){ 3 }
}
}
useDefault: (struct){
a: (struct){
x: (string){ |(*(string){ "foo" }, (string){ string }) }
y: (string){ |(*(string){ "foo" }, (string){ string }) }
}
issue809: (struct){
#A: (#struct){
a: (string){ string }
b: (string){ string }
}
s: (struct){
bar: (#struct){
a: (string){ "bar" }
b: (string){ |(*(string){ "bar" }, (string){ string }) }
}
}
foo: (#list){
0: (#struct){
a: (string){ "bar" }
b: (string){ |(*(string){ "bar" }, (string){ string }) }
}
}
}
}
}