[ruby-core:120476] [Ruby master Bug#21003] unexpected warning about ignored block

Issue #21003 has been reported by decuplet (Nikita Shilnikov). ---------------------------------------- Bug #21003: unexpected warning about ignored block https://bugs.ruby-lang.org/issues/21003 * Author: decuplet (Nikita Shilnikov) * Status: Open * ruby -v: ruby 3.4.1 (2024-12-25 revision 48d4efcb85) +PRISM [arm64-darwin24] * Backport: 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN, 3.4: UNKNOWN ---------------------------------------- I stumbled upon this during the upgrade to 3.4. Here's the minimal repro: ```ruby $VERBOSE = true def foo(*, &block) = block def bar(buz, ...) = foo(buz, ...) bar(:test) {} ``` It gives ``` ruby reproduce.rb reproduce.rb:6: warning: the block passed to 'Object#bar' defined at reproduce.rb:4 may be ignored ``` where I believe it shouldn't. No warning reported if I change `def bar(buz, ...)` to `def bar(...)`. -- https://bugs.ruby-lang.org/

Issue #21003 has been updated by ydah (Yudai Takada). memo) This does not occur even in Ruby 3.4.1 when `--parser=parse.y`. ``` ❯ ruby --parser=parse.y -e '$VERBOSE = true def foo(*, &block) = block def bar(buz, ...) = foo(buz, ...) bar(:test) {}' ~ ❯ ruby --parser=parse.y -v -e '$VERBOSE = true def foo(*, &block) = block def bar(buz, ...) = foo(buz, ...) bar(:test) {}' ruby 3.4.1 (2024-12-25 revision 48d4efcb85) [arm64-darwin23] ``` ---------------------------------------- Bug #21003: unexpected warning about ignored block https://bugs.ruby-lang.org/issues/21003#change-111265 * Author: decuplet (Nikita Shilnikov) * Status: Open * ruby -v: ruby 3.4.1 (2024-12-25 revision 48d4efcb85) +PRISM [arm64-darwin24] * Backport: 3.1: DONTNEED, 3.2: DONTNEED, 3.3: DONTNEED, 3.4: REQUIRED ---------------------------------------- I stumbled upon this during the upgrade to 3.4. Here's the minimal repro: ```ruby $VERBOSE = true def foo(*, &block) = block def bar(buz, ...) = foo(buz, ...) bar(:test) {} ``` It gives ``` ruby reproduce.rb reproduce.rb:6: warning: the block passed to 'Object#bar' defined at reproduce.rb:4 may be ignored ``` where I believe it shouldn't. No warning reported if I change `def bar(buz, ...)` to `def bar(...)`. -- https://bugs.ruby-lang.org/

Issue #21003 has been updated by kddnewton (Kevin Newton). Assignee set to prism ---------------------------------------- Bug #21003: unexpected warning about ignored block https://bugs.ruby-lang.org/issues/21003#change-111271 * Author: decuplet (Nikita Shilnikov) * Status: Open * Assignee: prism * ruby -v: ruby 3.4.1 (2024-12-25 revision 48d4efcb85) +PRISM [arm64-darwin24] * Backport: 3.1: DONTNEED, 3.2: DONTNEED, 3.3: DONTNEED, 3.4: REQUIRED ---------------------------------------- I stumbled upon this during the upgrade to 3.4. Here's the minimal repro: ```ruby $VERBOSE = true def foo(*, &block) = block def bar(buz, ...) = foo(buz, ...) bar(:test) {} ``` It gives ``` ruby reproduce.rb reproduce.rb:6: warning: the block passed to 'Object#bar' defined at reproduce.rb:4 may be ignored ``` where I believe it shouldn't. No warning reported if I change `def bar(buz, ...)` to `def bar(...)`. -- https://bugs.ruby-lang.org/

Issue #21003 has been updated by k0kubun (Takashi Kokubun). Backport changed from 3.1: DONTNEED, 3.2: DONTNEED, 3.3: DONTNEED, 3.4: REQUIRED to 3.1: DONTNEED, 3.2: DONTNEED, 3.3: DONTNEED, 3.4: DONE ruby_3_4 commit:d720ea59ca36f726b8484b3b66e3e2c40784ac89 merged revision(s) commit:2a1cff40f5e7875f69a7d0ed59eab92cc86c65ff. ---------------------------------------- Bug #21003: unexpected warning about ignored block https://bugs.ruby-lang.org/issues/21003#change-111912 * Author: decuplet (Nikita Shilnikov) * Status: Closed * Assignee: prism * ruby -v: ruby 3.4.1 (2024-12-25 revision 48d4efcb85) +PRISM [arm64-darwin24] * Backport: 3.1: DONTNEED, 3.2: DONTNEED, 3.3: DONTNEED, 3.4: DONE ---------------------------------------- I stumbled upon this during the upgrade to 3.4. Here's the minimal repro: ```ruby $VERBOSE = true def foo(*, &block) = block def bar(buz, ...) = foo(buz, ...) bar(:test) {} ``` It gives ``` ruby reproduce.rb reproduce.rb:6: warning: the block passed to 'Object#bar' defined at reproduce.rb:4 may be ignored ``` where I believe it shouldn't. No warning reported if I change `def bar(buz, ...)` to `def bar(...)`. -- https://bugs.ruby-lang.org/
participants (4)
-
decuplet (Nikita Shilnikov)
-
k0kubun (Takashi Kokubun)
-
kddnewton (Kevin Newton)
-
ydah (Yudai Takada)