From b53bbd42c820e98bdfbc16dc2839c1160e115d80 Mon Sep 17 00:00:00 2001 From: John McCall Date: Sun, 22 Nov 2009 01:44:31 +0000 Subject: Reorganize the intermediate BuildDeclarationNameExpr routines again. llvm-svn: 89575 --- clang/lib/Sema/SemaTemplateInstantiate.cpp | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) (limited to 'clang/lib/Sema/SemaTemplateInstantiate.cpp') diff --git a/clang/lib/Sema/SemaTemplateInstantiate.cpp b/clang/lib/Sema/SemaTemplateInstantiate.cpp index 47110c180b4..3c5c239739b 100644 --- a/clang/lib/Sema/SemaTemplateInstantiate.cpp +++ b/clang/lib/Sema/SemaTemplateInstantiate.cpp @@ -12,6 +12,7 @@ #include "Sema.h" #include "TreeTransform.h" +#include "Lookup.h" #include "clang/AST/ASTConsumer.h" #include "clang/AST/ASTContext.h" #include "clang/AST/Expr.h" @@ -699,7 +700,8 @@ TemplateInstantiator::TransformPredefinedExpr(PredefinedExpr *E, Sema::OwningExprResult TemplateInstantiator::TransformUnresolvedLookupExpr(UnresolvedLookupExpr *Old, bool isAddressOfOperand) { - llvm::SmallVector InstDecls; + LookupResult R(SemaRef, Old->getName(), Old->getNameLoc(), + Sema::LookupOrdinaryName); for (UnresolvedLookupExpr::decls_iterator I = Old->decls_begin(), E = Old->decls_end(); I != E; ++I) { @@ -715,9 +717,14 @@ TemplateInstantiator::TransformUnresolvedLookupExpr(UnresolvedLookupExpr *Old, // Analogously. assert(!isa(InstD->getUnderlyingDecl())); - InstDecls.push_back(InstD); + R.addDecl(InstD); } + R.resolveKind(); + + // This shouldn't be possible. + assert(!R.isAmbiguous()); + CXXScopeSpec SS; NestedNameSpecifier *Qualifier = 0; if (Old->getQualifier()) { @@ -730,10 +737,7 @@ TemplateInstantiator::TransformUnresolvedLookupExpr(UnresolvedLookupExpr *Old, SS.setRange(Old->getQualifierRange()); } - return SemaRef.BuildDeclarationNameExpr(&SS, Old->getNameLoc(), - Old->getName(), Old->requiresADL(), - Old->isOverloaded(), - InstDecls.data(), InstDecls.size()); + return SemaRef.BuildDeclarationNameExpr(&SS, R, Old->requiresADL()); } Sema::OwningExprResult -- cgit v1.2.3