Project

General

Profile

Actions

Bug #20649

closed

Ripper fails to tokenize `def f; (x)::A =`

Added by tompng (tomoya ishida) 4 months ago. Updated 3 months ago.

Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
ruby 3.4.0dev (2024-07-24T05:44:32Z master e642ddf7ae) [x86_64-linux]
[ruby-core:118676]

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>'

Related issues 1 (0 open1 closed)

Related to Ruby master - Bug #17345: ripper: nothing raised when assigning to keyword variablesClosedActions
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0