mirror of
git://gcc.gnu.org/git/gcc.git
synced 2024-12-21 08:03:41 +08:00
objc-act.c (build_selector_translation_table): Issue warning...
* objc/objc-act.c (build_selector_translation_table): Issue warning, when -Wselector is used,if method for which selector is being created does not exist. Testsuite: *objc.dg/selector-1.m: New test From-SVN: r56142
This commit is contained in:
parent
6fde981568
commit
7b9be5c7cb
@ -1,3 +1,8 @@
|
||||
2002-08-08 Devang Patel <dpatel@apple.com>
|
||||
* objc/objc-act.c (build_selector_translation_table): Issue warning,
|
||||
when -Wselector is used,if method for which selector is being
|
||||
created does not exist.
|
||||
|
||||
2002-08-08 Stephen Clarke <stephen.clarke@superh.com>
|
||||
|
||||
* config/sh/sh.c (prepare_move_operands): Only call
|
||||
|
@ -1886,6 +1886,32 @@ build_selector_translation_table ()
|
||||
{
|
||||
tree expr;
|
||||
|
||||
if (warn_selector && objc_implementation_context)
|
||||
{
|
||||
tree method_chain;
|
||||
bool found = false;
|
||||
for (method_chain = meth_var_names_chain;
|
||||
method_chain;
|
||||
method_chain = TREE_CHAIN (method_chain))
|
||||
{
|
||||
if (TREE_VALUE (method_chain) == TREE_VALUE (chain))
|
||||
{
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!found)
|
||||
{
|
||||
/* Adjust line number for warning message. */
|
||||
int save_lineno = lineno;
|
||||
if (flag_next_runtime && TREE_PURPOSE (chain))
|
||||
lineno = DECL_SOURCE_LINE (TREE_PURPOSE (chain));
|
||||
warning ("creating selector for non existant method %s",
|
||||
IDENTIFIER_POINTER (TREE_VALUE (chain)));
|
||||
lineno = save_lineno;
|
||||
}
|
||||
}
|
||||
|
||||
expr = build_selector (TREE_VALUE (chain));
|
||||
|
||||
if (flag_next_runtime)
|
||||
|
@ -1,3 +1,6 @@
|
||||
2002-08-08 Devang Patel <dpatel@apple.com>
|
||||
*objc.dg/selector-1.m : New test
|
||||
|
||||
2002-08-08 Nathan Sidwell <nathan@codesourcery.com>
|
||||
|
||||
* g++.dg/abi/bitfield4.c: New test.
|
||||
|
26
gcc/testsuite/objc.dg/selector-1.m
Normal file
26
gcc/testsuite/objc.dg/selector-1.m
Normal file
@ -0,0 +1,26 @@
|
||||
/* Test warning for non existing selectors. */
|
||||
/* Contributed by Devang Patel <dpatel@apple.com>. */
|
||||
/* { dg-options "-Wselector -fnext-runtime" } */
|
||||
/* { dg-do compile } */
|
||||
|
||||
typedef struct objc_object { struct objc_class *class_pointer; } *id;
|
||||
typedef struct objc_selector *SEL;
|
||||
|
||||
@interface Foo
|
||||
- (void) foo;
|
||||
- (void) bar;
|
||||
@end
|
||||
|
||||
@implementation Foo
|
||||
- (void) bar
|
||||
{
|
||||
}
|
||||
|
||||
- (void) foo
|
||||
{
|
||||
SEL a,b,c;
|
||||
a = @selector(b1ar); /* { dg-warning "creating selector for non existant method b1ar" } */
|
||||
b = @selector(bar);
|
||||
}
|
||||
@end
|
||||
|
Loading…
Reference in New Issue
Block a user