mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-27 13:26:08 +00: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
43 lines
1.8 KiB
Objective-C
43 lines
1.8 KiB
Objective-C
// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
|
|
// rdar://16462586
|
|
|
|
__attribute__((objc_runtime_name)) // expected-error {{'objc_runtime_name' attribute takes one argument}}
|
|
@interface BInterface
|
|
@end
|
|
|
|
__attribute__((objc_runtime_name(123))) // expected-error {{'objc_runtime_name' attribute requires a string}}
|
|
@protocol BProtocol1
|
|
@end
|
|
|
|
__attribute__((objc_runtime_name("MySecretNamespace.Protocol")))
|
|
@protocol Protocol
|
|
@end
|
|
|
|
__attribute__((objc_runtime_name("MySecretNamespace.Message")))
|
|
@interface Message <Protocol> {
|
|
__attribute__((objc_runtime_name("MySecretNamespace.Message"))) // expected-error {{'objc_runtime_name' attribute only applies to Objective-C interfaces and Objective-C protocols}}
|
|
id MyIVAR;
|
|
}
|
|
__attribute__((objc_runtime_name("MySecretNamespace.Message")))
|
|
@property int MyProperty; // expected-error {{prefix attribute must be followed by an interface or protocol}}}}
|
|
|
|
- (int) getMyProperty __attribute__((objc_runtime_name("MySecretNamespace.Message"))); // expected-error {{'objc_runtime_name' attribute only applies to}}
|
|
|
|
- (void) setMyProperty : (int) arg __attribute__((objc_runtime_name("MySecretNamespace.Message"))); // expected-error {{'objc_runtime_name' attribute only applies to}}
|
|
|
|
@end
|
|
|
|
__attribute__((objc_runtime_name("MySecretNamespace.ForwardClass")))
|
|
@class ForwardClass; // expected-error {{prefix attribute must be followed by an interface or protocol}}
|
|
|
|
__attribute__((objc_runtime_name("MySecretNamespace.ForwardProtocol")))
|
|
@protocol ForwardProtocol;
|
|
|
|
__attribute__((objc_runtime_name("MySecretNamespace.Message")))
|
|
@implementation Message // expected-error {{prefix attribute must be followed by an interface or protocol}}
|
|
__attribute__((objc_runtime_name("MySecretNamespace.Message")))
|
|
- (id) MyMethod {
|
|
return MyIVAR;
|
|
}
|
|
@end
|