Move safe_parse_expression into Parser.expression_node

- Make `Parser` accept the expression cache
- Remove `safe_parse_expression` from `ParseContext`
- Replace all usage of `safe_parse_expression` with `parser.expression_node`
This commit is contained in:
Charles-P. Clermont
2026-01-26 16:52:17 -05:00
parent 851584327a
commit cf3d845315
12 changed files with 66 additions and 49 deletions
+6 -6
View File
@@ -7,7 +7,7 @@ class ParseContextUnitTest < Minitest::Test
def test_safe_parse_expression_with_variable_lookup
parser = parse_context.new_parser('product.title')
result = parse_context.safe_parse_expression(parser)
result = parser.expression_node
assert_instance_of(VariableLookup, result)
assert_equal('product', result.name)
@@ -18,7 +18,7 @@ class ParseContextUnitTest < Minitest::Test
parser = parse_context.new_parser('')
error = assert_raises(Liquid::SyntaxError) do
parse_context.safe_parse_expression(parser)
parser.expression_node
end
assert_match(/is not a valid expression/, error.message)
@@ -56,15 +56,15 @@ class ParseContextUnitTest < Minitest::Test
def test_safe_parse_expression_advances_parser_pointer
parser = parse_context.new_parser('foo, bar')
# safe_parse_expression consumes "foo"
first_result = parse_context.safe_parse_expression(parser)
# parser.expression_node consumes "foo"
first_result = parser.expression_node
assert_instance_of(VariableLookup, first_result)
assert_equal('foo', first_result.name)
parser.consume(:comma)
# safe_parse_expression consumes "bar"
second_result = parse_context.safe_parse_expression(parser)
# parser.expression_node consumes "bar"
second_result = parser.expression_node
assert_instance_of(VariableLookup, second_result)
assert_equal('bar', second_result.name)