Skip to content

Commit 12d918f

Browse files
Revert RecoverExpr
1 parent ab1616f commit 12d918f

File tree

1 file changed

+27
-37
lines changed

1 file changed

+27
-37
lines changed

clang/lib/Sema/SemaTemplate.cpp

Lines changed: 27 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1228,45 +1228,35 @@ bool Sema::AttachTypeConstraint(AutoTypeLoc TL,
12281228
NonTypeTemplateParmDecl *NewConstrainedParm,
12291229
NonTypeTemplateParmDecl *OrigConstrainedParm,
12301230
SourceLocation EllipsisLoc) {
1231-
ExprResult ImmediatelyDeclaredConstraint = [&] {
1232-
if (NewConstrainedParm->getType().getNonPackExpansionType() !=
1233-
TL.getType() ||
1234-
TL.getAutoKeyword() != AutoTypeKeyword::Auto) {
1235-
Diag(NewConstrainedParm->getTypeSourceInfo()->getTypeLoc().getBeginLoc(),
1236-
diag::err_unsupported_placeholder_constraint)
1237-
<< NewConstrainedParm->getTypeSourceInfo()
1238-
->getTypeLoc()
1239-
.getSourceRange();
1240-
return ExprResult();
1241-
}
1242-
1243-
// FIXME: Concepts: This should be the type of the placeholder, but this is
1244-
// unclear in the wording right now.
1245-
DeclRefExpr *Ref =
1246-
BuildDeclRefExpr(OrigConstrainedParm, OrigConstrainedParm->getType(),
1247-
VK_PRValue, OrigConstrainedParm->getLocation());
1248-
assert(Ref != nullptr && "Unexpected nullptr!");
1249-
1250-
return formImmediatelyDeclaredConstraint(
1251-
*this, TL.getNestedNameSpecifierLoc(), TL.getConceptNameInfo(),
1252-
TL.getNamedConcept(), /*FoundDecl=*/TL.getFoundDecl(),
1253-
TL.getLAngleLoc(), TL.getRAngleLoc(), BuildDecltypeType(Ref),
1254-
OrigConstrainedParm->getLocation(),
1255-
[&](TemplateArgumentListInfo &ConstraintArgs) {
1256-
for (unsigned I = 0, C = TL.getNumArgs(); I != C; ++I)
1257-
ConstraintArgs.addArgument(TL.getArgLoc(I));
1258-
},
1259-
EllipsisLoc);
1260-
}();
1261-
1262-
if (ImmediatelyDeclaredConstraint.isInvalid() ||
1263-
!ImmediatelyDeclaredConstraint.isUsable()) {
1264-
NewConstrainedParm->setPlaceholderTypeConstraint(
1265-
RecoveryExpr::Create(Context, OrigConstrainedParm->getType(),
1266-
OrigConstrainedParm->getBeginLoc(),
1267-
OrigConstrainedParm->getEndLoc(), {}));
1231+
if (NewConstrainedParm->getType().getNonPackExpansionType() != TL.getType() ||
1232+
TL.getAutoKeyword() != AutoTypeKeyword::Auto) {
1233+
Diag(NewConstrainedParm->getTypeSourceInfo()->getTypeLoc().getBeginLoc(),
1234+
diag::err_unsupported_placeholder_constraint)
1235+
<< NewConstrainedParm->getTypeSourceInfo()
1236+
->getTypeLoc()
1237+
.getSourceRange();
12681238
return true;
12691239
}
1240+
// FIXME: Concepts: This should be the type of the placeholder, but this is
1241+
// unclear in the wording right now.
1242+
DeclRefExpr *Ref =
1243+
BuildDeclRefExpr(OrigConstrainedParm, OrigConstrainedParm->getType(),
1244+
VK_PRValue, OrigConstrainedParm->getLocation());
1245+
if (!Ref)
1246+
return true;
1247+
ExprResult ImmediatelyDeclaredConstraint = formImmediatelyDeclaredConstraint(
1248+
*this, TL.getNestedNameSpecifierLoc(), TL.getConceptNameInfo(),
1249+
TL.getNamedConcept(), /*FoundDecl=*/TL.getFoundDecl(), TL.getLAngleLoc(),
1250+
TL.getRAngleLoc(), BuildDecltypeType(Ref),
1251+
OrigConstrainedParm->getLocation(),
1252+
[&](TemplateArgumentListInfo &ConstraintArgs) {
1253+
for (unsigned I = 0, C = TL.getNumArgs(); I != C; ++I)
1254+
ConstraintArgs.addArgument(TL.getArgLoc(I));
1255+
},
1256+
EllipsisLoc);
1257+
if (ImmediatelyDeclaredConstraint.isInvalid() ||
1258+
!ImmediatelyDeclaredConstraint.isUsable())
1259+
return true;
12701260

12711261
NewConstrainedParm->setPlaceholderTypeConstraint(
12721262
ImmediatelyDeclaredConstraint.get());

0 commit comments

Comments
 (0)