Commit ad4f2e42 by Kresten Krab Thorup

(conformsTo:): Change implementati to allways use class to do lookup.

From-SVN: r8030
parent decab89e
...@@ -194,12 +194,17 @@ extern int errno; ...@@ -194,12 +194,17 @@ extern int errno;
// Indicates if the receiving class or instance conforms to the given protocol // Indicates if the receiving class or instance conforms to the given protocol
// not usually overridden by subclasses // 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; int i;
struct objc_protocol_list* proto_list; 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) proto_list; proto_list = proto_list->next)
{ {
for (i=0; i < proto_list->count; i++) for (i=0; i < proto_list->count; i++)
...@@ -209,12 +214,17 @@ extern int errno; ...@@ -209,12 +214,17 @@ extern int errno;
} }
} }
if ([self superClass]) if (parent = [self superClass])
return [[self superClass] conformsTo: aProtocol]; return [parent conformsTo: aProtocol];
else else
return NO; return NO;
} }
- (BOOL) conformsTo: (Protocol*)aProtocol
{
return [[self class] conformsTo:aProtocol];
}
- (IMP)methodFor:(SEL)aSel - (IMP)methodFor:(SEL)aSel
{ {
return (method_get_imp(object_is_instance(self) return (method_get_imp(object_is_instance(self)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment