diff options
author | Douglas Gregor <dgregor@apple.com> | 2012-01-23 15:59:30 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2012-01-23 15:59:30 +0000 |
commit | 1cc88a977c624472bc9d1e30f91b5b141d122866 (patch) | |
tree | eee62eeb78fa01f05acc73abab2822ae4a08ae65 /clang/lib/Sema/SemaCodeComplete.cpp | |
parent | c7ee2013d94b545b50b95a19125fa5f8053739e1 (diff) | |
download | bcm5719-llvm-1cc88a977c624472bc9d1e30f91b5b141d122866.tar.gz bcm5719-llvm-1cc88a977c624472bc9d1e30f91b5b141d122866.zip |
Handle pseudo-object expressions (and any other placeholder
expression) when code-completing member access expressions. Fixes
<rdar://problem/10717172>.
llvm-svn: 148703
Diffstat (limited to 'clang/lib/Sema/SemaCodeComplete.cpp')
-rw-r--r-- | clang/lib/Sema/SemaCodeComplete.cpp | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/clang/lib/Sema/SemaCodeComplete.cpp b/clang/lib/Sema/SemaCodeComplete.cpp index 5a553513b41..623e68b8a5a 100644 --- a/clang/lib/Sema/SemaCodeComplete.cpp +++ b/clang/lib/Sema/SemaCodeComplete.cpp @@ -3351,15 +3351,19 @@ static void AddObjCProperties(ObjCContainerDecl *Container, } } -void Sema::CodeCompleteMemberReferenceExpr(Scope *S, Expr *BaseE, +void Sema::CodeCompleteMemberReferenceExpr(Scope *S, Expr *Base, SourceLocation OpLoc, bool IsArrow) { - if (!BaseE || !CodeCompleter) + if (!Base || !CodeCompleter) return; + ExprResult ConvertedBase = PerformMemberExprBaseConversion(Base, IsArrow); + if (ConvertedBase.isInvalid()) + return; + Base = ConvertedBase.get(); + typedef CodeCompletionResult Result; - Expr *Base = static_cast<Expr *>(BaseE); QualType BaseType = Base->getType(); if (IsArrow) { |