Modified: MacRuby/trunk/objc.m (614 => 615)
--- 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 (614 => 615)
--- 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