1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

Treat :@1, :@@1, @1, and @@1 correctly to check termination

This commit is contained in:
aycabta 2019-05-28 03:23:52 +09:00
parent 7447c7b651
commit 5e275dd2af

View file

@ -136,6 +136,15 @@ class RubyLex
return false
elsif @tokens.size >= 2 and @tokens[-2][1] == :on_kw and (@tokens[-2][2] == 'begin' or @tokens[-2][2] == 'else')
return false
elsif @tokens.size >= 3 and @tokens[-3][1] == :on_symbeg and @tokens[-2][1] == :on_ivar
# This is for :@a or :@1 because :@1 ends with EXPR_FNAME
return false
elsif @tokens.size >= 2 and @tokens[-2][1] == :on_ivar and @tokens[-2][2] =~ /\A@\d+\z/
# This is for @1
return false
elsif @tokens.size >= 2 and @tokens[-2][1] == :on_cvar and @tokens[-1][1] == :on_int
# This is for @@1 or :@@1 and ends with on_int because it's syntax error
return false
elsif !@tokens.empty? and @tokens.last[2] == "\\\n"
return true
elsif @tokens.size >= 2 and @tokens[-2][3].anybits?(continued_bits)
@ -199,6 +208,12 @@ class RubyLex
# example:
# method / f /
return false
when /numbered parameter outside block/
# "numbered parameter outside block"
#
# example:
# :@1
return false
end
ensure
$VERBOSE = verbose