Skip to content

Commit 01a3917

Browse files
committed
Apply Corentin's feedback
1 parent 12c6a06 commit 01a3917

File tree

1 file changed

+17
-13
lines changed

1 file changed

+17
-13
lines changed

clang/lib/Sema/SemaConcept.cpp

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1078,19 +1078,23 @@ static bool CheckFunctionConstraintsWithoutInstantiation(
10781078
// template. We need the entire list, since the constraint is completely
10791079
// uninstantiated at this point.
10801080

1081-
// getTemplateInstantiationArgs uses this instantiation context to find out
1082-
// template arguments for uninstantiated functions.
1083-
std::optional<Sema::InstantiatingTemplate> Inst(
1084-
std::in_place, SemaRef, PointOfInstantiation,
1085-
Sema::InstantiatingTemplate::ConstraintsCheck{}, Template, TemplateArgs,
1086-
PointOfInstantiation);
1087-
if (Inst->isInvalid())
1088-
return true;
1089-
MultiLevelTemplateArgumentList MLTAL = SemaRef.getTemplateInstantiationArgs(
1090-
/*D=*/FD, FD,
1091-
/*Final=*/false, /*Innermost=*/{}, /*RelativeToPrimary=*/true,
1092-
/*Pattern=*/nullptr, /*ForConstraintInstantiation=*/true);
1093-
Inst = std::nullopt;
1081+
MultiLevelTemplateArgumentList MLTAL;
1082+
{
1083+
// getTemplateInstantiationArgs uses this instantiation context to find out
1084+
// template arguments for uninstantiated functions.
1085+
// We don't want this RAII object to persist, because there would be
1086+
// otherwise duplicate diagnostic notes.
1087+
Sema::InstantiatingTemplate Inst(
1088+
SemaRef, PointOfInstantiation,
1089+
Sema::InstantiatingTemplate::ConstraintsCheck{}, Template, TemplateArgs,
1090+
PointOfInstantiation);
1091+
if (Inst.isInvalid())
1092+
return true;
1093+
MLTAL = SemaRef.getTemplateInstantiationArgs(
1094+
/*D=*/FD, FD,
1095+
/*Final=*/false, /*Innermost=*/{}, /*RelativeToPrimary=*/true,
1096+
/*Pattern=*/nullptr, /*ForConstraintInstantiation=*/true);
1097+
}
10941098

10951099
Sema::ContextRAII SavedContext(SemaRef, FD);
10961100
std::optional<Sema::CXXThisScopeRAII> ThisScope;

0 commit comments

Comments
 (0)