Description: Fix compatibility with liquid 5.5.0
 Make ParseContext#parse_expression accept extra arguments that started
 being passed in liquid >= 5.5.0 (safe flag / parser context).
 Also update the invalid UTF-8 test to expect TemplateEncodingError instead
 of ArgumentError, which has been the behavior since liquid 5.5.0.
Author: Simon Quigley <tsimonq2@debian.org>
Origin: vendor
Forwarded: not-needed
Last-Update: 2026-03-16
---
This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
--- a/lib/liquid/c.rb
+++ b/lib/liquid/c.rb
@@ -84,7 +84,7 @@ Liquid::ParseContext.class_eval do
     ruby_new_tokenizer(source, start_line_number: start_line_number, for_liquid_tag: for_liquid_tag)
   end
 
-  def parse_expression(markup)
+  def parse_expression(markup, *args, **kwargs)
     if liquid_c_nodes_disabled?
       Liquid::Expression.parse(markup)
     else
--- a/test/unit/variable_test.rb
+++ b/test/unit/variable_test.rb
@@ -284,41 +284,15 @@ class VariableTest < Minitest::Test
   end
 
   def test_invalid_utf8_sequence
-    # 2 byte character with 1 byte missing
-    exc = assert_raises(ArgumentError) do
-      variable_strict_parse("\xC0")
-    end
-    assert_equal("invalid byte sequence in UTF-8", exc.message)
-
-    # 3 byte character with 1 byte missing
-    exc = assert_raises(ArgumentError) do
-      variable_strict_parse("\xE0\x01")
-    end
-    assert_equal("invalid byte sequence in UTF-8", exc.message)
-
-    # 3 byte character with 2 byte missing
-    exc = assert_raises(ArgumentError) do
-      variable_strict_parse("\xE0")
-    end
-    assert_equal("invalid byte sequence in UTF-8", exc.message)
-
-    # 4 byte character with 1 byte missing
-    exc = assert_raises(ArgumentError) do
-      variable_strict_parse("\xF0\x01\x01")
-    end
-    assert_equal("invalid byte sequence in UTF-8", exc.message)
-
-    # 4 byte character with 2 byte missing
-    exc = assert_raises(ArgumentError) do
-      variable_strict_parse("\xF0\x01")
-    end
-    assert_equal("invalid byte sequence in UTF-8", exc.message)
+    exc_class = Liquid::VERSION >= Gem::Version.new("5.5.0") ? Liquid::TemplateEncodingError : ArgumentError
+    expected_msg = Liquid::VERSION >= Gem::Version.new("5.5.0") ? "Liquid error: Invalid template encoding" : "invalid byte sequence in UTF-8"
 
-    # 4 byte character with 3 byte missing
-    exc = assert_raises(ArgumentError) do
-      variable_strict_parse("\xF0")
+    ["\xC0", "\xE0\x01", "\xE0", "\xF0\x01\x01", "\xF0\x01", "\xF0"].each do |bad|
+      exc = assert_raises(exc_class) do
+        variable_strict_parse(bad)
+      end
+      assert_equal(expected_msg, exc.message)
     end
-    assert_equal("invalid byte sequence in UTF-8", exc.message)
   end
 
   private
