Author: rsmith Date: Thu Aug 24 19:25:07 2017 New Revision: 311750 URL: http://llvm.org/viewvc/llvm-project?rev=311750&view=rev Log: Fix up the -Wc++XX-compat warnings to properly handle C++2a.
Added: cfe/trunk/test/SemaCXX/cxx17-compat.cpp Modified: cfe/trunk/include/clang/Basic/DiagnosticGroups.td Modified: cfe/trunk/include/clang/Basic/DiagnosticGroups.td URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/DiagnosticGroups.td?rev=311750&r1=311749&r2=311750&view=diff ============================================================================== --- cfe/trunk/include/clang/Basic/DiagnosticGroups.td (original) +++ cfe/trunk/include/clang/Basic/DiagnosticGroups.td Thu Aug 24 19:25:07 2017 @@ -184,13 +184,15 @@ def CXX98Compat : DiagGroup<"c++98-compa [CXX98CompatLocalTypeTemplateArgs, CXX98CompatUnnamedTypeTemplateArgs, CXXPre14Compat, - CXXPre1zCompat]>; + CXXPre1zCompat, + CXXPre2aCompat]>; // Warnings for C++11 features which are Extensions in C++98 mode. def CXX98CompatPedantic : DiagGroup<"c++98-compat-pedantic", [CXX98Compat, CXX98CompatBindToTemporaryCopy, CXXPre14CompatPedantic, - CXXPre1zCompatPedantic]>; + CXXPre1zCompatPedantic, + CXXPre2aCompatPedantic]>; def CXX11Narrowing : DiagGroup<"c++11-narrowing">; @@ -215,22 +217,34 @@ def CXX11Compat : DiagGroup<"c++11-compa CXX11CompatReservedUserDefinedLiteral, CXX11CompatDeprecatedWritableStr, CXXPre14Compat, - CXXPre1zCompat]>; + CXXPre1zCompat, + CXXPre2aCompat]>; def : DiagGroup<"c++0x-compat", [CXX11Compat]>; def CXX11CompatPedantic : DiagGroup<"c++11-compat-pedantic", - [CXXPre14CompatPedantic, - CXXPre1zCompatPedantic]>; + [CXX11Compat, + CXXPre14CompatPedantic, + CXXPre1zCompatPedantic, + CXXPre2aCompatPedantic]>; -def CXX14Compat : DiagGroup<"c++14-compat", [CXXPre1zCompat]>; +def CXX14Compat : DiagGroup<"c++14-compat", [CXXPre1zCompat, + CXXPre2aCompat]>; def CXX14CompatPedantic : DiagGroup<"c++14-compat-pedantic", - [CXXPre1zCompatPedantic]>; + [CXX14Compat, + CXXPre1zCompatPedantic, + CXXPre2aCompatPedantic]>; def CXX17Compat : DiagGroup<"c++17-compat", [DeprecatedRegister, DeprecatedIncrementBool, - CXX17CompatMangling]>; + CXX17CompatMangling, + CXXPre2aCompat]>; +def CXX17CompatPedantic : DiagGroup<"c++17-compat-pedantic", + [CXX17Compat, + CXXPre2aCompatPedantic]>; def : DiagGroup<"c++1z-compat", [CXX17Compat]>; def CXX2aCompat : DiagGroup<"c++2a-compat">; +def CXX2aCompatPedantic : DiagGroup<"c++2a-compat-pedantic", + [CXX2aCompat]>; def ExitTimeDestructors : DiagGroup<"exit-time-destructors">; def FlexibleArrayExtensions : DiagGroup<"flexible-array-extensions">; Added: cfe/trunk/test/SemaCXX/cxx17-compat.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaCXX/cxx17-compat.cpp?rev=311750&view=auto ============================================================================== --- cfe/trunk/test/SemaCXX/cxx17-compat.cpp (added) +++ cfe/trunk/test/SemaCXX/cxx17-compat.cpp Thu Aug 24 19:25:07 2017 @@ -0,0 +1,22 @@ +// RUN: %clang_cc1 -fsyntax-only -std=c++17 -pedantic -verify %s +// RUN: %clang_cc1 -fsyntax-only -std=c++2a -Wc++17-compat-pedantic -verify %s + +struct A {}; +int (A::*pa)() const&; +int use_pa = (A().*pa)(); +#if __cplusplus <= 201703L + // expected-warning@-2 {{invoking a pointer to a 'const &' member function on an rvalue is a C++2a extension}} +#else + // expected-warning@-4 {{invoking a pointer to a 'const &' member function on an rvalue is incompatible with C++ standards before C++2a}} +#endif + +struct B { + void b() { + (void) [=, this] {}; +#if __cplusplus <= 201703L + // expected-warning@-2 {{explicit capture of 'this' with a capture default of '=' is a C++2a extension}} +#else + // expected-warning@-4 {{explicit capture of 'this' with a capture default of '=' is incompatible with C++ standards before C++2a}} +#endif + } +}; _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits