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 | f1898cfa42a05a2d3e4cc127d8a49c72dabcd009 (patch) | |
tree | 9f783258c6f6e5d6ed6d41fcfa446ea25ad3ab7b /clang/lib/Sema/SemaCodeComplete.cpp | |
parent | 9f3eca96eb0674020a2540883498ec4d2f940c11 (diff) | |
download | llvm-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.cpp | 5 |
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()); |