diff options
author | Douglas Gregor <dgregor@apple.com> | 2011-01-13 00:19:55 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2011-01-13 00:19:55 +0000 |
commit | 4f1d282d6f32a419e89ddb56342e2313b0c78bb7 (patch) | |
tree | 71b4192fa051791affa973d842c0dca718f1e4e9 /lib | |
parent | a03478231363c67ea0e1f4bc1bc708e064040e56 (diff) |
Allow us to transform pack expansion expressions.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123349 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Sema/TreeTransform.h | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/lib/Sema/TreeTransform.h b/lib/Sema/TreeTransform.h index f601d5c047..43d89e2875 100644 --- a/lib/Sema/TreeTransform.h +++ b/lib/Sema/TreeTransform.h @@ -6787,8 +6787,14 @@ TreeTransform<Derived>::TransformCXXNoexceptExpr(CXXNoexceptExpr *E) { template<typename Derived> ExprResult TreeTransform<Derived>::TransformPackExpansionExpr(PackExpansionExpr *E) { - llvm_unreachable("pack expansion expression in unhandled context"); - return ExprError(); + ExprResult Pattern = getDerived().TransformExpr(E->getPattern()); + if (Pattern.isInvalid()) + return ExprError(); + + if (!getDerived().AlwaysRebuild() && Pattern.get() == E->getPattern()) + return SemaRef.Owned(E); + + return getDerived().RebuildPackExpansion(Pattern.get(), E->getEllipsisLoc()); } template<typename Derived> |