summaryrefslogtreecommitdiff
path: root/test/SemaCXX/dllexport.cpp
diff options
context:
space:
mode:
authorHans Wennborg <hans@hanshq.net>2014-11-03 16:09:16 +0000
committerHans Wennborg <hans@hanshq.net>2014-11-03 16:09:16 +0000
commit6d043706411e6068a4934d977803a6b35baa6f87 (patch)
tree4611060eacf2030453a1005084191e5599ac3266 /test/SemaCXX/dllexport.cpp
parentc29a6cac52d77bdf3169a02da78667d3672b34f1 (diff)
downloadclang-6d043706411e6068a4934d977803a6b35baa6f87.tar.gz
Don't allow dllimport/export on classes with internal linkage (PR21399)
Trying to import or export such classes doesn't make sense, and Clang would assert trying to export vtables for them. This is consistent with how we treat functions with internal linkage, but it is stricter than MSVC so we may have to back down if it breaks real code. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@221160 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/SemaCXX/dllexport.cpp')
-rw-r--r--test/SemaCXX/dllexport.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/test/SemaCXX/dllexport.cpp b/test/SemaCXX/dllexport.cpp
index e6fc91d6b9..5d002ac81e 100644
--- a/test/SemaCXX/dllexport.cpp
+++ b/test/SemaCXX/dllexport.cpp
@@ -327,6 +327,10 @@ template<> __declspec(dllexport) inline void funcTmpl<ExplicitSpec_InlineDef_Exp
// Classes
//===----------------------------------------------------------------------===//
+namespace {
+ struct __declspec(dllexport) AnonymousClass {}; // expected-error{{(anonymous namespace)::AnonymousClass' must have external linkage when declared 'dllexport'}}
+}
+
class __declspec(dllexport) ClassDecl;
class __declspec(dllexport) ClassDef {};