[PATCH] D130363: [clang] Give priority to Class context while parsing declarations

2022-07-29 Thread Furkan via Phabricator via cfe-commits
furkanusta updated this revision to Diff 448694.
furkanusta added a comment.

- [clang] Add test case for D130363 


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D130363/new/

https://reviews.llvm.org/D130363

Files:
  clang/lib/Parse/ParseDecl.cpp
  clang/test/CodeCompletion/overrides.cpp


Index: clang/test/CodeCompletion/overrides.cpp
===
--- clang/test/CodeCompletion/overrides.cpp
+++ clang/test/CodeCompletion/overrides.cpp
@@ -8,6 +8,11 @@
 virtual int ttt(bool param, int x = 3) const;
 void vfunc(bool param, int p) override;
 };
+void foo() {
+  class D : public A {
+
+  };
+}
 class C : public B {
  public:
   void vfunc(bool param) override;
@@ -15,19 +20,23 @@
 };
 
 // Runs completion at ^vf
-// RUN: %clang_cc1 -fsyntax-only -code-completion-at=%s:14:3 %s -o - | 
FileCheck -check-prefix=CHECK-CC1 %s
+// RUN: %clang_cc1 -fsyntax-only -code-completion-at=%s:19:3 %s -o - | 
FileCheck -check-prefix=CHECK-CC1 %s
 // CHECK-CC1: COMPLETION: Pattern : int ttt(bool param, int x = 3) const 
override{{$}}
 // CHECK-CC1: COMPLETION: Pattern : void vfunc(bool param, int p) override{{$}}
 // CHECK-CC1-NOT: COMPLETION: Pattern : void vfunc(bool param) override{{$}}
 //
 // Runs completion at vf^
-// RUN: %clang_cc1 -fsyntax-only -code-completion-at=%s:14:5 %s -o - | 
FileCheck -check-prefix=CHECK-CC2 %s
+// RUN: %clang_cc1 -fsyntax-only -code-completion-at=%s:19:5 %s -o - | 
FileCheck -check-prefix=CHECK-CC2 %s
 // CHECK-CC2-NOT: COMPLETION: Pattern : int ttt(bool param, int x = 3) const 
override{{$}}
 // CHECK-CC2: COMPLETION: Pattern : void vfunc(bool param, int p) override{{$}}
 // CHECK-CC2-NOT: COMPLETION: Pattern : void vfunc(bool param) override{{$}}
 //
-// Runs completion at void ^ on line 13.
-// RUN: %clang_cc1 -fsyntax-only -code-completion-at=%s:13:8 %s -o - | 
FileCheck -check-prefix=CHECK-CC3 %s
+// Runs completion at void ^ on line 18.
+// RUN: %clang_cc1 -fsyntax-only -code-completion-at=%s:18:8 %s -o - | 
FileCheck -check-prefix=CHECK-CC3 %s
 // CHECK-CC3-NOT: COMPLETION: Pattern : int ttt(bool param, int x = 3) const 
override{{$}}
 // CHECK-CC3-NOT: COMPLETION: Pattern : void vfunc(bool param, int p) 
override{{$}}
 // CHECK-CC3-NOT: COMPLETION: Pattern : void vfunc(bool param) override{{$}}
+//
+// Runs completion at empty line on line 13.
+// RUN: %clang_cc1 -fsyntax-only -code-completion-patterns 
-code-completion-at=%s:13:1 %s -o - | FileCheck -check-prefix=CHECK-CC4 %s
+// CHECK-CC4: COMPLETION: Pattern : void vfunc(bool param) override{{$}}
Index: clang/lib/Parse/ParseDecl.cpp
===
--- clang/lib/Parse/ParseDecl.cpp
+++ clang/lib/Parse/ParseDecl.cpp
@@ -3266,13 +3266,14 @@
 return;
   }
 
-  if (getCurScope()->getFnParent() || getCurScope()->getBlockParent())
-CCC = Sema::PCC_LocalDeclarationSpecifiers;
-  else if (TemplateInfo.Kind != ParsedTemplateInfo::NonTemplate)
+  // Class context can appear inside a function/block, so prioritise that.
+  if (TemplateInfo.Kind != ParsedTemplateInfo::NonTemplate)
 CCC = DSContext == DeclSpecContext::DSC_class ? 
Sema::PCC_MemberTemplate
   : Sema::PCC_Template;
   else if (DSContext == DeclSpecContext::DSC_class)
 CCC = Sema::PCC_Class;
+  else if (getCurScope()->getFnParent() || getCurScope()->getBlockParent())
+CCC = Sema::PCC_LocalDeclarationSpecifiers;
   else if (CurParsedObjCImpl)
 CCC = Sema::PCC_ObjCImplementation;
 


Index: clang/test/CodeCompletion/overrides.cpp
===
--- clang/test/CodeCompletion/overrides.cpp
+++ clang/test/CodeCompletion/overrides.cpp
@@ -8,6 +8,11 @@
 virtual int ttt(bool param, int x = 3) const;
 void vfunc(bool param, int p) override;
 };
+void foo() {
+  class D : public A {
+
+  };
+}
 class C : public B {
  public:
   void vfunc(bool param) override;
@@ -15,19 +20,23 @@
 };
 
 // Runs completion at ^vf
-// RUN: %clang_cc1 -fsyntax-only -code-completion-at=%s:14:3 %s -o - | FileCheck -check-prefix=CHECK-CC1 %s
+// RUN: %clang_cc1 -fsyntax-only -code-completion-at=%s:19:3 %s -o - | FileCheck -check-prefix=CHECK-CC1 %s
 // CHECK-CC1: COMPLETION: Pattern : int ttt(bool param, int x = 3) const override{{$}}
 // CHECK-CC1: COMPLETION: Pattern : void vfunc(bool param, int p) override{{$}}
 // CHECK-CC1-NOT: COMPLETION: Pattern : void vfunc(bool param) override{{$}}
 //
 // Runs completion at vf^
-// RUN: %clang_cc1 -fsyntax-only -code-completion-at=%s:14:5 %s -o - | FileCheck -check-prefix=CHECK-CC2 %s
+// RUN: %clang_cc1 -fsyntax-only -code-completion-at=%s:19:5 %s -o - | FileCheck -check-prefix=CHECK-CC2 %s
 // CHECK-CC2-NOT: COMPLETION: Pattern : int ttt(bool param, int x = 3) const override{{$}}
 // CHECK-CC2: COMPLETI

[PATCH] D130363: [clang] Give priority to Class context while parsing declarations

2022-07-29 Thread Furkan via Phabricator via cfe-commits
furkanusta added a comment.

I've added a test case but I have a question.
This is regardless of the current issue (i.e. no function context, clang++14 
with no patches)

  struct X {
  virtual void foo();
  };
  struct Y : public X {
  over
  };

I am trying to complete override in class Y here, but I get no result.
The command I am using is:
clang++ -cc1 -xc++  -code-completion-patterns -fsyntax-only 
-code-completion-at="test.cpp:5:2" test.cpp
The only output I get is: COMPLETION: operator
If I start the completion at the first column I receive the correct result. 
Is my invocation correct or is this case handled by clangd and not clang?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D130363/new/

https://reviews.llvm.org/D130363

___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D130363: [clang] Give priority to Class context while parsing declarations

2022-08-10 Thread Furkan via Phabricator via cfe-commits
furkanusta updated this revision to Diff 451604.
furkanusta added a comment.

- [clangd] D130363  
(CodeCompletion/overrides.cpp) Move tests to bottom


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D130363/new/

https://reviews.llvm.org/D130363

Files:
  clang/lib/Parse/ParseDecl.cpp
  clang/test/CodeCompletion/overrides.cpp


Index: clang/test/CodeCompletion/overrides.cpp
===
--- clang/test/CodeCompletion/overrides.cpp
+++ clang/test/CodeCompletion/overrides.cpp
@@ -31,3 +31,13 @@
 // CHECK-CC3-NOT: COMPLETION: Pattern : int ttt(bool param, int x = 3) const 
override{{$}}
 // CHECK-CC3-NOT: COMPLETION: Pattern : void vfunc(bool param, int p) 
override{{$}}
 // CHECK-CC3-NOT: COMPLETION: Pattern : void vfunc(bool param) override{{$}}
+
+void func() {
+  class D : public A {
+
+  };
+}
+
+// Runs completion at empty line on line 37.
+// RUN: not %clang_cc1 -fsyntax-only -code-completion-at=%s:37:1 %s -o - | 
FileCheck -check-prefix=CHECK-CC4 %s
+// CHECK-CC4: COMPLETION: Pattern : void vfunc(bool param, int p) override{{$}}
Index: clang/lib/Parse/ParseDecl.cpp
===
--- clang/lib/Parse/ParseDecl.cpp
+++ clang/lib/Parse/ParseDecl.cpp
@@ -3266,13 +3266,14 @@
 return;
   }
 
-  if (getCurScope()->getFnParent() || getCurScope()->getBlockParent())
-CCC = Sema::PCC_LocalDeclarationSpecifiers;
-  else if (TemplateInfo.Kind != ParsedTemplateInfo::NonTemplate)
+  // Class context can appear inside a function/block, so prioritise that.
+  if (TemplateInfo.Kind != ParsedTemplateInfo::NonTemplate)
 CCC = DSContext == DeclSpecContext::DSC_class ? 
Sema::PCC_MemberTemplate
   : Sema::PCC_Template;
   else if (DSContext == DeclSpecContext::DSC_class)
 CCC = Sema::PCC_Class;
+  else if (getCurScope()->getFnParent() || getCurScope()->getBlockParent())
+CCC = Sema::PCC_LocalDeclarationSpecifiers;
   else if (CurParsedObjCImpl)
 CCC = Sema::PCC_ObjCImplementation;
 


Index: clang/test/CodeCompletion/overrides.cpp
===
--- clang/test/CodeCompletion/overrides.cpp
+++ clang/test/CodeCompletion/overrides.cpp
@@ -31,3 +31,13 @@
 // CHECK-CC3-NOT: COMPLETION: Pattern : int ttt(bool param, int x = 3) const override{{$}}
 // CHECK-CC3-NOT: COMPLETION: Pattern : void vfunc(bool param, int p) override{{$}}
 // CHECK-CC3-NOT: COMPLETION: Pattern : void vfunc(bool param) override{{$}}
+
+void func() {
+  class D : public A {
+
+  };
+}
+
+// Runs completion at empty line on line 37.
+// RUN: not %clang_cc1 -fsyntax-only -code-completion-at=%s:37:1 %s -o - | FileCheck -check-prefix=CHECK-CC4 %s
+// CHECK-CC4: COMPLETION: Pattern : void vfunc(bool param, int p) override{{$}}
Index: clang/lib/Parse/ParseDecl.cpp
===
--- clang/lib/Parse/ParseDecl.cpp
+++ clang/lib/Parse/ParseDecl.cpp
@@ -3266,13 +3266,14 @@
 return;
   }
 
-  if (getCurScope()->getFnParent() || getCurScope()->getBlockParent())
-CCC = Sema::PCC_LocalDeclarationSpecifiers;
-  else if (TemplateInfo.Kind != ParsedTemplateInfo::NonTemplate)
+  // Class context can appear inside a function/block, so prioritise that.
+  if (TemplateInfo.Kind != ParsedTemplateInfo::NonTemplate)
 CCC = DSContext == DeclSpecContext::DSC_class ? Sema::PCC_MemberTemplate
   : Sema::PCC_Template;
   else if (DSContext == DeclSpecContext::DSC_class)
 CCC = Sema::PCC_Class;
+  else if (getCurScope()->getFnParent() || getCurScope()->getBlockParent())
+CCC = Sema::PCC_LocalDeclarationSpecifiers;
   else if (CurParsedObjCImpl)
 CCC = Sema::PCC_ObjCImplementation;
 
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D130363: [clang] Give priority to Class context while parsing declarations

2022-07-22 Thread Furkan via Phabricator via cfe-commits
furkanusta created this revision.
Herald added subscribers: usaxena95, kadircet.
Herald added a project: All.
furkanusta requested review of this revision.
Herald added subscribers: cfe-commits, ilya-biryukov.
Herald added a project: clang.

Fixes: https://github.com/clangd/clangd/issues/290


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D130363

Files:
  clang/lib/Parse/ParseDecl.cpp


Index: clang/lib/Parse/ParseDecl.cpp
===
--- clang/lib/Parse/ParseDecl.cpp
+++ clang/lib/Parse/ParseDecl.cpp
@@ -3266,13 +3266,13 @@
 return;
   }
 
-  if (getCurScope()->getFnParent() || getCurScope()->getBlockParent())
-CCC = Sema::PCC_LocalDeclarationSpecifiers;
-  else if (TemplateInfo.Kind != ParsedTemplateInfo::NonTemplate)
+  if (TemplateInfo.Kind != ParsedTemplateInfo::NonTemplate)
 CCC = DSContext == DeclSpecContext::DSC_class ? 
Sema::PCC_MemberTemplate
   : Sema::PCC_Template;
   else if (DSContext == DeclSpecContext::DSC_class)
 CCC = Sema::PCC_Class;
+  else if (getCurScope()->getFnParent() || getCurScope()->getBlockParent())
+CCC = Sema::PCC_LocalDeclarationSpecifiers;
   else if (CurParsedObjCImpl)
 CCC = Sema::PCC_ObjCImplementation;
 


Index: clang/lib/Parse/ParseDecl.cpp
===
--- clang/lib/Parse/ParseDecl.cpp
+++ clang/lib/Parse/ParseDecl.cpp
@@ -3266,13 +3266,13 @@
 return;
   }
 
-  if (getCurScope()->getFnParent() || getCurScope()->getBlockParent())
-CCC = Sema::PCC_LocalDeclarationSpecifiers;
-  else if (TemplateInfo.Kind != ParsedTemplateInfo::NonTemplate)
+  if (TemplateInfo.Kind != ParsedTemplateInfo::NonTemplate)
 CCC = DSContext == DeclSpecContext::DSC_class ? Sema::PCC_MemberTemplate
   : Sema::PCC_Template;
   else if (DSContext == DeclSpecContext::DSC_class)
 CCC = Sema::PCC_Class;
+  else if (getCurScope()->getFnParent() || getCurScope()->getBlockParent())
+CCC = Sema::PCC_LocalDeclarationSpecifiers;
   else if (CurParsedObjCImpl)
 CCC = Sema::PCC_ObjCImplementation;
 
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D130363: [clang] Give priority to Class context while parsing declarations

2022-08-11 Thread Furkan via Phabricator via cfe-commits
furkanusta marked an inline comment as not done.
furkanusta added a comment.

That would be great, thanks




Comment at: clang/test/CodeCompletion/overrides.cpp:41
+// Runs completion at empty line on line 13.
+// RUN: %clang_cc1 -fsyntax-only -code-completion-patterns 
-code-completion-at=%s:13:1 %s -o - | FileCheck -check-prefix=CHECK-CC4 %s
+// CHECK-CC4: COMPLETION: Pattern : void vfunc(bool param) override{{$}}

kadircet wrote:
> no need for `-code-completion-patterns`. can you also move the new test case 
> below (after `CHECK-CC3-NOT`) that way we get to keep the line numbers for 
> old tests the same.
I put the test in between because anything after vf on line 14 gives an error. 

error: unknown type name 'vf'
  vf
  ^

It still outputs the correct completions but since the return code is non-zero, 
FileCheck fails 



Comment at: clang/test/CodeCompletion/overrides.cpp:41
+// Runs completion at empty line on line 13.
+// RUN: %clang_cc1 -fsyntax-only -code-completion-patterns 
-code-completion-at=%s:13:1 %s -o - | FileCheck -check-prefix=CHECK-CC4 %s
+// CHECK-CC4: COMPLETION: Pattern : void vfunc(bool param) override{{$}}

furkanusta wrote:
> kadircet wrote:
> > no need for `-code-completion-patterns`. can you also move the new test 
> > case below (after `CHECK-CC3-NOT`) that way we get to keep the line numbers 
> > for old tests the same.
> I put the test in between because anything after vf on line 14 gives an 
> error. 
> 
> error: unknown type name 'vf'
>   vf
>   ^
> 
> It still outputs the correct completions but since the return code is 
> non-zero, FileCheck fails 
I've found from one of the others tests it is possible to invert the return 
code from clang.
This way I  was able to move the newly added test to bottom.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D130363/new/

https://reviews.llvm.org/D130363

___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D127629: [clang] Use correct visibility parameters when following a Using declaration

2022-06-13 Thread Furkan via Phabricator via cfe-commits
furkanusta created this revision.
Herald added subscribers: usaxena95, kadircet, arphaman.
Herald added a project: All.
furkanusta requested review of this revision.
Herald added subscribers: cfe-commits, ilya-biryukov.
Herald added projects: clang, clang-tools-extra.

Fixes clangd issue #1137


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D127629

Files:
  clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp
  clang/lib/Sema/SemaCodeComplete.cpp


Index: clang/lib/Sema/SemaCodeComplete.cpp
===
--- clang/lib/Sema/SemaCodeComplete.cpp
+++ clang/lib/Sema/SemaCodeComplete.cpp
@@ -1268,7 +1268,9 @@
   if (const auto *Using = dyn_cast(R.Declaration)) {
 CodeCompletionResult Result(Using->getTargetDecl(),
 getBasePriority(Using->getTargetDecl()),
-R.Qualifier);
+R.Qualifier, false,
+(R.Availability == CXAvailability_Available ||
+ R.Availability == CXAvailability_Deprecated));
 Result.ShadowDecl = Using;
 AddResult(Result, CurContext, Hiding);
 return;
Index: clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp
===
--- clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp
+++ clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp
@@ -413,6 +413,23 @@
   )cpp");
   EXPECT_THAT(External.Completions,
   AllOf(has("pub"), Not(has("prot")), Not(has("priv";
+
+  auto Results = completions(R"cpp(
+  struct Foo {
+public: void pub();
+protected: void prot();
+private: void priv();
+  };
+  struct Bar : public Foo {
+private: using Foo::pub;
+  };
+  void test() {
+Bar B;
+B.^
+  }
+  )cpp");
+  EXPECT_THAT(Results.Completions,
+  AllOf(Not(has("priv")), Not(has("prot")), Not(has("pub";
 }
 
 TEST(CompletionTest, Qualifiers) {


Index: clang/lib/Sema/SemaCodeComplete.cpp
===
--- clang/lib/Sema/SemaCodeComplete.cpp
+++ clang/lib/Sema/SemaCodeComplete.cpp
@@ -1268,7 +1268,9 @@
   if (const auto *Using = dyn_cast(R.Declaration)) {
 CodeCompletionResult Result(Using->getTargetDecl(),
 getBasePriority(Using->getTargetDecl()),
-R.Qualifier);
+R.Qualifier, false,
+(R.Availability == CXAvailability_Available ||
+ R.Availability == CXAvailability_Deprecated));
 Result.ShadowDecl = Using;
 AddResult(Result, CurContext, Hiding);
 return;
Index: clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp
===
--- clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp
+++ clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp
@@ -413,6 +413,23 @@
   )cpp");
   EXPECT_THAT(External.Completions,
   AllOf(has("pub"), Not(has("prot")), Not(has("priv";
+
+  auto Results = completions(R"cpp(
+  struct Foo {
+public: void pub();
+protected: void prot();
+private: void priv();
+  };
+  struct Bar : public Foo {
+private: using Foo::pub;
+  };
+  void test() {
+Bar B;
+B.^
+  }
+  )cpp");
+  EXPECT_THAT(Results.Completions,
+  AllOf(Not(has("priv")), Not(has("prot")), Not(has("pub";
 }
 
 TEST(CompletionTest, Qualifiers) {
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D127629: [clang] Use correct visibility parameters when following a Using declaration

2022-06-13 Thread Furkan via Phabricator via cfe-commits
furkanusta added a comment.

I wasn't sure if I should add a URL to the commit message for easy access but 
here is the corresponding clangd issue: 
https://github.com/clangd/clangd/issues/1137


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D127629/new/

https://reviews.llvm.org/D127629

___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D127629: [clang] Use correct visibility parameters when following a Using declaration

2022-06-13 Thread Furkan via Phabricator via cfe-commits
furkanusta updated this revision to Diff 436369.
furkanusta added a comment.

[clang] Use correct visibility parameters when following a Using declaration

Fixes https://github.com/clangd/clangd/issues/1137


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D127629/new/

https://reviews.llvm.org/D127629

Files:
  clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp
  clang/lib/Sema/SemaCodeComplete.cpp


Index: clang/lib/Sema/SemaCodeComplete.cpp
===
--- clang/lib/Sema/SemaCodeComplete.cpp
+++ clang/lib/Sema/SemaCodeComplete.cpp
@@ -1095,7 +1095,9 @@
   if (const UsingShadowDecl *Using = dyn_cast(R.Declaration)) 
{
 CodeCompletionResult Result(Using->getTargetDecl(),
 getBasePriority(Using->getTargetDecl()),
-R.Qualifier);
+R.Qualifier, false,
+(R.Availability == CXAvailability_Available ||
+ R.Availability == CXAvailability_Deprecated));
 Result.ShadowDecl = Using;
 MaybeAddResult(Result, CurContext);
 return;
@@ -1268,7 +1270,9 @@
   if (const auto *Using = dyn_cast(R.Declaration)) {
 CodeCompletionResult Result(Using->getTargetDecl(),
 getBasePriority(Using->getTargetDecl()),
-R.Qualifier);
+R.Qualifier, false,
+(R.Availability == CXAvailability_Available ||
+ R.Availability == CXAvailability_Deprecated));
 Result.ShadowDecl = Using;
 AddResult(Result, CurContext, Hiding);
 return;
Index: clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp
===
--- clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp
+++ clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp
@@ -413,6 +413,23 @@
   )cpp");
   EXPECT_THAT(External.Completions,
   AllOf(has("pub"), Not(has("prot")), Not(has("priv";
+
+  auto Results = completions(R"cpp(
+  struct Foo {
+public: void pub();
+protected: void prot();
+private: void priv();
+  };
+  struct Bar : public Foo {
+private: using Foo::pub;
+  };
+  void test() {
+Bar B;
+B.^
+  }
+  )cpp");
+  EXPECT_THAT(Results.Completions,
+  AllOf(Not(has("priv")), Not(has("prot")), Not(has("pub";
 }
 
 TEST(CompletionTest, Qualifiers) {


Index: clang/lib/Sema/SemaCodeComplete.cpp
===
--- clang/lib/Sema/SemaCodeComplete.cpp
+++ clang/lib/Sema/SemaCodeComplete.cpp
@@ -1095,7 +1095,9 @@
   if (const UsingShadowDecl *Using = dyn_cast(R.Declaration)) {
 CodeCompletionResult Result(Using->getTargetDecl(),
 getBasePriority(Using->getTargetDecl()),
-R.Qualifier);
+R.Qualifier, false,
+(R.Availability == CXAvailability_Available ||
+ R.Availability == CXAvailability_Deprecated));
 Result.ShadowDecl = Using;
 MaybeAddResult(Result, CurContext);
 return;
@@ -1268,7 +1270,9 @@
   if (const auto *Using = dyn_cast(R.Declaration)) {
 CodeCompletionResult Result(Using->getTargetDecl(),
 getBasePriority(Using->getTargetDecl()),
-R.Qualifier);
+R.Qualifier, false,
+(R.Availability == CXAvailability_Available ||
+ R.Availability == CXAvailability_Deprecated));
 Result.ShadowDecl = Using;
 AddResult(Result, CurContext, Hiding);
 return;
Index: clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp
===
--- clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp
+++ clang-tools-extra/clangd/unittests/CodeCompleteTests.cpp
@@ -413,6 +413,23 @@
   )cpp");
   EXPECT_THAT(External.Completions,
   AllOf(has("pub"), Not(has("prot")), Not(has("priv";
+
+  auto Results = completions(R"cpp(
+  struct Foo {
+public: void pub();
+protected: void prot();
+private: void priv();
+  };
+  struct Bar : public Foo {
+private: using Foo::pub;
+  };
+  void test() {
+Bar B;
+B.^
+  }
+  )cpp");
+  EXPECT_THAT(Results.Completions,
+  AllOf(Not(has("priv")), Not(has("prot")), Not(has("pub";
 }
 
 TEST(CompletionTest, Qualifiers) {
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D127629: [clang] Use correct visibility parameters when following a Using declaration

2022-06-15 Thread Furkan via Phabricator via cfe-commits
furkanusta added a comment.

I don't think I have a commit access this is my first contribution. I 
appreciate if you can do it for me.

My mail address is:  furkanust...@gmail.com

I had my github account linked and expecting for my mail to get fetched 
automatically.
To make things easier should I sign my commits in the future or is there a 
variable that I can set in the Arcanist tool?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D127629/new/

https://reviews.llvm.org/D127629

___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits