Compare commits

...
Author SHA1 Message Date
Charles-P. Clermont 185ad2e510 Fixup parsing of range lookup for weird types
Had a NoMethodError bubble up in the theme-check-language-server because
of a unit test I ran for the prettier plugin.

(true..false) was crashing.

We have a helper... right there for this. So I used it here to turn the
error into an ArgumentError instead. Which should get caught
2022-08-11 11:12:06 -04:00
+14 -16
View File
@@ -8,7 +8,18 @@ module Liquid
if start_obj.respond_to?(:evaluate) || end_obj.respond_to?(:evaluate)
new(start_obj, end_obj)
else
start_obj.to_i..end_obj.to_i
to_integer(start_obj)..to_integer(end_obj)
end
end
def self.to_integer(input)
case input
when Integer
input
when NilClass, String
input.to_i
else
Utils.to_integer(input)
end
end
@@ -20,24 +31,11 @@ module Liquid
end
def evaluate(context)
start_int = to_integer(context.evaluate(@start_obj))
end_int = to_integer(context.evaluate(@end_obj))
start_int = RangeLookup.to_integer(context.evaluate(@start_obj))
end_int = RangeLookup.to_integer(context.evaluate(@end_obj))
start_int..end_int
end
private
def to_integer(input)
case input
when Integer
input
when NilClass, String
input.to_i
else
Utils.to_integer(input)
end
end
class ParseTreeVisitor < Liquid::ParseTreeVisitor
def children
[@node.start_obj, @node.end_obj]