mirror of
https://github.com/Gericom/teak-llvm.git
synced 2025-06-20 03:55:48 -04:00

This also clarifies some terminology used by the diagnostic (methods -> Objective-C methods, fields -> non-static data members, etc). Many of the tests needed to be updated in multiple places for the diagnostic wording tweaks. The first instance of the diagnostic for that attribute is fully specified and subsequent instances cut off the complete list (to make it easier if additional subjects are added in the future for the attribute). llvm-svn: 319002
28 lines
1.7 KiB
Objective-C
28 lines
1.7 KiB
Objective-C
// RUN: %clang_cc1 -verify -fsyntax-only %s
|
|
|
|
@class NSString;
|
|
|
|
extern NSString *fa2 (const NSString *) __attribute__((format_arg(1)));
|
|
extern NSString *fa3 (NSString *) __attribute__((format_arg(1)));
|
|
|
|
extern void fc1 (const NSString *) __attribute__((format_arg)); // expected-error {{'format_arg' attribute takes one argument}}
|
|
extern void fc2 (const NSString *) __attribute__((format_arg())); // expected-error {{'format_arg' attribute takes one argument}}
|
|
extern void fc3 (const NSString *) __attribute__((format_arg(1, 2))); // expected-error {{'format_arg' attribute takes one argument}}
|
|
|
|
struct s1 { int i; } __attribute__((format_arg(1))); // expected-warning {{'format_arg' attribute only applies to Objective-C methods and non-K&R-style functions}}
|
|
union u1 { int i; } __attribute__((format_arg(1))); // expected-warning {{'format_arg' attribute only applies to}}
|
|
enum e1 { E1V0 } __attribute__((format_arg(1))); // expected-warning {{'format_arg' attribute only applies to}}
|
|
|
|
extern NSString *ff3 (const NSString *) __attribute__((format_arg(3-2)));
|
|
extern NSString *ff4 (const NSString *) __attribute__((format_arg(foo))); // expected-error {{use of undeclared identifier 'foo'}}
|
|
|
|
/* format_arg formats must take and return a string. */
|
|
extern NSString *fi0 (int) __attribute__((format_arg(1))); // expected-error {{format argument not a string type}}
|
|
extern NSString *fi1 (NSString *) __attribute__((format_arg(1)));
|
|
|
|
extern NSString *fi2 (NSString *) __attribute__((format_arg(1)));
|
|
|
|
extern int fi3 (const NSString *) __attribute__((format_arg(1))); // expected-error {{function does not return NSString}}
|
|
extern NSString *fi4 (const NSString *) __attribute__((format_arg(1)));
|
|
extern NSString *fi5 (const NSString *) __attribute__((format_arg(1)));
|