# DO NOT EDIT; generated by go run testdata/gen.go
#
#name: dont convert incomplete errors to non-incomplete
#evalFull
-- in.cue --
import "strings"

n1: {min: <max, max: >min}
n2: -num
n3: +num
n4: num + num
n5: num - num
n6: num * num
n7: num / num

b1: !is

s1: "\(str)"
s2: strings.ContainsAny("dd")
s3: strings.ContainsAny(str, "dd")

str: string
num: <4
is:  bool
-- out/def --
import "strings"

n1: {
	min: <max
	max: >min
}
n2:  -num
num: <4
n3:  +num
n4:  num + num
n5:  num - num
n6:  num * num
n7:  num / num
b1:  !is
is:  bool
s1:  "\(str)"
str: string
s2:  strings.ContainsAny("dd")
s3:  strings.ContainsAny(str, "dd")
-- out/legacy-debug --
<0>{n1: <1>{min: <<2>.max, max: ><2>.min}, n2: -<3>.num, num: <4, n3: +<3>.num, n4: (<3>.num + <3>.num), n5: (<3>.num - <3>.num), n6: (<3>.num * <3>.num), n7: (<3>.num / <3>.num), b1: !<3>.is, is: bool, s1: ""+<3>.str+"", str: string, s2: strings.ContainsAny ("dd"), s3: <4>.ContainsAny (<3>.str,"dd")}
-- out/eval --
(struct){
  n1: (struct){
    min: (_|_){
      // [cycle] cycle error
    }
    max: (_|_){
      // [cycle] cycle error
    }
  }
  n2: (_|_){
    // [incomplete] n2: operand num of '-' not concrete (was number):
    //     ./in.cue:4:6
  }
  n3: (_|_){
    // [incomplete] n3: operand num of '+' not concrete (was number):
    //     ./in.cue:5:6
  }
  n4: (_|_){
    // [incomplete] n4: non-concrete value <4 in operand to +:
    //     ./in.cue:6:5
  }
  n5: (_|_){
    // [incomplete] n5: non-concrete value <4 in operand to -:
    //     ./in.cue:7:5
  }
  n6: (_|_){
    // [incomplete] n6: non-concrete value <4 in operand to *:
    //     ./in.cue:8:5
  }
  n7: (_|_){
    // [incomplete] n7: non-concrete value <4 in operand to /:
    //     ./in.cue:9:5
  }
  b1: (_|_){
    // [incomplete] b1: operand is of '!' not concrete (was bool):
    //     ./in.cue:11:6
  }
  s1: (_|_){
    // [incomplete] s1: invalid interpolation: non-concrete value string (type string):
    //     ./in.cue:13:5
  }
  s2: (string){ strings.ContainsAny("dd") }
  s3: (_|_){
    // [incomplete] error in call to strings.ContainsAny: non-concrete value string
  }
  str: (string){ string }
  num: (number){ <4 }
  is: (bool){ bool }
}
-- out/compile --
--- in.cue
{
  n1: {
    min: <〈0;max〉
    max: >〈0;min〉
  }
  n2: -〈0;num〉
  n3: +〈0;num〉
  n4: (〈0;num〉 + 〈0;num〉)
  n5: (〈0;num〉 - 〈0;num〉)
  n6: (〈0;num〉 * 〈0;num〉)
  n7: (〈0;num〉 / 〈0;num〉)
  b1: !〈0;is〉
  s1: "\(〈0;str〉)"
  s2: 〈import;strings〉.ContainsAny("dd")
  s3: 〈import;strings〉.ContainsAny(〈0;str〉, "dd")
  str: string
  num: <4
  is: bool
}
