summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaTemplateInstantiate.cpp
diff options
context:
space:
mode:
authorJohn McCall <rjmccall@apple.com>2009-11-22 01:44:31 +0000
committerJohn McCall <rjmccall@apple.com>2009-11-22 01:44:31 +0000
commitb53bbd42c820e98bdfbc16dc2839c1160e115d80 (patch)
tree542286fa128e095d3d561ad6e973a8da43fa7d51 /clang/lib/Sema/SemaTemplateInstantiate.cpp
parentabdf86d2be60e45a44d568a2223300511fd5b420 (diff)
downloadbcm5719-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.cpp16
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
OpenPOWER on IntegriCloud