Skip to content

Commit 0b7a92a

Browse files
committed
cleanup
1 parent 85a61b4 commit 0b7a92a

File tree

1 file changed

+22
-30
lines changed

1 file changed

+22
-30
lines changed

clang/lib/Sema/SemaConcept.cpp

Lines changed: 22 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -353,8 +353,6 @@ SubstitutionInTemplateArguments(
353353
const NamedDecl *Template, MultiLevelTemplateArgumentList MLTAL,
354354
llvm::SmallVector<TemplateArgument> &SubstitutedOuterMost) {
355355

356-
Sema::SFINAETrap Trap(S);
357-
358356
Sema::InstantiatingTemplate Inst(
359357
S, Constraint.getBeginLoc(),
360358
Sema::InstantiatingTemplate::ParameterMappingSubstitution{},
@@ -363,6 +361,8 @@ SubstitutionInTemplateArguments(
363361
if (Inst.isInvalid())
364362
return std::nullopt;
365363

364+
Sema::SFINAETrap Trap(S);
365+
366366
// TODO substitute at the appropriate depth
367367
// Template->getTemplateDepth();
368368

@@ -539,7 +539,6 @@ static bool calculateConstraintSatisfaction(
539539
return true;
540540
}
541541

542-
//bool HasAnyFailed = false;
543542
for (unsigned I = 0; I < *NumExpansions; I++) {
544543
Sema::ArgPackSubstIndexRAII SubstIndex(S, I);
545544
Satisfaction.IsSatisfied = false;
@@ -591,18 +590,19 @@ static bool calculateConstraintSatisfaction(
591590
const ASTTemplateArgumentListInfo *Ori =
592591
Constraint.getConceptId()->getTemplateArgsAsWritten();
593592
TemplateArgumentListInfo OutArgs(Ori->LAngleLoc, Ori->RAngleLoc);
594-
if (Template && Template->getTemplateDepth() > 0) {
595-
TemplateArgumentListInfo TransArgs(Ori->LAngleLoc, Ori->RAngleLoc);
596-
AdjustConstraintDepth Adjust(S, Template->getTemplateDepth() - 1);
597-
if (Adjust.TransformTemplateArguments(Ori->getTemplateArgs(),
598-
Ori->NumTemplateArgs, TransArgs))
599-
return Ok;
600-
if (S.SubstTemplateArguments(TransArgs.arguments(), MLTAL, OutArgs))
601-
return Ok;
602-
} else {
603-
if (S.SubstTemplateArguments(Ori->arguments(), MLTAL, OutArgs))
604-
return Ok;
605-
}
593+
594+
TemplateArgumentListInfo TransArgs(Ori->LAngleLoc, Ori->RAngleLoc);
595+
unsigned Depth = Template && Template->getTemplateDepth()
596+
? Template->getTemplateDepth() - 1
597+
: 0;
598+
AdjustConstraintDepth Adjust(S, Depth);
599+
if (Adjust.TransformTemplateArguments(Ori->getTemplateArgs(),
600+
Ori->NumTemplateArgs, TransArgs))
601+
return Ok;
602+
603+
if (S.SubstTemplateArguments(TransArgs.arguments(), MLTAL, OutArgs) ||
604+
Trap.hasErrorOccurred())
605+
return Ok;
606606

607607
CXXScopeSpec SS;
608608
SS.Adopt(Constraint.getConceptId()->getNestedNameSpecifierLoc());
@@ -1563,22 +1563,14 @@ substituteParameterMappings(Sema &S, NormalizedConstraintWithParamMapping &N,
15631563
}
15641564
TemplateArgumentLoc *TempArgs =
15651565
new (S.Context) TemplateArgumentLoc[OccurringIndices.count()];
1566-
for (unsigned I = 0, J = 0, C = TemplateParams->size(); I != C; ++I)
1566+
for (unsigned I = 0, J = 0, C = TemplateParams->size(); I != C; ++I) {
1567+
SourceLocation Loc = ArgsAsWritten->NumTemplateArgs > I
1568+
? ArgsAsWritten->arguments()[I].getLocation()
1569+
: SourceLocation();
15671570
if (OccurringIndices[I])
1568-
new (&(TempArgs)[J++])
1569-
TemplateArgumentLoc(S.getIdentityTemplateArgumentLoc(
1570-
TemplateParams->begin()[I],
1571-
// Here we assume we do not support things like
1572-
// template<typename A, typename B>
1573-
// concept C = ...;
1574-
//
1575-
// template<typename... Ts> requires C<Ts...>
1576-
// struct S { };
1577-
// The above currently yields a diagnostic.
1578-
// We still might have default arguments for concept parameters.
1579-
ArgsAsWritten->NumTemplateArgs > I
1580-
? ArgsAsWritten->arguments()[I].getLocation()
1581-
: SourceLocation()));
1571+
new (&(TempArgs)[J++]) TemplateArgumentLoc(
1572+
S.getIdentityTemplateArgumentLoc(TemplateParams->begin()[I], Loc));
1573+
}
15821574
N.updateParameterMapping(OccurringIndices,
15831575
MutableArrayRef<TemplateArgumentLoc>{
15841576
TempArgs, OccurringIndices.count()});

0 commit comments

Comments
 (0)