From: "tenderlovemaking (Aaron Patterson) via ruby-core" Date: 2025-03-21T19:11:05+00:00 Subject: [ruby-core:121434] [Ruby Bug#21196] Ruby 3.4 ignores visibility when passing arguments using `...` Issue #21196 has been updated by tenderlovemaking (Aaron Patterson). I've sent [a PR with a fix](https://github.com/ruby/ruby/pull/12960), but I can't seem to merge it right now. I will get it merged as soon as possible. ---------------------------------------- Bug #21196: Ruby 3.4 ignores visibility when passing arguments using `...` https://bugs.ruby-lang.org/issues/21196#change-112414 * Author: toy (Ivan Kuchin) * Status: Open * Assignee: tenderlovemaking (Aaron Patterson) * ruby -v: ruby 3.4.2 (2025-02-15 revision d2930f8e7a) +PRISM [x86_64-linux] * Backport: 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN, 3.4: REQUIRED ---------------------------------------- If method is passing arguments using `...`, then receiver visibility gets ignored if once called without receiver: ```ruby class A private def foo = :foo def bar = :bar end class B def initialize(o) @o = o end def foo(...) = @o.foo(...) def bar = @o.bar def internal_foo = foo def internal_bar = bar end def try p yield rescue => e p e end ``` If `foo` is called first without receiver through `internal_foo`: ```ruby b = B.new(A.new) try{ b.internal_foo } try{ b.internal_bar } try{ b.foo } try{ b.bar } ``` Visibility of `A#foo` gets ignored: ``` ruby 3.4.2 (2025-02-15 revision d2930f8e7a) +PRISM [x86_64-linux] :foo # :foo # ``` ``` ruby 3.3.7 (2025-01-15 revision be31f993d7) [x86_64-linux] # # # # ``` If `internal_foo` is not called before `foo`: ```ruby b = B.new(A.new) try{ b.foo } try{ b.bar } ``` Visibility of `A#foo` gets checked: ``` ruby 3.4.2 (2025-02-15 revision d2930f8e7a) +PRISM [x86_64-linux] # # ``` ``` ruby 3.3.7 (2025-01-15 revision be31f993d7) [x86_64-linux] # # ``` -- 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/