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 #1

Updated by nobu (Nobuyoshi Nakada) 4 months ago

  • Related to Bug #17345: ripper: nothing raised when assigning to keyword variables added
Actions #2

Updated by nobu (Nobuyoshi Nakada) 4 months ago

  • Backport changed from 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN to 3.1: REQUIRED, 3.2: REQUIRED, 3.3: REQUIRED
Actions #4

Updated by nobu (Nobuyoshi Nakada) 4 months ago

  • Status changed from Open to Closed

Applied in changeset git|97449338d6cb42d9dd7c9ca61550616e7e6b6ef6.


[Bug #20649] Allow nil as 2nd argument of assign_error

Fallback to the last token element in that case, for the backward
compatibilities.

Updated by nagachika (Tomoyuki Chikanaga) 3 months ago

  • Backport changed from 3.1: REQUIRED, 3.2: REQUIRED, 3.3: REQUIRED to 3.1: REQUIRED, 3.2: DONE, 3.3: REQUIRED

Updated by k0kubun (Takashi Kokubun) 3 months ago

  • Backport changed from 3.1: REQUIRED, 3.2: DONE, 3.3: REQUIRED to 3.1: REQUIRED, 3.2: DONE, 3.3: DONE
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0