diff options
author | Alexander Malmberg <alexander@malmberg.org> | 2003-10-03 22:24:03 +0000 |
---|---|---|
committer | Ziemowit Laski <zlaski@gcc.gnu.org> | 2003-10-03 22:24:03 +0000 |
commit | 81ff723b4ecccafb5aa6e4f5ce910d9f45064dbc (patch) | |
tree | e37abdb5f9046a1b3c2c5a65570f0a9f40582a2b /gcc/testsuite/objc.dg/method-6.m | |
parent | 875eda9c345e57676c4f21f753274ee51025fa41 (diff) | |
download | gcc-81ff723b4ecccafb5aa6e4f5ce910d9f45064dbc.zip gcc-81ff723b4ecccafb5aa6e4f5ce910d9f45064dbc.tar.gz gcc-81ff723b4ecccafb5aa6e4f5ce910d9f45064dbc.tar.bz2 |
objc-act.c (add_method_to_hash_list, [...]): New functions.
[gcc]
2003-10-03 Alexander Malmberg <alexander@malmberg.org>
Ziemowit Laski <zlaski@apple.com>
* objc/objc-act.c (add_method_to_hash_list, lookup_category):
New functions.
(lookup_method_in_hash_lists): New parameter indicating whether
we are messaging 'Class' or 'id'.
(check_duplicates): Likewise; do not assume all methods will
be either class or instance methods.
(generate_category, finish_class): Use lookup_category().
(add_method): Use add_method_to_hash_list(); insert instance
methods of root classes into the global class method hash table.
(add_category): Use lookup_category(); avoid constructing
duplicate categories.
(really_start_method): Add method to corresponding @interface,
if not already there (and if the @interface exists).
(finish_message_expr, finish_objc): Adjust calls to
check_duplicates().
[gcc/testsuite]
2003-10-03 Alexander Malmberg <alexander@malmberg.org>
Ziemowit Laski <zlaski@apple.com>
* objc.dg/method-6.m ('starboard'): Move prototype from 'Base' to
'Derived', so that it is never considered a class method; add
new warning for '+port' method ambiguity.
* objc.dg/method-12.m: Include <objc/objc.h> instead of
<objc/objc-api.h> (needed on Mac OS X).
* objc.dg/method-13.m: New test.
Co-Authored-By: Ziemowit Laski <zlaski@apple.com>
From-SVN: r72080
Diffstat (limited to 'gcc/testsuite/objc.dg/method-6.m')
-rw-r--r-- | gcc/testsuite/objc.dg/method-6.m | 25 |
1 files changed, 15 insertions, 10 deletions
diff --git a/gcc/testsuite/objc.dg/method-6.m b/gcc/testsuite/objc.dg/method-6.m index 212958b..a4ca787 100644 --- a/gcc/testsuite/objc.dg/method-6.m +++ b/gcc/testsuite/objc.dg/method-6.m @@ -1,4 +1,5 @@ -/* Check that sending messages to variables of type 'Class' does not involve instance methods. */ +/* Check that sending messages to variables of type 'Class' does not involve instance methods, + unless they reside in root classes. */ /* Author: Ziemowit Laski <zlaski@apple.com> */ /* { dg-do compile } */ @@ -6,21 +7,25 @@ @interface Base - (unsigned)port; -- (id)starboard; @end @interface Derived: Base - (Object *)port; + (Protocol *)port; +- (id)starboard; @end -id foo(void) { +void foo(void) { Class receiver; - id p = [receiver port]; /* there should be no warnings here! */ - p = [receiver starboard]; /* { dg-warning ".Class. may not respond to .\\+starboard." } */ - /* { dg-warning "Messages without a matching method signature" "" { target *-*-* } 20 } */ - /* { dg-warning "will be assumed to return .id. and accept" "" { target *-*-* } 20 } */ - /* { dg-warning ".\.\.\.. as arguments" "" { target *-*-* } 20 } */ - p = [Class port]; /* { dg-error ".Class. is not an Objective\\-C class name or alias" } */ - return p; + + [receiver port]; /* { dg-warning "multiple methods named .\\+port. found" } */ + /* { dg-warning "using .\\-\\(unsigned\\)port." "" { target *-*-* } 9 } */ + /* { dg-warning "also found .\\+\\(Protocol \\*\\)port." "" { target *-*-* } 14 } */ + + [receiver starboard]; /* { dg-warning ".Class. may not respond to .\\+starboard." } */ + /* { dg-warning "Messages without a matching method signature" "" { target *-*-* } 25 } */ + /* { dg-warning "will be assumed to return .id. and accept" "" { target *-*-* } 25 } */ + /* { dg-warning ".\.\.\.. as arguments" "" { target *-*-* } 25 } */ + + [Class port]; /* { dg-error ".Class. is not an Objective\\-C class name or alias" } */ } |