From: zn@... Date: 2014-09-27T08:34:48+00:00 Subject: [ruby-dev:48580] [ruby-trunk - Bug #10276] nil/true/false に singleton メソッドを定義できてしまう Issue #10276 has been updated by Kazuhiro NISHIYAMA. frozen なオブジェクトに特異クラスが作成できるかどうかも統一されていないようですが、そういうものなのでしょうか? ~~~ >> RUBY_DESCRIPTION => "ruby 2.2.0dev (2014-09-25 trunk 47711) [x86_64-linux]" >> class << :sym; end TypeError: can't define singleton from (irb):2 from /home/kazu/.rbenv/versions/git/bin/irb:11:in `
' >> class << 1; end TypeError: can't define singleton from (irb):3 from /home/kazu/.rbenv/versions/git/bin/irb:11:in `
' >> class << nil; end => nil >> class << Object.new.freeze; end => nil >> ~~~ ---------------------------------------- Bug #10276: nil/true/false に singleton メソッドを定義できてしまう https://bugs.ruby-lang.org/issues/10276#change-49113 * Author: Kazuhiro NISHIYAMA * Status: Open * Priority: Normal * Assignee: * Category: core * Target version: current: 2.2.0 * ruby -v: ruby 2.2.0dev (2014-09-21 trunk 47672) [x86_64-linux] * Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN ---------------------------------------- nil/true/false が frozen object なのに singleton メソッドを定義できてしまいます。 ~~~ % cat /tmp/f.rb def d(o) p o.frozen? def o.m; end rescue p [o, $!] end d(:sym) d(1) d(nil) d(true) d(false) d(Object.new.freeze) % ruby -v /tmp/f.rb ruby 2.2.0dev (2014-09-21 trunk 47672) [x86_64-linux] true [:sym, #] true [1, #] true true true true [#, #] ~~~ -- https://bugs.ruby-lang.org/