From 9b30b267e77d1778e1e9b7c44b6852489c2c5096 Mon Sep 17 00:00:00 2001 From: Douglas Gregor Date: Tue, 15 Jun 2010 20:26:51 +0000 Subject: [PATCH] Teach code completion not to ignore data members when performing code completion for expressions. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@106037 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Sema/SemaCodeComplete.cpp | 4 ++-- test/Index/code-completion.cpp | 13 +++++++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/lib/Sema/SemaCodeComplete.cpp b/lib/Sema/SemaCodeComplete.cpp index d40853d724..cb84ca6deb 100644 --- a/lib/Sema/SemaCodeComplete.cpp +++ b/lib/Sema/SemaCodeComplete.cpp @@ -790,7 +790,7 @@ bool ResultBuilder::IsOrdinaryName(NamedDecl *ND) const { unsigned IDNS = Decl::IDNS_Ordinary; if (SemaRef.getLangOptions().CPlusPlus) - IDNS |= Decl::IDNS_Tag | Decl::IDNS_Namespace; + IDNS |= Decl::IDNS_Tag | Decl::IDNS_Namespace | Decl::IDNS_Member; else if (SemaRef.getLangOptions().ObjC1 && isa(ND)) return true; @@ -806,7 +806,7 @@ bool ResultBuilder::IsOrdinaryNonTypeName(NamedDecl *ND) const { unsigned IDNS = Decl::IDNS_Ordinary; if (SemaRef.getLangOptions().CPlusPlus) - IDNS |= Decl::IDNS_Tag | Decl::IDNS_Namespace; + IDNS |= Decl::IDNS_Tag | Decl::IDNS_Namespace | Decl::IDNS_Member; else if (SemaRef.getLangOptions().ObjC1 && isa(ND)) return true; diff --git a/test/Index/code-completion.cpp b/test/Index/code-completion.cpp index 670b13f634..1d50fd3469 100644 --- a/test/Index/code-completion.cpp +++ b/test/Index/code-completion.cpp @@ -33,6 +33,10 @@ void test_overloaded() { overloaded(Z(), 0); } +Z::operator int() const { + return 0; +} + // CHECK-MEMBER: FieldDecl:{ResultType double}{TypedText member} // CHECK-MEMBER: FieldDecl:{ResultType int}{Text X::}{TypedText member} // CHECK-MEMBER: FieldDecl:{ResultType float}{Text Y::}{TypedText member} @@ -52,3 +56,12 @@ void test_overloaded() { // CHECK-OVERLOAD: NotImplemented:{ResultType int &}{Text overloaded}{LeftParen (}{Text Z z}{Comma , }{CurrentParameter int second}{RightParen )} // CHECK-OVERLOAD: NotImplemented:{ResultType float &}{Text overloaded}{LeftParen (}{Text int i}{Comma , }{CurrentParameter long second}{RightParen )} // CHECK-OVERLOAD: NotImplemented:{ResultType double &}{Text overloaded}{LeftParen (}{Text float f}{Comma , }{CurrentParameter int second}{RightParen )} + +// RUN: c-index-test -code-completion-at=%s:37:10 %s | FileCheck -check-prefix=CHECK-EXPR %s +// CHECK-EXPR: NotImplemented:{TypedText int} (40) +// CHECK-EXPR: NotImplemented:{TypedText long} (40) +// CHECK-EXPR: FieldDecl:{ResultType double}{TypedText member} (10) +// CHECK-EXPR: FieldDecl:{ResultType int}{Text X::}{TypedText member} (5) +// CHECK-EXPR: FieldDecl:{ResultType float}{Text Y::}{TypedText member} (11) +// CHECK-EXPR: FunctionDecl:{ResultType void}{TypedText memfunc}{LeftParen (}{Optional {Placeholder int i}}{RightParen )} (22) + -- 2.40.0