diff options
Diffstat (limited to 'clang/lib/Sema/SemaExprObjC.cpp')
-rw-r--r-- | clang/lib/Sema/SemaExprObjC.cpp | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/clang/lib/Sema/SemaExprObjC.cpp b/clang/lib/Sema/SemaExprObjC.cpp index fdb59874cc9..4ca3b851c18 100644 --- a/clang/lib/Sema/SemaExprObjC.cpp +++ b/clang/lib/Sema/SemaExprObjC.cpp @@ -4332,16 +4332,14 @@ Expr *Sema::stripARCUnbridgedCast(Expr *e) { assert(!gse->isResultDependent()); unsigned n = gse->getNumAssocs(); - SmallVector<Expr *, 4> subExprs; - SmallVector<TypeSourceInfo *, 4> subTypes; - subExprs.reserve(n); - subTypes.reserve(n); - for (const GenericSelectionExpr::Association &assoc : gse->associations()) { - subTypes.push_back(assoc.getTypeSourceInfo()); - Expr *sub = assoc.getAssociationExpr(); - if (assoc.isSelected()) + SmallVector<Expr*, 4> subExprs(n); + SmallVector<TypeSourceInfo*, 4> subTypes(n); + for (unsigned i = 0; i != n; ++i) { + subTypes[i] = gse->getAssocTypeSourceInfo(i); + Expr *sub = gse->getAssocExpr(i); + if (i == gse->getResultIndex()) sub = stripARCUnbridgedCast(sub); - subExprs.push_back(sub); + subExprs[i] = sub; } return GenericSelectionExpr::Create( |