objc-act.c (build_message_expr): If a class method cannot be found...
2001-09-05 Ziemowit Laski <zlaski@apple.com> * objc/objc-act.c (build_message_expr): If a class method cannot be found, do not issue a warning if a corresponding instance method exists in the root class. 2001-09-05 Ziemowit Laski <zlaski@apple.com> * objc.dg/method-2.m: New. From-SVN: r45428
This commit is contained in:
parent
2d25bf5d52
commit
89fc36051e
|
@ -1,3 +1,9 @@
|
||||||
|
2001-09-05 Ziemowit Laski <zlaski@apple.com>
|
||||||
|
|
||||||
|
* objc/objc-act.c (build_message_expr): If a class method cannot
|
||||||
|
be found, do not issue a warning if a corresponding instance
|
||||||
|
method exists in the root class.
|
||||||
|
|
||||||
2001-09-05 Richard Henderson <rth@redhat.com>
|
2001-09-05 Richard Henderson <rth@redhat.com>
|
||||||
|
|
||||||
* config/alpha/alpha.c (alpha_expand_mov): Initialize temp.
|
* config/alpha/alpha.c (alpha_expand_mov): Initialize temp.
|
||||||
|
|
|
@ -5177,8 +5177,7 @@ build_message_expr (mess)
|
||||||
method_prototype = lookup_class_method_static (iface, sel_name);
|
method_prototype = lookup_class_method_static (iface, sel_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!method_prototype
|
if (!method_prototype)
|
||||||
|| TREE_CODE (method_prototype) != CLASS_METHOD_DECL)
|
|
||||||
{
|
{
|
||||||
warning ("cannot find class (factory) method.");
|
warning ("cannot find class (factory) method.");
|
||||||
warning ("return type for `%s' defaults to id",
|
warning ("return type for `%s' defaults to id",
|
||||||
|
@ -5687,7 +5686,9 @@ lookup_class_method_static (interface, ident)
|
||||||
}
|
}
|
||||||
while (inter);
|
while (inter);
|
||||||
|
|
||||||
/* Simulate wrap around. */
|
/* If no class (factory) method was found, check if an _instance_
|
||||||
|
method of the same name exists in the root class. This is what
|
||||||
|
the Objective-C runtime will do. */
|
||||||
return lookup_instance_method_static (root_inter, ident);
|
return lookup_instance_method_static (root_inter, ident);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,7 @@
|
||||||
|
2001-09-05 Ziemowit Laski <zlaski@apple.com>
|
||||||
|
|
||||||
|
* objc.dg/method-2.m: New.
|
||||||
|
|
||||||
2001-09-04 Nathan Sidwell <nathan@codesourcery.com>
|
2001-09-04 Nathan Sidwell <nathan@codesourcery.com>
|
||||||
|
|
||||||
PR c++/4203
|
PR c++/4203
|
||||||
|
|
|
@ -0,0 +1,31 @@
|
||||||
|
/* Test for lookup of class (factory) methods. */
|
||||||
|
/* Author: Ziemowit Laski <zlaski@apple.com>. */
|
||||||
|
/* { dg-do compile } */
|
||||||
|
|
||||||
|
@interface MyBase
|
||||||
|
- (void) rootInstanceMethod;
|
||||||
|
@end
|
||||||
|
|
||||||
|
@interface MyIntermediate: MyBase
|
||||||
|
@end
|
||||||
|
|
||||||
|
@interface MyDerived: MyIntermediate
|
||||||
|
- (void) instanceMethod;
|
||||||
|
+ (void) classMethod;
|
||||||
|
@end
|
||||||
|
|
||||||
|
@implementation MyDerived
|
||||||
|
- (void) instanceMethod {
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (void) classMethod { /* If a class method is not found, the root */
|
||||||
|
[self rootInstanceMethod]; /* class is searched for an instance method */
|
||||||
|
[MyIntermediate rootInstanceMethod]; /* with the same name. */
|
||||||
|
|
||||||
|
[self instanceMethod]; /* { dg-warning "cannot find class" } */
|
||||||
|
/* { dg-warning "defaults to id" "" { target *-*-* } 25 } */
|
||||||
|
[MyDerived instanceMethod]; /* { dg-warning "cannot find class" } */
|
||||||
|
/* { dg-warning "defaults to id" "" { target *-*-* } 27 } */
|
||||||
|
}
|
||||||
|
@end
|
||||||
|
|
Loading…
Reference in New Issue