From 62877e666c49bad28a0cd3f2fcb6f830aa57750b Mon Sep 17 00:00:00 2001 From: Tobi Lutke Date: Wed, 11 Mar 2026 08:06:23 -0400 Subject: [PATCH] skip filter arg splat for no-arg filters, trim render loop comments --- lib/liquid/block_body.rb | 5 +---- lib/liquid/variable.rb | 8 ++++++-- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/lib/liquid/block_body.rb b/lib/liquid/block_body.rb index f452bc77..54050a01 100644 --- a/lib/liquid/block_body.rb +++ b/lib/liquid/block_body.rb @@ -309,10 +309,7 @@ module Liquid output << node else render_node(context, output, node) - # If we get an Interrupt that means the block must stop processing. An - # Interrupt is any command that stops block execution such as {% break %} - # or {% continue %}. These tags may also occur through Block or Include tags. - break if context.interrupt? # might have happened in a for-block + break if context.interrupt? end idx += 1 diff --git a/lib/liquid/variable.rb b/lib/liquid/variable.rb index 9c1ec6e3..5c3875c3 100644 --- a/lib/liquid/variable.rb +++ b/lib/liquid/variable.rb @@ -254,8 +254,12 @@ module Liquid obj = context.evaluate(@name) @filters.each do |filter_name, filter_args, filter_kwargs| - filter_args = evaluate_filter_expressions(context, filter_args, filter_kwargs) - obj = context.invoke(filter_name, obj, *filter_args) + if filter_args.empty? && !filter_kwargs + obj = context.invoke(filter_name, obj) + else + filter_args = evaluate_filter_expressions(context, filter_args, filter_kwargs) + obj = context.invoke(filter_name, obj, *filter_args) + end end context.apply_global_filter(obj)