[ruby-core:120211] [Ruby master Bug#20817] Ruby 3.4.0dev emits `warning: possibly useless use of + in void context` while Ruby 3.3.5 does not
From:
"mame (Yusuke Endoh) via ruby-core" <ruby-core@...>
Date:
2024-12-12 11:06:05 UTC
List:
ruby-core #120211
Issue #20817 has been updated by mame (Yusuke Endoh).
Status changed from Assigned to Rejected
Discussed at the dev meeting. This incompatibility that a subtle warning is printed when code is a syntax error should be considered minor and acceptable.
If the frequency or volume of the warning is high, or if it is difficult to suppress the warning, or if there are other circumstances that warrant consideration, then this may be reconsidered.
----------------------------------------
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-110974
* Author: yahonda (Yasuo Honda)
* Status: Rejected
* Assignee: prism
* 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/