From: "yahonda (Yasuo Honda) via ruby-core" <ruby-core@...> Date: 2024-10-26T03:47:48+00:00 Subject: [ruby-core:119624] [Ruby master Bug#20817] Ruby 3.4.0dev emits `warning: possibly useless use of + in void context` while Ruby 3.3.5 does not Issue #20817 has been updated by yahonda (Yasuo Honda). Using parse.y parser works as Ruby 3.3.5 does. No warnings emitted. ``` $ RUBYOPT=--parser=parse.y ruby -v ruby 3.4.0dev (2024-10-25T11:52:32Z master 9c8c140d73) [x86_64-linux] $ RUBYOPT=--parser=parse.y ruby -w foo.rb lib/file.rb:42:in 'Kernel#eval': (eval at lib/file.rb:42):2: syntax error, unexpected string literal, expecting 'do' or '{' or '(' (SyntaxError) 'abc' + pluralize 'def' ^ from lib/file.rb:42:in 'C#throw_syntax_error' from foo.rb:7:in '<main>' $ ``` ---------------------------------------- Bug #20817: Ruby 3.4.0dev emits `warning: possibly useless use of + in void context` while Ruby 3.3.5 does not https://bugs.ruby-lang.org/issues/20817#change-110244 * Author: yahonda (Yasuo Honda) * Status: Open * ruby -v: ruby 3.4.0dev (2024-10-25T11:52:32Z master 9c8c140d73) +PRISM [x86_64-linux] * Backport: 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN ---------------------------------------- Ruby 3.4.0dev emits `warning: possibly useless use of + in void context` while Ruby 3.3.5 does not This issue is based on Rails Action Pack test case against Ruby 3.4.0dev. Here is the minimum script to reproduce it. ### Steps to reproduce - Create a sample foo.rb file ``` class C class_eval "def throw_syntax_error; eval %( 'abc' + pluralize 'def' ); end", "lib/file.rb", 42 end c = C.new c.throw_syntax_error ``` - Run this foo.rb using Ruby 3.4.0dev ### Expected behavior It should report SyntaxError, but it shoud not emit any warnings as Ruby 3.3.5 does not. ``` $ ruby -v ruby 3.3.5 (2024-09-03 revision ef084cc8f4) [x86_64-linux] $ ruby -w foo.rb lib/file.rb:42:in `eval': (eval at lib/file.rb:42):2: syntax error, unexpected string literal, expecting `do' or '{' or '(' (SyntaxError) 'abc' + pluralize 'def' ^ from lib/file.rb:42:in `throw_syntax_error' from foo.rb:7:in `<main>' ``` ### Actual behavior It reports It should SyntaxError and it emits the `warning: possibly useless use of + in void context` ``` $ ruby -v ruby 3.4.0dev (2024-10-25T11:52:32Z master 9c8c140d73) +PRISM [x86_64-linux] $ ruby -w foo.rb (eval at lib/file.rb:42):2: warning: possibly useless use of + in void context lib/file.rb:42:in 'Kernel#eval': (eval at lib/file.rb:42):2: syntax error found (SyntaxError) 1 | > 2 | 'abc' + pluralize 'def' | ^ unexpected string literal, expecting end-of-input 3 | from lib/file.rb:42:in 'C#throw_syntax_error' from foo.rb:7:in '<main>' $ ``` -- 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/