From: Kresten Krab Thorup Date: Wed, 7 Sep 1994 15:28:04 +0000 (+0000) Subject: (conformsTo:): Change implementati to allways use class to do lookup. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=ad4f2e420b73e2b14b92815d3a69e2a166b2ed7e;p=gcc.git (conformsTo:): Change implementati to allways use class to do lookup. From-SVN: r8030 --- diff --git a/gcc/objc/Object.m b/gcc/objc/Object.m index 040df86126a..1716d1d37c3 100644 --- a/gcc/objc/Object.m +++ b/gcc/objc/Object.m @@ -194,12 +194,17 @@ extern int errno; // Indicates if the receiving class or instance conforms to the given protocol // not usually overridden by subclasses -- (BOOL) conformsTo: (Protocol*)aProtocol +// +// Modified 9/5/94 to always search the class object's protocol list, rather +// than the meta class. + ++ (BOOL) conformsTo: (Protocol*)aProtocol { int i; struct objc_protocol_list* proto_list; + id parent; - for (proto_list = isa->protocols; + for (proto_list = ((Class*)self)->protocols; proto_list; proto_list = proto_list->next) { for (i=0; i < proto_list->count; i++) @@ -209,12 +214,17 @@ extern int errno; } } - if ([self superClass]) - return [[self superClass] conformsTo: aProtocol]; + if (parent = [self superClass]) + return [parent conformsTo: aProtocol]; else return NO; } +- (BOOL) conformsTo: (Protocol*)aProtocol +{ + return [[self class] conformsTo:aProtocol]; +} + - (IMP)methodFor:(SEL)aSel { return (method_get_imp(object_is_instance(self)