Actions
Bug #20649
closedRipper 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
Like0
Like0Like0Like0Like0Like0Like0