aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Sema/SemaCodeComplete.cpp
diff options
context:
space:
mode:
authorErik Verbruggen <erikjv@me.com>2017-03-28 07:22:21 +0000
committerErik Verbruggen <erikjv@me.com>2017-03-28 07:22:21 +0000
commitf1898cfa42a05a2d3e4cc127d8a49c72dabcd009 (patch)
tree9f783258c6f6e5d6ed6d41fcfa446ea25ad3ab7b /clang/lib/Sema/SemaCodeComplete.cpp
parent9f3eca96eb0674020a2540883498ec4d2f940c11 (diff)
downloadllvm-f1898cfa42a05a2d3e4cc127d8a49c72dabcd009.zip
llvm-f1898cfa42a05a2d3e4cc127d8a49c72dabcd009.tar.gz
llvm-f1898cfa42a05a2d3e4cc127d8a49c72dabcd009.tar.bz2
[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. llvm-svn: 298903
Diffstat (limited to 'clang/lib/Sema/SemaCodeComplete.cpp')
-rw-r--r--clang/lib/Sema/SemaCodeComplete.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/clang/lib/Sema/SemaCodeComplete.cpp b/clang/lib/Sema/SemaCodeComplete.cpp
index ea4a33d..cfac3f1 100644
--- a/clang/lib/Sema/SemaCodeComplete.cpp
+++ b/clang/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());