Skip to content

Commit d4f5cf2

Browse files
authored
[Clang] Added check for unexpanded pack in attribute [[assume]] (#91893)
Added a check for unexpanded parameter pack in attribute [[assume]]. Tested it with expected-error statements from clang fronted. This fixes #91232.
1 parent 279a659 commit d4f5cf2

File tree

2 files changed

+10
-0
lines changed

2 files changed

+10
-0
lines changed

clang/lib/Sema/SemaStmtAttr.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -670,6 +670,11 @@ ExprResult Sema::ActOnCXXAssumeAttr(Stmt *St, const ParsedAttr &A,
670670
}
671671

672672
auto *Assumption = A.getArgAsExpr(0);
673+
674+
if (DiagnoseUnexpandedParameterPack(Assumption)) {
675+
return ExprError();
676+
}
677+
673678
if (Assumption->getDependence() == ExprDependence::None) {
674679
ExprResult Res = BuildCXXAssumeExpr(Assumption, A.getAttrName(), Range);
675680
if (Res.isInvalid())

clang/test/SemaCXX/cxx23-assume.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,3 +138,8 @@ constexpr int foo() {
138138
}
139139

140140
static_assert(foo() == 0);
141+
142+
template <bool ...val>
143+
void f() {
144+
[[assume(val)]]; // expected-error {{expression contains unexpanded parameter pack}}
145+
}

0 commit comments

Comments
 (0)