🐡

[Bug #21196] 転送引数を渡すと意図せず private メソッドが呼び出せてしまうバグ報告

に公開

[Bug #21196] Ruby 3.4 ignores visibility when passing arguments using ...

  • 次のように private メソッドに転送引数を渡すとレシーバがあってもエラーにならないバグ報告
class X
  private

  def foo; end
end

def no_error(...)
  X.new.foo(...)
end

def error
  X.new.foo
end

# no error
no_error

# error: 'Object#error': private method 'foo' called for an instance of X (NoMethodError)
error
  • そこまでクリティカルではありませんがうっかり呼び出してしまえるので注意が必要そうですね
  • この不具合は Ruby 3.5-dev でエラーになるように修正済み
GitHubで編集を提案

Discussion