mirror of
https://github.com/hanzoai/expr.git
synced 2026-09-24 16:58:58 +00:00
Change slice error message
This commit is contained in:
+20
-17
@@ -356,25 +356,28 @@ func (v *visitor) MemberNode(node *ast.MemberNode) (reflect.Type, info) {
|
||||
func (v *visitor) SliceNode(node *ast.SliceNode) (reflect.Type, info) {
|
||||
t, _ := v.visit(node.Node)
|
||||
|
||||
isIndex := true // TODO: check if it is index or slice
|
||||
|
||||
if isIndex || isString(t) {
|
||||
if node.From != nil {
|
||||
from, _ := v.visit(node.From)
|
||||
if !isInteger(from) {
|
||||
return v.error(node.From, "invalid operation: non-integer slice index %v", from)
|
||||
}
|
||||
}
|
||||
if node.To != nil {
|
||||
to, _ := v.visit(node.To)
|
||||
if !isInteger(to) {
|
||||
return v.error(node.To, "invalid operation: non-integer slice index %v", to)
|
||||
}
|
||||
}
|
||||
return t, info{}
|
||||
switch t.Kind() {
|
||||
case reflect.Interface:
|
||||
// ok
|
||||
case reflect.String, reflect.Array, reflect.Slice:
|
||||
// ok
|
||||
default:
|
||||
return v.error(node, "cannot slice %v", t)
|
||||
}
|
||||
|
||||
return v.error(node, "invalid operation: cannot slice %v", t)
|
||||
if node.From != nil {
|
||||
from, _ := v.visit(node.From)
|
||||
if !isInteger(from) {
|
||||
return v.error(node.From, "non-integer slice index %v", from)
|
||||
}
|
||||
}
|
||||
if node.To != nil {
|
||||
to, _ := v.visit(node.To)
|
||||
if !isInteger(to) {
|
||||
return v.error(node.To, "non-integer slice index %v", to)
|
||||
}
|
||||
}
|
||||
return t, info{}
|
||||
}
|
||||
|
||||
func (v *visitor) CallNode(node *ast.CallNode) (reflect.Type, info) {
|
||||
|
||||
@@ -449,17 +449,17 @@ array elements can only be selected using an integer (got mock.Foo) (1:12)
|
||||
| ...........^
|
||||
|
||||
ArrayOfFoo[Bool:]
|
||||
invalid operation: non-integer slice index bool (1:12)
|
||||
non-integer slice index bool (1:12)
|
||||
| ArrayOfFoo[Bool:]
|
||||
| ...........^
|
||||
|
||||
ArrayOfFoo[1:Bool]
|
||||
invalid operation: non-integer slice index bool (1:14)
|
||||
non-integer slice index bool (1:14)
|
||||
| ArrayOfFoo[1:Bool]
|
||||
| .............^
|
||||
|
||||
Bool[:]
|
||||
invalid operation: cannot slice bool (1:5)
|
||||
cannot slice bool (1:5)
|
||||
| Bool[:]
|
||||
| ....^
|
||||
|
||||
|
||||
Reference in New Issue
Block a user