diff --git a/core/expression/src/parser/standard/mod.rs b/core/expression/src/parser/standard/mod.rs index f3335bef..72d77122 100644 --- a/core/expression/src/parser/standard/mod.rs +++ b/core/expression/src/parser/standard/mod.rs @@ -253,7 +253,7 @@ where Arity::Dual => { let arg1 = self.parse_expression(0)?; self.iterator.expect(TokenKind::Operator, Some(&[","]))?; - let arg2 = self.parse_primary_expression()?; + let arg2 = self.parse_expression(0)?; self.iterator.expect(TokenKind::Bracket, Some(&[")"]))?; self.iterator.node(Node::BuiltIn { diff --git a/core/expression/tests/isolate.rs b/core/expression/tests/isolate.rs index 948e8a69..0892eedf 100644 --- a/core/expression/tests/isolate.rs +++ b/core/expression/tests/isolate.rs @@ -519,6 +519,27 @@ fn isolate_standard_test() { }, ]), }, + TestEnv { + env: json!({}), + cases: Vec::from([ + TestCase { + expr: r#"some(['a', 'b'], startsWith('a', #))"#, + result: json!(true), + }, + TestCase { + expr: r#"some(['a', 'b'], startsWith(#, 'a'))"#, + result: json!(true), + }, + TestCase { + expr: r#"some(['a', 'b'], startsWith('c', #))"#, + result: json!(false), + }, + TestCase { + expr: r#"some(['a', 'b'], startsWith(#, 'c'))"#, + result: json!(false), + }, + ]), + }, ]); let isolate = Isolate::default();