Ted Kremenek | b4c0c2d | 2010-04-08 21:10:56 +0000 | [diff] [blame] | 1 | // RUN: %clang_cc1 %s -verify -Wunused -Wunused-parameter -fsyntax-only |
Daniel Dunbar | 23afaad | 2009-11-17 08:57:36 +0000 | [diff] [blame] | 2 | |
| 3 | int printf(const char *, ...); |
Chris Lattner | a9c0102 | 2007-09-26 22:06:30 +0000 | [diff] [blame] | 4 | |
| 5 | @interface Greeter |
| 6 | + (void) hello; |
| 7 | @end |
| 8 | |
| 9 | @implementation Greeter |
Ted Kremenek | 2ec93a8 | 2010-02-25 03:26:51 +0000 | [diff] [blame] | 10 | + (void) hello { printf("Hello, World!\n"); } |
Chris Lattner | a9c0102 | 2007-09-26 22:06:30 +0000 | [diff] [blame] | 11 | @end |
| 12 | |
Chris Lattner | bab8a8e | 2009-08-11 20:08:52 +0000 | [diff] [blame] | 13 | int test1(void) { |
| 14 | [Greeter hello]; |
| 15 | return 0; |
| 16 | } |
| 17 | |
Chris Lattner | ab0e887 | 2009-08-11 20:08:03 +0000 | [diff] [blame] | 18 | @interface NSObject @end |
| 19 | @interface NSString : NSObject |
| 20 | - (int)length; |
| 21 | @end |
| 22 | |
Chris Lattner | bab8a8e | 2009-08-11 20:08:52 +0000 | [diff] [blame] | 23 | void test2() { |
Chris Lattner | bc0b915 | 2010-04-26 21:44:01 +0000 | [diff] [blame] | 24 | @"pointless example call for test purposes".length; // expected-warning {{property access result unused - getters should not be used for side effects}} |
Chris Lattner | ab0e887 | 2009-08-11 20:08:03 +0000 | [diff] [blame] | 25 | } |
| 26 | |
Chris Lattner | bab8a8e | 2009-08-11 20:08:52 +0000 | [diff] [blame] | 27 | @interface foo |
| 28 | - (int)meth: (int)x: (int)y: (int)z ; |
| 29 | @end |
| 30 | |
| 31 | @implementation foo |
| 32 | - (int) meth: (int)x: |
| 33 | (int)y: // expected-warning{{unused}} |
| 34 | (int) __attribute__((unused))z { return x; } |
| 35 | @end |
Ted Kremenek | 2ec93a8 | 2010-02-25 03:26:51 +0000 | [diff] [blame] | 36 | |
| 37 | //===------------------------------------------------------------------------=== |
| 38 | // The next test shows how clang accepted attribute((unused)) on ObjC |
| 39 | // instance variables, which GCC does not. |
| 40 | //===------------------------------------------------------------------------=== |
| 41 | |
Ted Kremenek | 444b035 | 2010-03-05 22:43:32 +0000 | [diff] [blame] | 42 | #if __has_feature(attribute_objc_ivar_unused) |
| 43 | #define UNUSED_IVAR __attribute__((unused)) |
| 44 | #else |
| 45 | #error __attribute__((unused)) not supported on ivars |
| 46 | #endif |
| 47 | |
Ted Kremenek | 2ec93a8 | 2010-02-25 03:26:51 +0000 | [diff] [blame] | 48 | @interface TestUnusedIvar { |
Ted Kremenek | 444b035 | 2010-03-05 22:43:32 +0000 | [diff] [blame] | 49 | id y __attribute__((unused)); // no-warning |
| 50 | id x UNUSED_IVAR; // no-warning |
Ted Kremenek | 2ec93a8 | 2010-02-25 03:26:51 +0000 | [diff] [blame] | 51 | } |
| 52 | @end |
Ted Kremenek | 444b035 | 2010-03-05 22:43:32 +0000 | [diff] [blame] | 53 | |