diff options
author | Douglas Gregor <dgregor@apple.com> | 2010-02-03 03:01:57 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2010-02-03 03:01:57 +0000 |
commit | db56b919e522883b16ad45015ee64dd37ed933a6 (patch) | |
tree | 12ad2d8b16dc02949282202d95478dd8924ec697 /clang/lib/Sema/TreeTransform.h | |
parent | bf5ce0a6c27c1a31b1fb57c179f227f8efe115be (diff) | |
download | bcm5719-llvm-db56b919e522883b16ad45015ee64dd37ed933a6.tar.gz bcm5719-llvm-db56b919e522883b16ad45015ee64dd37ed933a6.zip |
Provide a real fix for PR6199, reverting the old workaround. Here, we
realize that CXXConstructExpr is always implicit, so we should just
return its argument (if there is only one) rather than directly
invoking the constructor.
llvm-svn: 95192
Diffstat (limited to 'clang/lib/Sema/TreeTransform.h')
-rw-r--r-- | clang/lib/Sema/TreeTransform.h | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/clang/lib/Sema/TreeTransform.h b/clang/lib/Sema/TreeTransform.h index 1938e3dfb59..b1b85e5928a 100644 --- a/clang/lib/Sema/TreeTransform.h +++ b/clang/lib/Sema/TreeTransform.h @@ -4808,6 +4808,12 @@ TreeTransform<Derived>::TransformDependentScopeDeclRefExpr( template<typename Derived> Sema::OwningExprResult TreeTransform<Derived>::TransformCXXConstructExpr(CXXConstructExpr *E) { + // CXXConstructExprs are always implicit, so when we have a + // 1-argument construction we just transform that argument. + if (E->getNumArgs() == 1 || + (E->getNumArgs() > 1 && getDerived().DropCallArgument(E->getArg(1)))) + return getDerived().TransformExpr(E->getArg(0)); + TemporaryBase Rebase(*this, /*FIXME*/E->getLocStart(), DeclarationName()); QualType T = getDerived().TransformType(E->getType()); |