Author: Erich Keane Date: 2022-11-28T10:22:54-08:00 New Revision: 9061928ebbb1a9d002583ede2700429100305d6a
URL: https://github.com/llvm/llvm-project/commit/9061928ebbb1a9d002583ede2700429100305d6a DIFF: https://github.com/llvm/llvm-project/commit/9061928ebbb1a9d002583ede2700429100305d6a.diff LOG: Stop accepting 'bool' in a concept declaration as an extension. We no longer support the concepts-ts flag for this release, so stop supporting this concepts-ts compat extension as well. Added: Modified: clang/docs/ReleaseNotes.rst clang/include/clang/Basic/DiagnosticParseKinds.td clang/lib/Parse/ParseTemplate.cpp clang/test/Parser/cxx2a-concept-declaration.cpp Removed: ################################################################################ diff --git a/clang/docs/ReleaseNotes.rst b/clang/docs/ReleaseNotes.rst index e9280cac12ff2..ab7334e483282 100644 --- a/clang/docs/ReleaseNotes.rst +++ b/clang/docs/ReleaseNotes.rst @@ -401,6 +401,8 @@ Improvements to Clang's diagnostics PCH or modules. When Clang hits this limit, it now produces notes mentioning which header and source files are consuming large amounts of this space. ``#pragma clang __debug sloc_usage`` can also be used to request this report. +- Clang no longer permits the keyword 'bool' in a concept declaration as a + concepts-ts compatibility extension. Non-comprehensive list of changes in this release ------------------------------------------------- diff --git a/clang/include/clang/Basic/DiagnosticParseKinds.td b/clang/include/clang/Basic/DiagnosticParseKinds.td index ffbc859162270..79035b4de163f 100644 --- a/clang/include/clang/Basic/DiagnosticParseKinds.td +++ b/clang/include/clang/Basic/DiagnosticParseKinds.td @@ -1633,9 +1633,8 @@ def warn_deprecated_for_co_await : Warning< let CategoryName = "Concepts Issue" in { def err_concept_definition_not_identifier : Error< "name defined in concept definition must be an identifier">; -def ext_concept_legacy_bool_keyword : ExtWarn< - "ISO C++20 does not permit the 'bool' keyword after 'concept'">, - InGroup<DiagGroup<"concepts-ts-compat">>; +def err_concept_legacy_bool_keyword : Error< + "ISO C++ does not permit the 'bool' keyword after 'concept'">; def err_placeholder_expected_auto_or_decltype_auto : Error< "expected 'auto' or 'decltype(auto)' after concept name">; } diff --git a/clang/lib/Parse/ParseTemplate.cpp b/clang/lib/Parse/ParseTemplate.cpp index 03f5d0b5a5f1c..a93edfa29664e 100644 --- a/clang/lib/Parse/ParseTemplate.cpp +++ b/clang/lib/Parse/ParseTemplate.cpp @@ -392,7 +392,7 @@ Parser::ParseConceptDefinition(const ParsedTemplateInfo &TemplateInfo, SourceLocation BoolKWLoc; if (TryConsumeToken(tok::kw_bool, BoolKWLoc)) - Diag(Tok.getLocation(), diag::ext_concept_legacy_bool_keyword) << + Diag(Tok.getLocation(), diag::err_concept_legacy_bool_keyword) << FixItHint::CreateRemoval(SourceLocation(BoolKWLoc)); DiagnoseAndSkipCXX11Attributes(); diff --git a/clang/test/Parser/cxx2a-concept-declaration.cpp b/clang/test/Parser/cxx2a-concept-declaration.cpp index 25c44122d7f82..0a7af847112de 100644 --- a/clang/test/Parser/cxx2a-concept-declaration.cpp +++ b/clang/test/Parser/cxx2a-concept-declaration.cpp @@ -50,7 +50,7 @@ template <bool word> concept C6 = integral_constant<bool, wor>::value; // expected-note@-2{{'word' declared here}} template<typename T> concept bool C7 = true; -// expected-warning@-1{{ISO C++20 does not permit the 'bool' keyword after 'concept'}} +// expected-error@-1{{ISO C++ does not permit the 'bool' keyword after 'concept'}} template<> concept C8 = false; // expected-error@-1{{concept template parameter list must have at least one parameter; explicit specialization of concepts is not allowed}} _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits