# 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
    //     ./in.cue:18:6
  }
  n5: (_|_){
    // [incomplete] n5: non-concrete value <4 in operand to -:
    //     ./in.cue:7:5
    //     ./in.cue:18:6
  }
  n6: (_|_){
    // [incomplete] n6: non-concrete value <4 in operand to *:
    //     ./in.cue:8:5
    //     ./in.cue:18:6
  }
  n7: (_|_){
    // [incomplete] n7: non-concrete value <4 in operand to /:
    //     ./in.cue:9:5
    //     ./in.cue:18:6
  }
  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:
    //     ./in.cue:15:5
  }
  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
}
