From: Richard Trieu Date: Fri, 18 Sep 2015 23:18:39 +0000 (+0000) Subject: Split off the binary literal warning into a subgroup of C++14 warnings X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=818eee6f0def34260494d3450f2b049bd80ab3e2;p=clang Split off the binary literal warning into a subgroup of C++14 warnings Binary literals predate C++14, but they are listed as a C++14 extension since this was the first time they were standardized in the language. Move the warning into a subgroup so it can be selectively disabled when checking for other C++14 features. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@248064 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/Basic/DiagnosticGroups.td b/include/clang/Basic/DiagnosticGroups.td index 00b30b14ba..a185b22519 100644 --- a/include/clang/Basic/DiagnosticGroups.td +++ b/include/clang/Basic/DiagnosticGroups.td @@ -29,6 +29,7 @@ def ArrayBoundsPointerArithmetic : DiagGroup<"array-bounds-pointer-arithmetic">; def Availability : DiagGroup<"availability">; def Section : DiagGroup<"section">; def AutoImport : DiagGroup<"auto-import">; +def CXX14BinaryLiteral : DiagGroup<"c++14-binary-literal">; def GNUBinaryLiteral : DiagGroup<"gnu-binary-literal">; def GNUCompoundLiteralInitializer : DiagGroup<"gnu-compound-literal-initializer">; def BitFieldConstantConversion : DiagGroup<"bitfield-constant-conversion">; @@ -680,7 +681,7 @@ def CXX11 : DiagGroup<"c++11-extensions", [CXX11ExtraSemi, CXX11LongLong]>; // A warning group for warnings about using C++14 features as extensions in // earlier C++ versions. -def CXX14 : DiagGroup<"c++14-extensions">; +def CXX14 : DiagGroup<"c++14-extensions", [CXX14BinaryLiteral]>; // A warning group for warnings about using C++1z features as extensions in // earlier C++ versions. diff --git a/include/clang/Basic/DiagnosticLexKinds.td b/include/clang/Basic/DiagnosticLexKinds.td index 712ea63ae8..3384a34d61 100644 --- a/include/clang/Basic/DiagnosticLexKinds.td +++ b/include/clang/Basic/DiagnosticLexKinds.td @@ -184,7 +184,7 @@ def ext_hexconstant_invalid : Extension< def ext_binary_literal : Extension< "binary integer literals are a GNU extension">, InGroup; def ext_binary_literal_cxx14 : Extension< - "binary integer literals are a C++14 extension">, InGroup; + "binary integer literals are a C++14 extension">, InGroup; def warn_cxx11_compat_binary_literal : Warning< "binary integer literals are incompatible with C++ standards before C++14">, InGroup, DefaultIgnore; diff --git a/test/Lexer/warn_binary_literals.cpp b/test/Lexer/warn_binary_literals.cpp new file mode 100644 index 0000000000..d196be91b5 --- /dev/null +++ b/test/Lexer/warn_binary_literals.cpp @@ -0,0 +1,5 @@ +// RUN: %clang_cc1 -fsyntax-only -std=c++11 -verify %s -Wc++14-binary-literal +// RUN: %clang_cc1 -fsyntax-only -std=c++11 -verify %s -Wc++14-extensions + +int x = 0b11; +// expected-warning@-1{{binary integer literals are a C++14 extension}}