From: nagachika00@... Date: 2015-05-20T16:24:24+00:00 Subject: [ruby-core:69252] [Ruby trunk - Bug #11096] 'private' access control bypassed when ||= is used Issue #11096 has been updated by Tomoyuki Chikanaga. Backport changed from 2.0.0: DONTNEED, 2.1: DONTNEED, 2.2: REQUIRED to 2.0.0: DONTNEED, 2.1: DONTNEED, 2.2: DONE Backorted into ruby_2_2 branch at r50562. ---------------------------------------- Bug #11096: 'private' access control bypassed when ||= is used https://bugs.ruby-lang.org/issues/11096#change-52506 * Author: Piotr Soko��owski * Status: Closed * Priority: Normal * Assignee: * ruby -v: ruby 2.3.0dev (2015-04-24 trunk 50382) [x86_64-linux] * Backport: 2.0.0: DONTNEED, 2.1: DONTNEED, 2.2: DONE ---------------------------------------- Problematic code ~~~ruby class A def aa self.bb ||= 0 end private def bb 1 end end A.new.aa ~~~ On 2.0 and 2.1 this produces 'NoMethodError: private method `bb' called for'. But since 2.2 this works and return '1'. Checked also on ruby-head from rvm. This is similar #9907 but this allows to execute private methods by pretending that setter might be used. -- https://bugs.ruby-lang.org/