diff options
author | Erik Verbruggen <erikjv@me.com> | 2017-03-28 07:22:21 +0000 |
---|---|---|
committer | Erik Verbruggen <erikjv@me.com> | 2017-03-28 07:22:21 +0000 |
commit | 0ba785f458ab9138391703e94f2c835005549e1f (patch) | |
tree | 8235e08bb403f11334d186377cc7f8a2aa6fd39e /lib/Sema/SemaCodeComplete.cpp | |
parent | 0be968dcdac3922f1cc4660593782d15015fb4ff (diff) | |
download | clang-0ba785f458ab9138391703e94f2c835005549e1f.tar.gz |
[libclang] Fix crash in member access code completion with implicit base
If there is an unresolved member access AST node, and the base is
implicit, do not access/use it for generating candidate overloads for
code completion results.
Fixes PR31093.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@298903 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Sema/SemaCodeComplete.cpp')
-rw-r--r-- | lib/Sema/SemaCodeComplete.cpp | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/lib/Sema/SemaCodeComplete.cpp b/lib/Sema/SemaCodeComplete.cpp index ea4a33d3f5..cfac3f1dc1 100644 --- a/lib/Sema/SemaCodeComplete.cpp +++ b/lib/Sema/SemaCodeComplete.cpp @@ -4318,7 +4318,10 @@ void Sema::CodeCompleteCall(Scope *S, Expr *Fn, ArrayRef<Expr *> Args) { UME->copyTemplateArgumentsInto(TemplateArgsBuffer); TemplateArgs = &TemplateArgsBuffer; } - SmallVector<Expr *, 12> ArgExprs(1, UME->getBase()); + + // Add the base as first argument (use a nullptr if the base is implicit). + SmallVector<Expr *, 12> ArgExprs( + 1, UME->isImplicitAccess() ? nullptr : UME->getBase()); ArgExprs.append(Args.begin(), Args.end()); UnresolvedSet<8> Decls; Decls.append(UME->decls_begin(), UME->decls_end()); |