Fix issues in index-of expression (#1121)

Co-authored-by: Ovidiu Voda <ovi.voda@gmail.com>
Co-authored-by: Bart Louwers <bart@emeel.net>
This commit is contained in:
Siarhei Fedartsou
2023-06-07 15:06:57 +02:00
committed by GitHub
parent 1ec5f44924
commit 5990efbb12
2 changed files with 7 additions and 1 deletions

View File

@@ -11,6 +11,9 @@
[{}, {"properties": {"needle": 7, "hay": [9, 8, 7, 8, 7, 7], "i": 3}}],
[{}, {"properties": {"needle": 9, "hay": [9, 8, 7, 8, 7, 7], "i": 1}}],
[{}, {"properties": {"needle": 8, "hay": [9, 8, 7, 8, 7, 7], "i": 1}}],
[{}, {"properties": {"needle": 8, "hay": [9, 8, 7, 8, 7, 7], "i": -1}}],
[{}, {"properties": {"needle": "foo", "hay": ["foo", "foo"], "i": -100}}],
[{}, {"properties": {"needle": "foo", "hay": "__foo__foo", "i": -100}}],
[{}, {"properties": {"needle": 8, "hay": [9, 8, 7, 8, 7, 7], "i": 10000}}],
[{}, {"properties": {"needle": 8, "hay": [9, 8, 7, 8, 7, 7], "i": "wrong"}}]
],
@@ -35,6 +38,9 @@
4,
-1,
1,
1,
0,
2,
-1,
{
"error": "Expected third argument to be of type number, but found string instead."

View File

@@ -41,7 +41,7 @@ EvaluationResult IndexOf::evaluate(const EvaluationContext &params) const {
return EvaluationError{"Expected third argument to be of type number, but found " +
toString(typeOf(*evaluatedFromIndex)) + " instead."};
}
fromIndexValue = static_cast<size_t>(evaluatedFromIndex->get<double>());
fromIndexValue = static_cast<size_t>(std::max(evaluatedFromIndex->get<double>(), 0.0));
}
return evaluatedInput->match(