If I implement Range#each
like this it works:
def each : Nil
{% if B == Nil %}
{% raise "Can't each beginless range" %}
{% end %}
current = @begin
if current.nil?
raise ArgumentError.new("Can't each beginless range")
end
yield current
{% if E == Nil %}
while true
{{ "yield current" }}
current = current.succ
end
{% else %}
end_value = @end
while end_value.nil? || current < end_value
{{ "yield current" }}
current = current.succ
end
{% end %}
end
But I had to interpolate inside macro, otherwise it complains about abstract stuff, I don’t know why.