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) 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 { if indexTerm.symbol() == SymIdentifier {
opName := indexTerm.source() opName := indexTerm.source()
if opName == resetName { if unboxedValue.HasOperation(opName) {
err = unboxedValue.Reset() v, err = unboxedValue.CallOperation(opName, []any{})
} else if opName == cleanName {
err = unboxedValue.Clean()
} else { } 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: default:
err = self.errIncompatibleTypes(leftValue, rightValue) err = self.errIncompatibleTypes(leftValue, rightValue)