"Incremental" progress on using expressions, by which I mean totally ripping
into pretty much everything about overload resolution in order to wean BuildDeclarationNameExpr off LookupResult::getAsSingleDecl(). Replace UnresolvedFunctionNameExpr with UnresolvedLookupExpr, which generalizes the idea of a non-member lookup that we haven't totally resolved yet, whether by overloading, argument-dependent lookup, or (eventually) the presence of a function template in the lookup results. Incidentally fixes a problem with argument-dependent lookup where we were still performing ADL even when the lookup results contained something from a block scope. Incidentally improves a diagnostic when using an ObjC ivar from a class method. This just fell out from rewriting BuildDeclarationNameExpr's interaction with lookup, and I'm too apathetic to break it out. The only remaining uses of OverloadedFunctionDecl that I know of are in TemplateName and MemberExpr. llvm-svn: 89544
This commit is contained in:
@@ -1467,7 +1467,7 @@ void Sema::CodeCompleteCall(Scope *S, ExprTy *FnIn,
|
||||
Expr::hasAnyTypeDependentArguments(Args, NumArgs))
|
||||
return;
|
||||
|
||||
NamedDecl *Function;
|
||||
llvm::SmallVector<NamedDecl*,8> Fns;
|
||||
DeclarationName UnqualifiedName;
|
||||
NestedNameSpecifier *Qualifier;
|
||||
SourceRange QualifierRange;
|
||||
@@ -1476,8 +1476,7 @@ void Sema::CodeCompleteCall(Scope *S, ExprTy *FnIn,
|
||||
const TemplateArgumentLoc *ExplicitTemplateArgs;
|
||||
unsigned NumExplicitTemplateArgs;
|
||||
|
||||
DeconstructCallFunction(Fn,
|
||||
Function, UnqualifiedName, Qualifier, QualifierRange,
|
||||
DeconstructCallFunction(Fn, Fns, UnqualifiedName, Qualifier, QualifierRange,
|
||||
ArgumentDependentLookup, HasExplicitTemplateArgs,
|
||||
ExplicitTemplateArgs, NumExplicitTemplateArgs);
|
||||
|
||||
@@ -1488,7 +1487,7 @@ void Sema::CodeCompleteCall(Scope *S, ExprTy *FnIn,
|
||||
|
||||
// Build an overload candidate set based on the functions we find.
|
||||
OverloadCandidateSet CandidateSet;
|
||||
AddOverloadedCallCandidates(Function, UnqualifiedName,
|
||||
AddOverloadedCallCandidates(Fns, UnqualifiedName,
|
||||
ArgumentDependentLookup, HasExplicitTemplateArgs,
|
||||
ExplicitTemplateArgs, NumExplicitTemplateArgs,
|
||||
Args, NumArgs,
|
||||
|
||||
Reference in New Issue
Block a user