summaryrefslogtreecommitdiff
path: root/test/Parser
diff options
context:
space:
mode:
authorReid Kleckner <reid@kleckner.net>2013-10-08 22:45:29 +0000
committerReid Kleckner <reid@kleckner.net>2013-10-08 22:45:29 +0000
commit5dbed6674bda07dd147183932bc843c52205633f (patch)
tree8ee338418422caa0598e1cdb49fcd744096b2652 /test/Parser
parent3cb333070d35c9a6843e4211c9a74322f6c126ec (diff)
downloadclang-5dbed6674bda07dd147183932bc843c52205633f.tar.gz
-Wmicrosoft: Don't warn on non-inline pure virtual method definitions
MSVC and clang with -fms-extensions allow pure virtual methods to be defined inline after the "= 0" tokens. Clang warns on these because it is not standard, but incorrectly warns on out-of-line definitions, which are standard. With this change, clang will only warn on inline definitions of pure virtual methods. Fixes some self-host warnings on out-of-line definitions of pure virtual destructors. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@192244 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/Parser')
-rw-r--r--test/Parser/MicrosoftExtensions.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/test/Parser/MicrosoftExtensions.cpp b/test/Parser/MicrosoftExtensions.cpp
index 0327499f27..efb5c3ce1f 100644
--- a/test/Parser/MicrosoftExtensions.cpp
+++ b/test/Parser/MicrosoftExtensions.cpp
@@ -331,6 +331,15 @@ class inline_definition_pure_spec {
virtual int f2() = 0;
};
+struct pure_virtual_dtor {
+ virtual ~pure_virtual_dtor() = 0;
+};
+pure_virtual_dtor::~pure_virtual_dtor() { }
+
+struct pure_virtual_dtor_inline {
+ virtual ~pure_virtual_dtor_inline() = 0 { }// expected-warning {{function definition with pure-specifier is a Microsoft extension}}
+};
+
int main () {
// Necessary to force instantiation in -fdelayed-template-parsing mode.