diff --git a/clang/docs/ReleaseNotes.rst b/clang/docs/ReleaseNotes.rst index e7688b09f68e6..e2e4d6f51d81a 100644 --- a/clang/docs/ReleaseNotes.rst +++ b/clang/docs/ReleaseNotes.rst @@ -238,6 +238,9 @@ Bug Fixes to C++ Support (`#58674 `_) - Fix incorrect deletion of the default constructor of unions in some cases. (`#48416 `_) +- No longer issue a pre-C++2b compatibility warning in ``-pedantic`` mode + regading overloaded `operator[]` with more than one parmeter. (`#61582 + `_) Bug Fixes to AST Handling ^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/clang/include/clang/Basic/DiagnosticSemaKinds.td b/clang/include/clang/Basic/DiagnosticSemaKinds.td index bbab5752c9bfe..613e4a5006561 100644 --- a/clang/include/clang/Basic/DiagnosticSemaKinds.td +++ b/clang/include/clang/Basic/DiagnosticSemaKinds.td @@ -9140,8 +9140,9 @@ def err_operator_overload_static : Error< def err_operator_overload_default_arg : Error< "parameter of overloaded %0 cannot have a default argument">; -def ext_subscript_overload : ExtWarn< - "overloaded %0 with %select{no|a defaulted|more than one}1 parameter is a C++2b extension">, InGroup, DefaultIgnore; +def ext_subscript_overload : Warning< + "overloaded %0 with %select{no|a defaulted|more than one}1 parameter is a " + "C++2b extension">, InGroup, DefaultIgnore; def error_subscript_overload : Error< "overloaded %0 cannot have %select{no|a defaulted|more than one}1 parameter before C++2b">; diff --git a/clang/test/SemaCXX/cxx2b-overloaded-operator-pedantic.cpp b/clang/test/SemaCXX/cxx2b-overloaded-operator-pedantic.cpp new file mode 100644 index 0000000000000..53782c61c1c53 --- /dev/null +++ b/clang/test/SemaCXX/cxx2b-overloaded-operator-pedantic.cpp @@ -0,0 +1,11 @@ +// RUN: %clang_cc1 -verify -std=c++2b -pedantic %s +// RUN: %clang_cc1 -verify=compat -std=c++2b -Wpre-c++2b-compat %s + +// expected-no-diagnostics + +struct GH61582 { + // We accidentally would issue this diagnostic in pedantic mode; show that we + // only issue it when enabling the compat warnings now. + void operator[](int, int); // compat-warning {{overloaded 'operator[]' with more than one parameter is a C++2b extension}} +}; +