[clang] [Clang][P1061] Consolidate ResolvedUnpexandedPackExpr into FunctionParmPackExpr (PR #125394)
via cfe-commits
cfe-commits at lists.llvm.org
Sun Feb 2 05:24:37 PST 2025
================
@@ -3492,10 +3492,13 @@ VarDecl *BindingDecl::getHoldingVar() const {
return VD;
}
-llvm::ArrayRef<Expr *> BindingDecl::getBindingPackExprs() const {
+llvm::ArrayRef<BindingDecl *> BindingDecl::getBindingPackDecls() const {
assert(Binding && "expecting a pack expr");
- auto *RP = cast<ResolvedUnexpandedPackExpr>(Binding);
- return RP->getExprs();
+ auto *FP = cast<FunctionParmPackExpr>(Binding);
+ ValueDecl *const *First = FP->getNumExpansions() > 0 ? FP->begin() : nullptr;
+ assert((!First || isa<BindingDecl>(*First)) && "expecting a BindingDecl");
+ return llvm::ArrayRef<BindingDecl *>((BindingDecl *const *)First,
+ FP->getNumExpansions());
----------------
cor3ntin wrote:
```suggestion
auto *FP = cast<FunctionParmPackExpr>(Binding);
if(FP->getNumExpansions() == 0)
return {};
return llvm::ArrayRef<BindingDecl *>(cast<const BindingDecl*>(FP->begin()), FP->getNumExpansions());
```
I haven't tested but something like that looks simpler (the cast does the assert, and if there is nothing to expand we can as well return early)
https://github.com/llvm/llvm-project/pull/125394
More information about the cfe-commits
mailing list