From: "kddnewton (Kevin Newton) via ruby-core" Date: 2024-09-13T15:32:55+00:00 Subject: [ruby-core:119178] [Ruby master Bug#20736] prism emits wrong warnings in syntax-error code Issue #20736 has been updated by kddnewton (Kevin Newton). This is because Prism recovers from the syntax error. For example: ```ruby eval("1; 2; 9a; 3; 4; 5; 9b") ``` with Prism this will give: ``` (eval at test.rb:1):1: warning: possibly useless use of a literal in void context (eval at test.rb:1):1: warning: possibly useless use of a literal in void context (eval at test.rb:1):1: warning: possibly useless use of a literal in void context (eval at test.rb:1):1: warning: possibly useless use of a literal in void context (eval at test.rb:1):1: warning: possibly useless use of a literal in void context (eval at test.rb:1):1: warning: possibly useless use of a literal in void context (eval at test.rb:1):1: warning: possibly useless use of a literal in void context test.rb:1:in 'Kernel#eval': (eval at test.rb:1):1: syntax errors found (SyntaxError) > 1 | 1; 2; 9a; 3; 4; 5; 9b | ^ unexpected local variable or method, expecting end-of-input | ^ unexpected local variable or method, expecting end-of-input from test.rb:1:in '
' ``` with parse.y this will give: ``` (eval at test.rb:1):1: warning: possibly useless use of a literal in void context (eval at test.rb:1):1: warning: possibly useless use of a literal in void context test.rb:1:in 'Kernel#eval': (eval at test.rb:1):1: syntax error, unexpected local variable or method, expecting end-of-input (SyntaxError) 1; 2; 9a; 3; 4; 5; 9b ^ from test.rb:1:in '
' ``` this is because parse.y is not recovering from this error. I would imagine when parse.y _does_ recover from this error, it would have the same behavior. So I'm not sure if this is wrong or not. @mame what do you think? ---------------------------------------- Bug #20736: prism emits wrong warnings in syntax-error code https://bugs.ruby-lang.org/issues/20736#change-109756 * Author: mame (Yusuke Endoh) * Status: Open * Assignee: kddnewton (Kevin Newton) * Backport: 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN ---------------------------------------- ``` $ ./local/bin/ruby -w --parser=parse.y -e 'begin eval("0a"); rescue SyntaxError; end' $ ./local/bin/ruby -w --parser=prism -e 'begin eval("0a"); rescue SyntaxError; end' (eval at -e:1):1: warning: possibly useless use of a literal in void context ``` ``` $ ./local/bin/ruby -w --parser=parse.y -e 'begin eval("+a.0"); rescue SyntaxError; end' $ ./local/bin/ruby -w --parser=prism -e 'begin eval("+a.0"); rescue SyntaxError; end' (eval at -e:1):1: warning: possibly useless use of +@ in void context ``` -- https://bugs.ruby-lang.org/ ______________________________________________ ruby-core mailing list -- ruby-core@ml.ruby-lang.org To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/