In libobjc/: 2011-08-06 Nicola Pero <nicola.pero@meta-innovation.com>
In libobjc/: 2011-08-06 Nicola Pero <nicola.pero@meta-innovation.com> PR libobjc/49882 * class.c (class_getSuperclass): Return the superclass if the class is in construction. * objc/runtime.h (class_getSuperclass): Updated documentation. In gcc/testsuite/: 2011-08-06 Nicola Pero <nicola.pero@meta-innovation.com> PR libobjc/49882 * objc.dg/gnu-api-2-class.m (main): Test class_getSuperclass() with classes that are in construction. From-SVN: r177505
This commit is contained in:
parent
cd7c6bc5bf
commit
3f54203792
@ -1,3 +1,9 @@
|
|||||||
|
2011-08-06 Nicola Pero <nicola.pero@meta-innovation.com>
|
||||||
|
|
||||||
|
PR libobjc/49882
|
||||||
|
* objc.dg/gnu-api-2-class.m (main): Test class_getSuperclass()
|
||||||
|
with classes that are in construction.
|
||||||
|
|
||||||
2011-08-05 Jason Merrill <jason@redhat.com>
|
2011-08-05 Jason Merrill <jason@redhat.com>
|
||||||
|
|
||||||
PR c++/48993
|
PR c++/48993
|
||||||
|
@ -394,6 +394,14 @@ int main(int argc, void **args)
|
|||||||
MySubClass *object = [[MySubClass alloc] init];
|
MySubClass *object = [[MySubClass alloc] init];
|
||||||
if (class_getSuperclass (object_getClass (object)) != objc_getClass ("MyRootClass"))
|
if (class_getSuperclass (object_getClass (object)) != objc_getClass ("MyRootClass"))
|
||||||
abort ();
|
abort ();
|
||||||
|
|
||||||
|
/* Test that it works on a newly created, but not registered, class. */
|
||||||
|
{
|
||||||
|
Class new_class = objc_allocateClassPair (objc_getClass ("MyRootClass"), "MySubClass3", 0);
|
||||||
|
|
||||||
|
if (class_getSuperclass (new_class) != objc_getClass ("MyRootClass"))
|
||||||
|
abort ();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
printf ("Testing class_getVersion ()...\n");
|
printf ("Testing class_getVersion ()...\n");
|
||||||
|
@ -1,3 +1,10 @@
|
|||||||
|
2011-08-06 Nicola Pero <nicola.pero@meta-innovation.com>
|
||||||
|
|
||||||
|
PR libobjc/49882
|
||||||
|
* class.c (class_getSuperclass): Return the superclass if the
|
||||||
|
class is in construction.
|
||||||
|
* objc/runtime.h (class_getSuperclass): Updated documentation.
|
||||||
|
|
||||||
2011-08-05 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
|
2011-08-05 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
|
||||||
|
|
||||||
* Makefile.in (INCLUDES): Search
|
* Makefile.in (INCLUDES): Search
|
||||||
|
@ -923,10 +923,13 @@ class_getSuperclass (Class class_)
|
|||||||
if (class_ == Nil)
|
if (class_ == Nil)
|
||||||
return Nil;
|
return Nil;
|
||||||
|
|
||||||
/* Classes that are in construction are not resolved and can not be
|
/* Classes that are in construction are not resolved, and still have
|
||||||
resolved! */
|
the class name (instead of a class pointer) in the
|
||||||
|
class_->superclass field. In that case we need to lookup the
|
||||||
|
superclass name to return the superclass. We can not resolve the
|
||||||
|
class until it is registered. */
|
||||||
if (CLS_IS_IN_CONSTRUCTION (class_))
|
if (CLS_IS_IN_CONSTRUCTION (class_))
|
||||||
return Nil;
|
return objc_lookUpClass ((const char *)(class_->super_class));
|
||||||
|
|
||||||
/* If the class is not resolved yet, super_class would point to a
|
/* If the class is not resolved yet, super_class would point to a
|
||||||
string (the name of the super class) as opposed to the actual
|
string (the name of the super class) as opposed to the actual
|
||||||
|
@ -497,10 +497,10 @@ objc_EXPORT const char * class_getName (Class class_);
|
|||||||
objc_EXPORT BOOL class_isMetaClass (Class class_);
|
objc_EXPORT BOOL class_isMetaClass (Class class_);
|
||||||
|
|
||||||
/* Return the superclass of 'class_'. If 'class_' is Nil, or it is a
|
/* Return the superclass of 'class_'. If 'class_' is Nil, or it is a
|
||||||
root class, return Nil. If 'class_' is a class being constructed,
|
root class, return Nil. This function also works if 'class_' is a
|
||||||
that is, a class returned by objc_allocateClassPair() but before it
|
class being constructed, that is, a class returned by
|
||||||
has been registered with the runtime using
|
objc_allocateClassPair() but before it has been registered with the
|
||||||
objc_registerClassPair(), return Nil. */
|
runtime using objc_registerClassPair(). */
|
||||||
objc_EXPORT Class class_getSuperclass (Class class_);
|
objc_EXPORT Class class_getSuperclass (Class class_);
|
||||||
|
|
||||||
/* Return the 'version' number of the class, which is an integer that
|
/* Return the 'version' number of the class, which is an integer that
|
||||||
|
Loading…
Reference in New Issue
Block a user