Fix in op checker

This commit is contained in:
Anton Medvedev
2023-08-18 14:21:10 +02:00
parent bd4e6b6476
commit bcf49b01ea
2 changed files with 5 additions and 3 deletions
+1 -1
View File
@@ -341,7 +341,7 @@ func (v *visitor) BinaryNode(node *ast.BinaryNode) (reflect.Type, info) {
if l == nil { // It is possible to compare with nil.
return boolType, info{}
}
if !isAny(l) && !isInteger(l) {
if !isAny(l) && !l.AssignableTo(r.Elem()) && !(isInteger(l) && isInteger(r.Elem())) {
return v.error(node, "cannot use %v as type %v in array", l, r.Elem())
}
return boolType, info{}
+4 -2
View File
@@ -55,8 +55,10 @@ var successTests = []string{
"(Any ? 0 : nil) == 0",
"(Any ? nil : nil) == nil",
"!(Any ? Foo : Foo.Bar).Anything",
"Int in ArrayOfFoo",
"Int not in ArrayOfFoo",
"Int in ArrayOfInt",
"Int not in ArrayOfAny",
"String in ArrayOfAny",
"String in ArrayOfString",
"String in Foo",
"String in MapOfFoo",
"String matches 'ok'",