Skip to content

Commit 5454d00

Browse files
committed
Make sure the SubstitutionDiagnostic alias is used consistently
1 parent 56aaa21 commit 5454d00

File tree

6 files changed

+22
-23
lines changed

6 files changed

+22
-23
lines changed

clang/include/clang/AST/ASTConcept.h

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,13 +33,14 @@ class Expr;
3333
class NamedDecl;
3434
struct PrintingPolicy;
3535

36-
/// Pairs of unsatisfied atomic constraint expressions along with the
37-
/// substituted constraint expr, if the template arguments could be
36+
/// Unsatisfied constraint expressions if the template arguments could be
3837
/// substituted into them, or a diagnostic if substitution resulted in
3938
/// an invalid expression.
39+
///
40+
using ConstraintSubstitutionDiagnostic = std::pair<SourceLocation, StringRef>;
4041
using UnsatisfiedConstraintRecord =
4142
llvm::PointerUnion<const Expr *, const ConceptReference *,
42-
std::pair<SourceLocation, StringRef> *>;
43+
const ConstraintSubstitutionDiagnostic *>;
4344

4445
/// The result of a constraint satisfaction check, containing the necessary
4546
/// information to diagnose an unsatisfied constraint.
@@ -57,8 +58,6 @@ class ConstraintSatisfaction : public llvm::FoldingSetNode {
5758
ArrayRef<TemplateArgument> TemplateArgs)
5859
: ConstraintOwner(ConstraintOwner), TemplateArgs(TemplateArgs) {}
5960

60-
using SubstitutionDiagnostic = std::pair<SourceLocation, StringRef>;
61-
6261
bool IsSatisfied = false;
6362
bool ContainsErrors = false;
6463

@@ -77,7 +76,7 @@ class ConstraintSatisfaction : public llvm::FoldingSetNode {
7776

7877
bool HasSubstitutionFailure() {
7978
for (const auto &Detail : Details)
80-
if (Detail.dyn_cast<SubstitutionDiagnostic *>())
79+
if (Detail.dyn_cast<const ConstraintSubstitutionDiagnostic *>())
8180
return true;
8281
return false;
8382
}

clang/lib/AST/ASTConcept.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,9 @@ CreateUnsatisfiedConstraintRecord(const ASTContext &C,
3333
new (TrailingObject) UnsatisfiedConstraintRecord(Concept);
3434
else {
3535
auto &SubstitutionDiagnostic =
36-
*cast<std::pair<SourceLocation, StringRef> *>(Detail);
36+
*cast<const clang::ConstraintSubstitutionDiagnostic *>(Detail);
3737
StringRef Message = C.backupStr(SubstitutionDiagnostic.second);
38-
auto *NewSubstDiag = new (C) std::pair<SourceLocation, StringRef>(
38+
auto *NewSubstDiag = new (C) clang::ConstraintSubstitutionDiagnostic(
3939
SubstitutionDiagnostic.first, Message);
4040
new (TrailingObject) UnsatisfiedConstraintRecord(NewSubstDiag);
4141
}

clang/lib/AST/ASTImporter.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1075,16 +1075,16 @@ Error ASTNodeImporter::ImportConstraintSatisfaction(
10751075
return ToSecondExpr.takeError();
10761076
ToSat.Details.emplace_back(ToSecondExpr.get());
10771077
} else {
1078-
auto Pair = Record->dyn_cast<std::pair<SourceLocation, StringRef> *>();
1078+
auto Pair =
1079+
Record->dyn_cast<const ConstraintSubstitutionDiagnostic *>();
10791080

10801081
ExpectedSLoc ToPairFirst = import(Pair->first);
10811082
if (!ToPairFirst)
10821083
return ToPairFirst.takeError();
10831084
StringRef ToPairSecond = ImportASTStringRef(Pair->second);
1084-
ToSat.Details.emplace_back(
1085-
new (Importer.getToContext())
1086-
ConstraintSatisfaction::SubstitutionDiagnostic{
1087-
ToPairFirst.get(), ToPairSecond});
1085+
ToSat.Details.emplace_back(new (Importer.getToContext())
1086+
ConstraintSubstitutionDiagnostic{
1087+
ToPairFirst.get(), ToPairSecond});
10881088
}
10891089
}
10901090
}

clang/lib/Sema/SemaConcept.cpp

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -509,7 +509,7 @@ ExprResult ConstraintSatisfactionChecker::EvaluateAtomicConstraint(
509509
// future, to serialize the proper PartialDiagnostic as serializing
510510
// it as a string defeats the purpose of the diagnostic mechanism.
511511
Satisfaction.Details.emplace_back(
512-
new (S.Context) ConstraintSatisfaction::SubstitutionDiagnostic{
512+
new (S.Context) ConstraintSubstitutionDiagnostic{
513513
SubstDiag.first,
514514
allocateStringFromConceptDiagnostic(S, SubstDiag.second)});
515515
Satisfaction.IsSatisfied = false;
@@ -641,7 +641,7 @@ ExprResult ConstraintSatisfactionChecker::EvaluateSlow(
641641

642642
PartialDiagnostic Msg = S.PDiag(diag::note_constraint_references_error);
643643
Satisfaction.Details.emplace_back(
644-
new (S.Context) ConstraintSatisfaction::SubstitutionDiagnostic{
644+
new (S.Context) ConstraintSubstitutionDiagnostic{
645645
SubstitutedAtomicExpr.get()->getBeginLoc(),
646646
allocateStringFromConceptDiagnostic(S, Msg)});
647647
return SubstitutedAtomicExpr;
@@ -897,7 +897,7 @@ ExprResult ConstraintSatisfactionChecker::EvaluateSlow(
897897
// it as a string defeats the purpose of the diagnostic mechanism.
898898
Satisfaction.Details.insert(
899899
Satisfaction.Details.begin() + Size,
900-
new (S.Context) ConstraintSatisfaction::SubstitutionDiagnostic{
900+
new (S.Context) ConstraintSubstitutionDiagnostic{
901901
SubstDiag.first,
902902
allocateStringFromConceptDiagnostic(S, SubstDiag.second)});
903903
return ExprError();
@@ -1839,8 +1839,9 @@ static void diagnoseWellFormedUnsatisfiedConstraintExpr(Sema &S,
18391839
static void diagnoseUnsatisfiedConstraintExpr(
18401840
Sema &S, const UnsatisfiedConstraintRecord &Record, SourceLocation Loc,
18411841
bool First, concepts::NestedRequirement *Req) {
1842-
if (auto *Diag = Record.template dyn_cast<
1843-
ConstraintSatisfaction::SubstitutionDiagnostic *>()) {
1842+
if (auto *Diag =
1843+
Record
1844+
.template dyn_cast<const ConstraintSubstitutionDiagnostic *>()) {
18441845
if (Req)
18451846
S.Diag(Diag->first, diag::note_nested_requirement_substitution_error)
18461847
<< (int)First << Req->getInvalidConstraintEntity() << Diag->second;

clang/lib/Serialization/ASTReaderStmt.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -812,9 +812,8 @@ readConstraintSatisfaction(ASTRecordReader &Record) {
812812
SourceLocation DiagLocation = Record.readSourceLocation();
813813
StringRef DiagMessage = C.backupStr(Record.readString());
814814

815-
Satisfaction.Details.emplace_back(
816-
new (C) ConstraintSatisfaction::SubstitutionDiagnostic(
817-
DiagLocation, DiagMessage));
815+
Satisfaction.Details.emplace_back(new (
816+
C) ConstraintSubstitutionDiagnostic(DiagLocation, DiagMessage));
818817
} else if (Kind == 1) {
819818
Satisfaction.Details.emplace_back(Record.readExpr());
820819
} else {

clang/lib/Serialization/ASTWriterStmt.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -482,8 +482,8 @@ addConstraintSatisfaction(ASTRecordWriter &Record,
482482
if (!Satisfaction.IsSatisfied) {
483483
Record.push_back(Satisfaction.NumRecords);
484484
for (const auto &DetailRecord : Satisfaction) {
485-
if (auto *Diag =
486-
dyn_cast<std::pair<SourceLocation, StringRef> *>(DetailRecord)) {
485+
if (auto *Diag = dyn_cast<const ConstraintSubstitutionDiagnostic *>(
486+
DetailRecord)) {
487487
Record.push_back(/*Kind=*/0);
488488
Record.AddSourceLocation(Diag->first);
489489
Record.AddString(Diag->second);

0 commit comments

Comments
 (0)