[macruby-changes] [615] MacRuby/trunk

source_changes at macosforge.org source_changes at macosforge.org
Tue Sep 23 14:55:00 PDT 2008


Revision: 615
          http://trac.macosforge.org/projects/ruby/changeset/615
Author:   lsansonetti at 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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/macruby-changes/attachments/20080923/760e734a/attachment.html 


More information about the macruby-changes mailing list