@@ -380,15 +380,23 @@ SubstitutionInTemplateArguments(
380
380
Constraint.getParameterMapping (), MLTAL, SubstArgs) ||
381
381
Trap.hasErrorOccurred ())
382
382
return std::nullopt ;
383
+ // Sema::CheckTemplateArgumentInfo CTAI;
384
+ // auto *TD = const_cast<TemplateDecl *>(
385
+ // cast<TemplateDecl>(Constraint.getConstraintDecl()));
386
+ // if (S.CheckTemplateArgumentList(TD, TD->getLocation(), SubstArgs,
387
+ // /*DefaultArguments=*/{},
388
+ // /*PartialTemplateArgs=*/true, CTAI))
389
+ // return std::nullopt;
383
390
NormalizedConstraint::OccurenceList Used =
384
391
Constraint.mappingOccurenceList ();
385
392
SubstitutedOuterMost =
386
393
llvm::to_vector_of<TemplateArgument>(MLTAL.getOutermost ());
387
- for (unsigned I = 0 , MappedIndex = 0 ; I < SubstArgs.size (); I++)
388
- if (I < Used.size () && Used[I]) {
394
+ for (unsigned I = 0 , MappedIndex = 0 ; I < Used.size (); I++) {
395
+ TemplateArgument Arg;
396
+ if (Used[I])
389
397
// SubstitutedOuterMost[I].dump();
390
398
// SubstArgs[MappedIndex].getArgument().dump();
391
- TemplateArgument Arg = S.Context .getCanonicalTemplateArgument (
399
+ Arg = S.Context .getCanonicalTemplateArgument (
392
400
SubstArgs[MappedIndex++].getArgument ());
393
401
if (I < SubstitutedOuterMost.size ())
394
402
SubstitutedOuterMost[I] = Arg;
@@ -681,7 +689,7 @@ static bool calculateConstraintSatisfaction(
681
689
Ok = calculateConstraintSatisfaction (S, Constraint.getRHS (), Template,
682
690
TemplateNameLoc, MLTAL, Satisfaction,
683
691
PackSubstitutionIndex);
684
- if (Ok && Satisfaction.IsSatisfied && !Satisfaction.ContainsErrors )
692
+ if (Ok && Satisfaction.IsSatisfied && !Satisfaction.ContainsErrors )
685
693
Satisfaction.Details .erase (Satisfaction.Details .begin () + EffectiveDetailEndIndex,
686
694
Satisfaction.Details .end ());
687
695
return Ok;
@@ -1590,7 +1598,7 @@ substituteParameterMappings(Sema &S, NormalizedConstraintWithParamMapping &N,
1590
1598
/* OnlyDeduced=*/ false ,
1591
1599
/* Depth=*/ 0 , OccurringIndices);
1592
1600
} else if (N.getKind () == NormalizedConstraint::ConstraintKind::ConceptId) {
1593
- auto Args = static_cast <ConceptIdConstraint &>(N)
1601
+ auto * Args = static_cast <ConceptIdConstraint &>(N)
1594
1602
.getConceptId ()
1595
1603
->getTemplateArgsAsWritten ();
1596
1604
if (Args)
@@ -1629,12 +1637,25 @@ substituteParameterMappings(Sema &S, NormalizedConstraintWithParamMapping &N,
1629
1637
if (S.SubstTemplateArgumentsInParameterMapping (N.getParameterMapping (), MLTAL,
1630
1638
SubstArgs))
1631
1639
return true ;
1640
+ // Sema::CheckTemplateArgumentInfo CTAI;
1641
+ // auto *TD =
1642
+ // const_cast<TemplateDecl *>(cast<TemplateDecl>(N.getConstraintDecl()));
1643
+ // if (S.CheckTemplateArgumentList(TD, TD->getLocation(), SubstArgs,
1644
+ // /*DefaultArguments=*/{},
1645
+ // /*PartialTemplateArgs=*/true, CTAI))
1646
+ // return true;
1632
1647
TemplateArgumentLoc *TempArgs =
1633
1648
new (S.Context ) TemplateArgumentLoc[SubstArgs.size ()];
1649
+ // for (unsigned I = 0; I < CTAI.SugaredConverted.size(); ++I)
1650
+ // TempArgs[I] = S.getTrivialTemplateArgumentLoc(CTAI.SugaredConverted[I],
1651
+ // QualType(), SourceLocation());
1634
1652
llvm::copy (SubstArgs.arguments (), TempArgs);
1635
1653
N.updateParameterMapping (
1636
1654
N.mappingOccurenceList (),
1637
1655
MutableArrayRef<TemplateArgumentLoc>(TempArgs, SubstArgs.size ()));
1656
+ // N.updateParameterMapping(N.mappingOccurenceList(),
1657
+ // MutableArrayRef<TemplateArgumentLoc>(
1658
+ // TempArgs, CTAI.SugaredConverted.size()));
1638
1659
return false ;
1639
1660
}
1640
1661
@@ -1643,13 +1664,11 @@ substituteParameterMappings(Sema &S, ConceptIdConstraint &N,
1643
1664
const MultiLevelTemplateArgumentList &MLTAL,
1644
1665
const ASTTemplateArgumentListInfo *ArgsAsWritten) {
1645
1666
1646
- {
1647
1667
if (N.getConstraintDecl ()) {
1648
1668
substituteParameterMappings (
1649
1669
S, static_cast <NormalizedConstraintWithParamMapping &>(N), MLTAL,
1650
1670
ArgsAsWritten);
1651
1671
}
1652
- }
1653
1672
return substituteParameterMappings (S, N.getNormalizedConstraint (), MLTAL,
1654
1673
ArgsAsWritten);
1655
1674
}
0 commit comments