Revision: 615 http://trac.macosforge.org/projects/ruby/changeset/615 Author: lsansonetti@apple.com Date: 2008-09-23 14:54:59 -0700 (Tue, 23 Sep 2008) Log Message: ----------- make sure #class does not return the CF hidden class for primitive types Modified Paths: -------------- MacRuby/trunk/objc.m MacRuby/trunk/test/ruby/test_objc.rb Modified: MacRuby/trunk/objc.m =================================================================== --- MacRuby/trunk/objc.m 2008-09-23 02:11:48 UTC (rev 614) +++ MacRuby/trunk/objc.m 2008-09-23 21:54:59 UTC (rev 615) @@ -1130,9 +1130,21 @@ /* because Hash.new can accept a block */ return rb_class_new_instance(0, NULL, recv); } - else if (RCLASS_META(klass) && sel == @selector(class)) { - /* because +[NSObject class] returns self */ - return rb_cClass; + else if (sel == @selector(class)) { + if (RCLASS_META(klass)) { + /* because +[NSObject class] returns self */ + return rb_cClass; + } + /* because the CF classes should be hidden */ + else if (klass == rb_cCFString) { + return rb_cNSMutableString; + } + else if (klass == rb_cCFArray) { + return rb_cNSMutableArray; + } + else if (klass == rb_cCFHash) { + return rb_cNSMutableHash; + } } ocrcv = RB2OC(recv); Modified: MacRuby/trunk/test/ruby/test_objc.rb =================================================================== --- MacRuby/trunk/test/ruby/test_objc.rb 2008-09-23 02:11:48 UTC (rev 614) +++ MacRuby/trunk/test/ruby/test_objc.rb 2008-09-23 21:54:59 UTC (rev 615) @@ -90,14 +90,17 @@ assert(o.instance_of?(NSMutableString)) assert(o.instance_of?(String)) assert(o.kind_of?(String)) + assert_equal(String, o.class) o = [42] assert(o.instance_of?(NSMutableArray)) assert(o.instance_of?(Array)) assert(o.kind_of?(Array)) + assert_equal(Array, o.class) o = {42=>42} assert(o.instance_of?(NSMutableDictionary)) assert(o.instance_of?(Hash)) assert(o.kind_of?(Hash)) + assert_equal(Hash, o.class) end class ClassWithNamedArg