diff options
author | John McCall <rjmccall@apple.com> | 2009-11-22 01:44:31 +0000 |
---|---|---|
committer | John McCall <rjmccall@apple.com> | 2009-11-22 01:44:31 +0000 |
commit | b53bbd42c820e98bdfbc16dc2839c1160e115d80 (patch) | |
tree | 542286fa128e095d3d561ad6e973a8da43fa7d51 /clang/lib/Sema/SemaTemplateInstantiate.cpp | |
parent | abdf86d2be60e45a44d568a2223300511fd5b420 (diff) | |
download | bcm5719-llvm-b53bbd42c820e98bdfbc16dc2839c1160e115d80.tar.gz bcm5719-llvm-b53bbd42c820e98bdfbc16dc2839c1160e115d80.zip |
Reorganize the intermediate BuildDeclarationNameExpr routines again.
llvm-svn: 89575
Diffstat (limited to 'clang/lib/Sema/SemaTemplateInstantiate.cpp')
-rw-r--r-- | clang/lib/Sema/SemaTemplateInstantiate.cpp | 16 |
1 files changed, 10 insertions, 6 deletions
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<NamedDecl*, 16> 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<UnresolvedUsingValueDecl>(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 |