Commit 7b9be5c7 by Devang Patel Committed by Devang Patel

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
parent 6fde9815
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> 2002-08-08 Stephen Clarke <stephen.clarke@superh.com>
* config/sh/sh.c (prepare_move_operands): Only call * config/sh/sh.c (prepare_move_operands): Only call
......
...@@ -1886,6 +1886,32 @@ build_selector_translation_table () ...@@ -1886,6 +1886,32 @@ build_selector_translation_table ()
{ {
tree expr; 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)); expr = build_selector (TREE_VALUE (chain));
if (flag_next_runtime) if (flag_next_runtime)
......
2002-08-08 Devang Patel <dpatel@apple.com>
*objc.dg/selector-1.m : New test
2002-08-08 Nathan Sidwell <nathan@codesourcery.com> 2002-08-08 Nathan Sidwell <nathan@codesourcery.com>
* g++.dg/abi/bitfield4.c: New test. * g++.dg/abi/bitfield4.c: New test.
......
/* 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
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