Skip to content

Commit b07b827

Browse files
committed
[Concepts] Add missing null check to transformConstructor
Caused bug 44671 when transforming a constructor with a type-constraint with no explicit template args. (cherry picked from commit a8d096a)
1 parent 73a9147 commit b07b827

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

clang/lib/Sema/SemaTemplate.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2047,12 +2047,14 @@ struct ConvertConstructorToDeductionGuideTransform {
20472047
if (const auto *TC = TTP->getTypeConstraint()) {
20482048
TemplateArgumentListInfo TransformedArgs;
20492049
const auto *ArgsAsWritten = TC->getTemplateArgsAsWritten();
2050-
if (SemaRef.Subst(ArgsAsWritten->getTemplateArgs(),
2050+
if (!ArgsAsWritten ||
2051+
SemaRef.Subst(ArgsAsWritten->getTemplateArgs(),
20512052
ArgsAsWritten->NumTemplateArgs, TransformedArgs,
20522053
Args))
20532054
SemaRef.AttachTypeConstraint(
20542055
TC->getNestedNameSpecifierLoc(), TC->getConceptNameInfo(),
2055-
TC->getNamedConcept(), &TransformedArgs, NewTTP,
2056+
TC->getNamedConcept(), ArgsAsWritten ? &TransformedArgs : nullptr,
2057+
NewTTP,
20562058
NewTTP->isParameterPack()
20572059
? cast<CXXFoldExpr>(TC->getImmediatelyDeclaredConstraint())
20582060
->getEllipsisLoc()

0 commit comments

Comments
 (0)