diff options
author | Håvard Pettersen <havardpe@oath.com> | 2022-03-04 09:23:17 +0000 |
---|---|---|
committer | Håvard Pettersen <havardpe@oath.com> | 2022-03-04 09:23:17 +0000 |
commit | 4b91fd0b0f31583ddedd953e0e4857c2c5925f95 (patch) | |
tree | 36b35edb46edf72356bf30dbd4c6fcc3c8737cb5 /eval | |
parent | 18ff89e7c93e4597d9375eb395b694a54c6e342f (diff) |
parse true and false as constant values (1.0/0.0)
Diffstat (limited to 'eval')
-rw-r--r-- | eval/src/tests/eval/function/function_test.cpp | 5 | ||||
-rw-r--r-- | eval/src/vespa/eval/eval/function.cpp | 4 |
2 files changed, 9 insertions, 0 deletions
diff --git a/eval/src/tests/eval/function/function_test.cpp b/eval/src/tests/eval/function/function_test.cpp index 64f9104d0e1..60c4c81f519 100644 --- a/eval/src/tests/eval/function/function_test.cpp +++ b/eval/src/tests/eval/function/function_test.cpp @@ -109,6 +109,11 @@ TEST("require that scientific numbers can be parsed") { EXPECT_EQUAL(3e-7, as_number(*Function::parse(params, "3E-7"))); } +TEST("require that true/false can be parsed") { + EXPECT_EQUAL(1.0, as_number(*Function::parse(params, "true"))); + EXPECT_EQUAL(0.0, as_number(*Function::parse(params, "false"))); +} + TEST("require that number parsing does not eat +/- operators") { EXPECT_EQUAL("(((1+2)+3)+4)", Function::parse(params, "1+2+3+4")->dump()); EXPECT_EQUAL("(((1-2)-3)-4)", Function::parse(params, "1-2-3-4")->dump()); diff --git a/eval/src/vespa/eval/eval/function.cpp b/eval/src/vespa/eval/eval/function.cpp index 0f3294543ca..fd07c891ad5 100644 --- a/eval/src/vespa/eval/eval/function.cpp +++ b/eval/src/vespa/eval/eval/function.cpp @@ -886,6 +886,10 @@ void parse_symbol_or_call(ParseContext &ctx) { ctx.extract_symbol(name, before_name); if (name.empty()) { ctx.fail("missing value"); + } else if (name == "true") { + ctx.push_expression(Node_UP(new nodes::Number(1.0))); + } else if (name == "false") { + ctx.push_expression(Node_UP(new nodes::Number(0.0))); } else { size_t id = ctx.resolve_parameter(name); if (id == Params::UNDEF) { |