From 68d697d1c52fb6d89cf8ab36629bc11cf3b0c194 Mon Sep 17 00:00:00 2001 From: Tobi Lutke Date: Wed, 11 Mar 2026 10:52:07 -0400 Subject: [PATCH] =?UTF-8?q?Skip=20context.evaluate=20for=20String=20lookup?= =?UTF-8?q?=20keys=20in=20VariableLookup=20=E2=80=94=20avoids=20respond=5F?= =?UTF-8?q?to=3F=20dispatch\n\nResult:=20{"status":"keep","combined=5F?= =?UTF-8?q?=C2=B5s":4103,"parse=5F=C2=B5s":2881,"render=5F=C2=B5s":1222,"a?= =?UTF-8?q?llocations":24881}?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/liquid/variable_lookup.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/liquid/variable_lookup.rb b/lib/liquid/variable_lookup.rb index 2cda166b..f8a37c34 100644 --- a/lib/liquid/variable_lookup.rb +++ b/lib/liquid/variable_lookup.rb @@ -170,7 +170,8 @@ module Liquid object = context.find_variable(name) @lookups.each_index do |i| - key = context.evaluate(@lookups[i]) + lookup = @lookups[i] + key = lookup.instance_of?(String) ? lookup : context.evaluate(lookup) # Cast "key" to its liquid value to enable it to act as a primitive value # Fast path: strings and integers (most common key types) don't need conversion