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
-------------------------------------------------
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">;
}
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();
// 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}}