diff options
author | Richard Smith <richard-llvm@metafoo.co.uk> | 2016-05-11 20:37:46 +0000 |
---|---|---|
committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2016-05-11 20:37:46 +0000 |
commit | c2bebe9acab26b5af209f11b3ee978966feab491 (patch) | |
tree | 3573c6b429a7cf0bf311f648650ce49743c6a741 /clang/lib/AST/ASTImporter.cpp | |
parent | 1455de2171e8829f75935f11b254f404417c260c (diff) | |
download | bcm5719-llvm-c2bebe9acab26b5af209f11b3ee978966feab491.tar.gz bcm5719-llvm-c2bebe9acab26b5af209f11b3ee978966feab491.zip |
Preserve the FoundDecl when performing overload resolution for constructors.
This is in preparation for C++ P0136R1, which switches the model for inheriting
constructors over from synthesizing a constructor to finding base class
constructors (via using shadow decls) when looking for derived class
constructors.
llvm-svn: 269231
Diffstat (limited to 'clang/lib/AST/ASTImporter.cpp')
-rw-r--r-- | clang/lib/AST/ASTImporter.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/clang/lib/AST/ASTImporter.cpp b/clang/lib/AST/ASTImporter.cpp index 747f9fc9bde..8665d809ae4 100644 --- a/clang/lib/AST/ASTImporter.cpp +++ b/clang/lib/AST/ASTImporter.cpp @@ -5767,9 +5767,14 @@ Expr *ASTNodeImporter::VisitCXXConstructExpr(CXXConstructExpr *E) { if (T.isNull()) return nullptr; + NamedDecl *ToFound = + dyn_cast<NamedDecl>(Importer.Import(E->getFoundDecl())); + if (!ToFound) + return nullptr; + CXXConstructorDecl *ToCCD = dyn_cast<CXXConstructorDecl>(Importer.Import(E->getConstructor())); - if (!ToCCD && E->getConstructor()) + if (!ToCCD) return nullptr; SmallVector<Expr *, 6> ToArgs(E->getNumArgs()); @@ -5779,7 +5784,7 @@ Expr *ASTNodeImporter::VisitCXXConstructExpr(CXXConstructExpr *E) { return CXXConstructExpr::Create(Importer.getToContext(), T, Importer.Import(E->getLocation()), - ToCCD, E->isElidable(), + ToFound, ToCCD, E->isElidable(), ToArgs, E->hadMultipleCandidates(), E->isListInitialization(), E->isStdInitListInitialization(), |