[llvm-branch-commits] [clang] [Clang] [C++26] Expansion Statements (Part 3: Enumerating Expansion Statements) (PR #169682)
Yanzuo Liu via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Sat Jan 10 02:06:56 PST 2026
================
@@ -24,6 +24,45 @@
using namespace clang;
using namespace sema;
+// Build a 'DeclRefExpr' designating the template parameter '__N'.
+static DeclRefExpr *BuildIndexDRE(Sema &S, CXXExpansionStmtDecl *ESD) {
+ return S.BuildDeclRefExpr(ESD->getIndexTemplateParm(),
+ S.Context.getPointerDiffType(), VK_PRValue,
+ ESD->getBeginLoc());
+}
+
+static bool FinaliseExpansionVar(Sema &S, VarDecl *ExpansionVar,
+ ExprResult Initializer) {
+ if (Initializer.isInvalid()) {
+ S.ActOnInitializerError(ExpansionVar);
+ return true;
+ }
+
+ S.AddInitializerToDecl(ExpansionVar, Initializer.get(), /*DirectInit=*/false);
+ return ExpansionVar->isInvalidDecl();
+}
+
+static auto InitListContainsPack(const InitListExpr *ILE) {
+ return llvm::any_of(ArrayRef(ILE->getInits(), ILE->getNumInits()),
----------------
zwuis wrote:
```diff
-ArrayRef(ILE->getInits(), ILE->getNumInits())
+ILE->inits()
```
https://github.com/llvm/llvm-project/pull/169682
More information about the llvm-branch-commits
mailing list