Skip to content

Commit b1718c6

Browse files
committed
template arguments are almost done
1 parent 73f932f commit b1718c6

File tree

1 file changed

+18
-5
lines changed

1 file changed

+18
-5
lines changed

clang/lib/Sema/HLSLExternalSemaSource.cpp

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -479,6 +479,9 @@ struct TemplateParameterListBuilder {
479479
DeclContext *DC = Builder.Record->getDeclContext();
480480
TemplateArgumentListInfo TALI(loc, loc);
481481

482+
TemplateTypeParmDecl *ConceptTTPD = dyn_cast<TemplateTypeParmDecl>(
483+
CD->getTemplateParameters()->getParam(0));
484+
482485
clang::TemplateTypeParmDecl *T = clang::TemplateTypeParmDecl::Create(
483486
context, // AST context
484487
context.getTranslationUnitDecl(), // DeclContext
@@ -494,21 +497,31 @@ struct TemplateParameterListBuilder {
494497
T->setDeclContext(DC);
495498
T->setReferenced();
496499

497-
clang::QualType TType = context.getTypeDeclType(T);
500+
clang::QualType TType = context.getTypeDeclType(ConceptTTPD);
501+
502+
TemplateArgument TA = TemplateArgument(TType);
503+
504+
ArrayRef<TemplateArgument> ConvertedArgs = {TA};
498505

499-
ArrayRef<TemplateArgument> ConvertedArgs = {TemplateArgument(TType)};
506+
clang::QualType CSETType = context.getTypeDeclType(T);
507+
508+
TemplateArgument CSETA = TemplateArgument(CSETType);
509+
510+
ArrayRef<TemplateArgument> CSEConvertedArgs = {CSETA};
500511

501512
ImplicitConceptSpecializationDecl *IDecl =
502513
ImplicitConceptSpecializationDecl::Create(
503-
context, Builder.Record->getDeclContext(), loc, ConvertedArgs);
514+
context, Builder.Record->getDeclContext(), loc, CSEConvertedArgs);
504515

505516
const ConstraintSatisfaction CS(CD, ConvertedArgs);
506-
TemplateArgumentLoc tal = S.getTrivialTemplateArgumentLoc(
507-
TemplateArgument(TType), QualType(), SourceLocation());
517+
TemplateArgumentLoc tal =
518+
S.getTrivialTemplateArgumentLoc(TA, QualType(), SourceLocation());
508519

509520
TALI.addArgument(tal);
510521
const ASTTemplateArgumentListInfo *ATALI =
511522
ASTTemplateArgumentListInfo::Create(context, TALI);
523+
524+
// In CR, ATALI is what adds the extra TemplateArgument node underneath CSE
512525
ConceptReference *CR = ConceptReference::Create(S.getASTContext(), NNS, loc,
513526
DNI, CD, CD, ATALI);
514527

0 commit comments

Comments
 (0)