eval() returns ( value, isOk, isIdentity )
(arg expr.Node)
| 67 | |
| 68 | // eval() returns ( value, isOk, isIdentity ) |
| 69 | func (m *rewrite) eval(arg expr.Node) (value.Value, bool, bool) { |
| 70 | switch arg := arg.(type) { |
| 71 | case *expr.NumberNode, *expr.StringNode: |
| 72 | val, ok := vm.Eval(nil, arg) |
| 73 | return val, ok, false |
| 74 | case *expr.IdentityNode: |
| 75 | if arg.IsBooleanIdentity() { |
| 76 | return value.NewBoolValue(arg.Bool()), true, false |
| 77 | } |
| 78 | return value.NewStringValue(arg.Text), true, true |
| 79 | case *expr.ArrayNode: |
| 80 | val, ok := vm.Eval(nil, arg) |
| 81 | return val, ok, false |
| 82 | } |
| 83 | return nil, false, false |
| 84 | } |
| 85 | |
| 86 | // Aggregations from the <select_list> |
| 87 | // |
nothing calls this directly
no test coverage detected