Actions
Bug #20649
closedRipper fails to tokenize `def f; (x)::A =`
Bug #20649:
Ripper fails to tokenize `def f; (x)::A =`
Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
ruby 3.4.0dev (2024-07-24T05:44:32Z master e642ddf7ae) [x86_64-linux]
Backport:
Description
Ripper fails to tokenize some dynamic constant assignment syntax error code.
''::A= (x)::A= (x).y::Z= []::A= {}::A= ``::A= //::A= %()::A= in method body seems to fail.
Same for for ''::A in and rescue => ''::A; in method body.
Ripper.tokenize 'def f; (x)::A ='
#=>
/opt/ruby/lib/ruby/3.4.0+0/ripper/lexer.rb:245:in 'Ripper::Lexer#on_error2': undefined method 'pos' for nil (NoMethodError)
@errors.push Elem.new(elem.pos, __callee__, elem.tok, elem.state, mesg)
^^^^
from /opt/ruby/lib/ruby/3.4.0+0/ripper/lexer.rb:176:in 'Ripper#parse'
from /opt/ruby/lib/ruby/3.4.0+0/ripper/lexer.rb:176:in 'Ripper::Lexer#parse'
from /opt/ruby/lib/ruby/3.4.0+0/ripper/lexer.rb:150:in 'Ripper::Lexer#tokenize'
from /opt/ruby/lib/ruby/3.4.0+0/ripper/lexer.rb:26:in 'Ripper.tokenize'
from -e:1:in '<main>'
Actions