diff options
| author | Nico Rieck <nico.rieck@gmail.com> | 2014-05-29 16:51:19 +0000 |
|---|---|---|
| committer | Nico Rieck <nico.rieck@gmail.com> | 2014-05-29 16:51:19 +0000 |
| commit | 9de0a57687b9dec5fd5b579175a526909a47afec (patch) | |
| tree | c095638b61b7e73533922be7659afe74b96924a5 /clang/test/SemaCXX/dllexport.cpp | |
| parent | b4662c3e5a543540bdde3c1326a6db12eaeac591 (diff) | |
| download | bcm5719-llvm-9de0a57687b9dec5fd5b579175a526909a47afec.tar.gz bcm5719-llvm-9de0a57687b9dec5fd5b579175a526909a47afec.zip | |
Sema: Functions with dll attributes cannot be deleted
llvm-svn: 209827
Diffstat (limited to 'clang/test/SemaCXX/dllexport.cpp')
| -rw-r--r-- | clang/test/SemaCXX/dllexport.cpp | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/clang/test/SemaCXX/dllexport.cpp b/clang/test/SemaCXX/dllexport.cpp index 510d34bb26f..c637e63f8e0 100644 --- a/clang/test/SemaCXX/dllexport.cpp +++ b/clang/test/SemaCXX/dllexport.cpp @@ -212,6 +212,10 @@ __declspec(dllexport) Internal internalRetFunc(); // expected-error{{'internalRe namespace { __declspec(dllexport) void internalFunc() {} } // expected-error{{'(anonymous namespace)::internalFunc' must have external linkage when declared 'dllexport'}} namespace ns { __declspec(dllexport) void externalFunc() {} } +// Export deleted function. +__declspec(dllexport) void deletedFunc() = delete; // expected-error{{attribute 'dllexport' cannot be applied to a deleted function}} +__declspec(dllexport) inline void deletedInlineFunc() = delete; // expected-error{{attribute 'dllexport' cannot be applied to a deleted function}} + //===----------------------------------------------------------------------===// @@ -474,6 +478,18 @@ void ExportAlloc::operator delete(void* p) { free(p); } void ExportAlloc::operator delete[](void* p) { free(p); } +// Export deleted member functions. +struct ExportDeleted { + __declspec(dllexport) ExportDeleted() = delete; // expected-error{{attribute 'dllexport' cannot be applied to a deleted function}} + __declspec(dllexport) ~ExportDeleted() = delete; // expected-error{{attribute 'dllexport' cannot be applied to a deleted function}} + __declspec(dllexport) ExportDeleted(const ExportDeleted&) = delete; // expected-error{{attribute 'dllexport' cannot be applied to a deleted function}} + __declspec(dllexport) ExportDeleted& operator=(const ExportDeleted&) = delete; // expected-error{{attribute 'dllexport' cannot be applied to a deleted function}} + __declspec(dllexport) ExportDeleted(ExportDeleted&&) = delete; // expected-error{{attribute 'dllexport' cannot be applied to a deleted function}} + __declspec(dllexport) ExportDeleted& operator=(ExportDeleted&&) = delete; // expected-error{{attribute 'dllexport' cannot be applied to a deleted function}} + __declspec(dllexport) void deleted() = delete; // expected-error{{attribute 'dllexport' cannot be applied to a deleted function}} +}; + + // Export defaulted member functions. struct ExportDefaulted { __declspec(dllexport) ExportDefaulted() = default; |

