[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