From: Stefan Rusterholz Date: 2007-02-16T08:46:25+09:00 Subject: Oppinions on RCR for dup on immutable classes I'm about to make this RCR and would like to get some oppinions on it in order to make my decision. The questions are: 1) Should I split this RCR up for a) and b)? 2) Should I only submit a single one, if so, which one? 3) Should I submit this RCR at all? 4) Oppinions, suggestions, ideas... everything welcome :) Abstract: Change behaviour of dup in immutable classes. Problem: dup on immutable classes (NilClass, FalseClass, TrueClass, Fixnum, Symbol) raises an Exception. Proposal: a) Remove the dup method from NilClass, FalseClass, TrueClass, Fixnum, Symbol b) Let dup in NilClass, FalseClass, TrueClass, Fixnum, Symbol return self Analysis: This may be a minor glitch in the ruby API, but with the advent or Ruby2 it might be worth changing. a) should only in rare circumstances break existing code as dup for the cases in question already throws an exception and it would only break if the rescue would fail due to the changed exception class. It would restore the behaviour that a class only implements methods it can actually execute, which also means testing via respond_to? is possible. b) would let the immutability of the classes be an implementation detail (which would be consistent with behaviour of other immutable classes like Time e.g.). It shouldn't break existing code as the it is the usual fallback. Implementation: a) [NilClass, FalseClass, TrueClass, Fixnum, Symbol].each { |klass| klass.send(:undef_method, :dup) { self } } b) [NilClass, FalseClass, TrueClass, Fixnum, Symbol].each { |klass| klass.send(:define_method, :dup) { self } } My regards -- Posted via http://www.ruby-forum.com/.