diff options
Diffstat (limited to 'clang/lib/Sema/SemaPseudoObject.cpp')
-rw-r--r-- | clang/lib/Sema/SemaPseudoObject.cpp | 22 |
1 files changed, 9 insertions, 13 deletions
diff --git a/clang/lib/Sema/SemaPseudoObject.cpp b/clang/lib/Sema/SemaPseudoObject.cpp index 28a4d62b03e..37dd7b1e8d2 100644 --- a/clang/lib/Sema/SemaPseudoObject.cpp +++ b/clang/lib/Sema/SemaPseudoObject.cpp @@ -140,23 +140,19 @@ namespace { unsigned resultIndex = gse->getResultIndex(); unsigned numAssocs = gse->getNumAssocs(); - SmallVector<Expr *, 8> assocExprs; - SmallVector<TypeSourceInfo *, 8> assocTypes; - assocExprs.reserve(numAssocs); - assocTypes.reserve(numAssocs); - - for (const GenericSelectionExpr::Association &assoc : - gse->associations()) { - Expr *assocExpr = assoc.getAssociationExpr(); - if (assoc.isSelected()) - assocExpr = rebuild(assocExpr); - assocExprs.push_back(assocExpr); - assocTypes.push_back(assoc.getTypeSourceInfo()); + SmallVector<Expr*, 8> assocs(numAssocs); + SmallVector<TypeSourceInfo*, 8> assocTypes(numAssocs); + + for (unsigned i = 0; i != numAssocs; ++i) { + Expr *assoc = gse->getAssocExpr(i); + if (i == resultIndex) assoc = rebuild(assoc); + assocs[i] = assoc; + assocTypes[i] = gse->getAssocTypeSourceInfo(i); } return GenericSelectionExpr::Create( S.Context, gse->getGenericLoc(), gse->getControllingExpr(), - assocTypes, assocExprs, gse->getDefaultLoc(), gse->getRParenLoc(), + assocTypes, assocs, gse->getDefaultLoc(), gse->getRParenLoc(), gse->containsUnexpandedParameterPack(), resultIndex); } |