operator-dot.go: specific *dataCursor case replaced by general ExtIterator

This commit is contained in:
Celestino Amoroso 2024-05-04 00:30:35 +02:00
parent 0dbb0ba515
commit a838361ea8

View File

@ -65,17 +65,27 @@ func evalDot(ctx ExprContext, self *term) (v any, err error) {
err = fmt.Errorf("key %v does not belong to the dictionary", rightValue)
}
}
case *dataCursor:
// case *dataCursor:
// if indexTerm.symbol() == SymIdentifier {
// opName := indexTerm.source()
// if opName == resetName {
// _, err = unboxedValue.Reset()
// } else if opName == cleanName {
// _, err = unboxedValue.Clean()
// } else {
// err = indexTerm.Errorf("iterators do not support command %q", opName)
// }
// v = err == nil
// }
case ExtIterator:
if indexTerm.symbol() == SymIdentifier {
opName := indexTerm.source()
if opName == resetName {
err = unboxedValue.Reset()
} else if opName == cleanName {
err = unboxedValue.Clean()
if unboxedValue.HasOperation(opName) {
v, err = unboxedValue.CallOperation(opName, []any{})
} else {
err = indexTerm.Errorf("iterators do not support command %q", opName)
err = indexTerm.Errorf("this iterator do not support the %q command", opName)
v = false
}
v = err == nil
}
default:
err = self.errIncompatibleTypes(leftValue, rightValue)