xref: /llvm-project/clang/test/SemaObjCXX/dllimport.mm (revision 511f2e5a8955c90d6b9c176c31af2ec3add395fa)
1*511f2e5aSSaleem Abdulrasool// RUN: %clang_cc1 -triple i686-windows -fdeclspec -fsyntax-only -verify %s
2*511f2e5aSSaleem Abdulrasool
3*511f2e5aSSaleem Abdulrasool__declspec(dllimport) typedef int typedef1;
4*511f2e5aSSaleem Abdulrasool// expected-warning@-1{{'dllimport' attribute only applies to functions, variables, classes, and Objective-C interfaces}}
5*511f2e5aSSaleem Abdulrasooltypedef __declspec(dllimport) int typedef2;
6*511f2e5aSSaleem Abdulrasool// expected-warning@-1{{'dllimport' attribute only applies to functions, variables, classes, and Objective-C interfaces}}
7*511f2e5aSSaleem Abdulrasooltypedef int __declspec(dllimport) typedef3;
8*511f2e5aSSaleem Abdulrasool// expected-warning@-1{{'dllimport' attribute only applies to functions, variables, classes, and Objective-C interfaces}}
9*511f2e5aSSaleem Abdulrasooltypedef __declspec(dllimport) void (*FunTy)();
10*511f2e5aSSaleem Abdulrasool// expected-warning@-1{{'dllimport' attribute only applies to functions, variables, classes, and Objective-C interfaces}}
11*511f2e5aSSaleem Abdulrasoolenum __declspec(dllimport) E { };
12*511f2e5aSSaleem Abdulrasool// expected-warning@-1{{'dllimport' attribute only applies to functions, variables, classes, and Objective-C interfaces}}
13*511f2e5aSSaleem Abdulrasool#if __has_feature(cxx_strong_enums)
14*511f2e5aSSaleem Abdulrasoolenum class __declspec(dllimport) F { };
15*511f2e5aSSaleem Abdulrasool// expected-warning@-1{{'dllimport' attribute only applies to functions, variables, classes, and Objective-C interfaces}}
16*511f2e5aSSaleem Abdulrasool#endif
17*511f2e5aSSaleem Abdulrasool
18*511f2e5aSSaleem Abdulrasool__declspec(dllimport)
19*511f2e5aSSaleem Abdulrasool__attribute__((__objc_root_class__))
20*511f2e5aSSaleem Abdulrasool@interface NSObject
21*511f2e5aSSaleem Abdulrasool@end
22*511f2e5aSSaleem Abdulrasool
23*511f2e5aSSaleem Abdulrasool__declspec(dllimport)
24*511f2e5aSSaleem Abdulrasool@interface I : NSObject
25*511f2e5aSSaleem Abdulrasool- (void)method;
26*511f2e5aSSaleem Abdulrasool@end
27*511f2e5aSSaleem Abdulrasool
28*511f2e5aSSaleem Abdulrasool@implementation I
29*511f2e5aSSaleem Abdulrasool- (void)method {
30*511f2e5aSSaleem Abdulrasool}
31*511f2e5aSSaleem Abdulrasool@end
32*511f2e5aSSaleem Abdulrasool
33