avoid empty array allocation in evaluate_filter_expressions for no-arg filters

This commit is contained in:
Tobi Lutke
2026-04-04 17:33:53 -07:00
committed by Chris Pak
parent 4ff5523713
commit 28f29433e4
+6 -2
View File
@@ -354,15 +354,19 @@ module Liquid
end end
def evaluate_filter_expressions(context, filter_args, filter_kwargs) def evaluate_filter_expressions(context, filter_args, filter_kwargs)
parsed_args = filter_args.map { |expr| context.evaluate(expr) }
if filter_kwargs if filter_kwargs
parsed_args = filter_args.map { |expr| context.evaluate(expr) }
parsed_kwargs = {} parsed_kwargs = {}
filter_kwargs.each do |key, expr| filter_kwargs.each do |key, expr|
parsed_kwargs[key] = context.evaluate(expr) parsed_kwargs[key] = context.evaluate(expr)
end end
parsed_args << parsed_kwargs parsed_args << parsed_kwargs
parsed_args
elsif filter_args.empty?
Const::EMPTY_ARRAY
else
filter_args.map { |expr| context.evaluate(expr) }
end end
parsed_args
end end
class ParseTreeVisitor < Liquid::ParseTreeVisitor class ParseTreeVisitor < Liquid::ParseTreeVisitor