From 16501782c8d849bc1812d527dc8466574700663d Mon Sep 17 00:00:00 2001 From: Elvina Yakubova Date: Thu, 25 Jun 2020 16:53:23 +0300 Subject: [PATCH] [Clang] Add support for -Wno-inline-namespace-reopened-noninline This patch adds the option for disabling warn_inline_namespace_reopened_noninline warning described here: https://bugs.llvm.org/show_bug.cgi?id=46106 Patch by Elvina Yakubova Differential Revision: https://reviews.llvm.org/D81825 --- clang/include/clang/Basic/DiagnosticGroups.td | 2 ++ clang/include/clang/Basic/DiagnosticSemaKinds.td | 3 ++- clang/test/Misc/warning-flags.c | 3 +-- .../warn-inline-namespace-reopened-noninline-disable.cpp | 13 +++++++++++++ 4 files changed, 18 insertions(+), 3 deletions(-) create mode 100644 clang/test/SemaCXX/warn-inline-namespace-reopened-noninline-disable.cpp diff --git a/clang/include/clang/Basic/DiagnosticGroups.td b/clang/include/clang/Basic/DiagnosticGroups.td index 23f530d..37e0b77 100644 --- a/clang/include/clang/Basic/DiagnosticGroups.td +++ b/clang/include/clang/Basic/DiagnosticGroups.td @@ -382,6 +382,8 @@ def IncompleteModule : DiagGroup<"incomplete-module", def PrivateModule : DiagGroup<"private-module">; def CXX11InlineNamespace : DiagGroup<"c++11-inline-namespace">; +def InlineNamespaceReopenedNoninline + : DiagGroup<"inline-namespace-reopened-noninline">; def InvalidNoreturn : DiagGroup<"invalid-noreturn">; def InvalidSourceEncoding : DiagGroup<"invalid-source-encoding">; def KNRPromotedParameter : DiagGroup<"knr-promoted-parameter">; diff --git a/clang/include/clang/Basic/DiagnosticSemaKinds.td b/clang/include/clang/Basic/DiagnosticSemaKinds.td index 9067c45..70b43f5 100644 --- a/clang/include/clang/Basic/DiagnosticSemaKinds.td +++ b/clang/include/clang/Basic/DiagnosticSemaKinds.td @@ -1414,7 +1414,8 @@ def warn_cxx14_compat_inline_variable : Warning< DefaultIgnore, InGroup; def warn_inline_namespace_reopened_noninline : Warning< - "inline namespace reopened as a non-inline namespace">; + "inline namespace reopened as a non-inline namespace">, + InGroup; def err_inline_namespace_mismatch : Error< "non-inline namespace cannot be reopened as inline">; diff --git a/clang/test/Misc/warning-flags.c b/clang/test/Misc/warning-flags.c index 841c748..e4f9069 100644 --- a/clang/test/Misc/warning-flags.c +++ b/clang/test/Misc/warning-flags.c @@ -18,7 +18,7 @@ This test serves two purposes: The list of warnings below should NEVER grow. It should gradually shrink to 0. -CHECK: Warnings without flags (69): +CHECK: Warnings without flags (68): CHECK-NEXT: ext_expected_semi_decl_list CHECK-NEXT: ext_explicit_specialization_storage_class @@ -58,7 +58,6 @@ CHECK-NEXT: warn_fe_macro_contains_embedded_newline CHECK-NEXT: warn_ignoring_ftabstop_value CHECK-NEXT: warn_implements_nscopying CHECK-NEXT: warn_incompatible_qualified_id -CHECK-NEXT: warn_inline_namespace_reopened_noninline CHECK-NEXT: warn_invalid_asm_cast_lvalue CHECK-NEXT: warn_maynot_respond CHECK-NEXT: warn_method_param_redefinition diff --git a/clang/test/SemaCXX/warn-inline-namespace-reopened-noninline-disable.cpp b/clang/test/SemaCXX/warn-inline-namespace-reopened-noninline-disable.cpp new file mode 100644 index 0000000..3cc6830 --- /dev/null +++ b/clang/test/SemaCXX/warn-inline-namespace-reopened-noninline-disable.cpp @@ -0,0 +1,13 @@ +// RUN: %clang_cc1 -fsyntax-only -Wall -verify -std=c++11 %s +// RUN: %clang_cc1 -fsyntax-only -Wall -Wno-inline-namespace-reopened-noninline -DSILENCE -verify -std=c++11 %s + +namespace X { + #ifndef SILENCE + inline namespace {} // expected-note {{previous definition}} + namespace {} // expected-warning {{inline namespace reopened as a non-inline namespace}} + #else + // expected-no-diagnostics + inline namespace {} + namespace {} + #endif +} -- 2.7.4