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
diff --git a/clang/lib/AST/ASTImporter.cpp b/clang/lib/AST/ASTImporter.cpp
index 747f9fc..8665d80 100644
--- a/clang/lib/AST/ASTImporter.cpp
+++ b/clang/lib/AST/ASTImporter.cpp
@@ -5767,9 +5767,14 @@
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 @@
return CXXConstructExpr::Create(Importer.getToContext(), T,
Importer.Import(E->getLocation()),
- ToCCD, E->isElidable(),
+ ToFound, ToCCD, E->isElidable(),
ToArgs, E->hadMultipleCandidates(),
E->isListInitialization(),
E->isStdInitListInitialization(),