[PATCH] D87257: [clang] Traverse init-captures while indexing

2020-09-22 Thread Nathan Ridge via Phabricator via cfe-commits
This revision was landed with ongoing or failed builds.
This revision was automatically updated to reflect the committed changes.
Closed by commit rGaa3c7638ba16: [clang] Traverse init-captures while indexing 
(authored by nridge).

Changed prior to commit:
  https://reviews.llvm.org/D87257?vs=293040=293350#toc

Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D87257

Files:
  clang-tools-extra/clangd/unittests/XRefsTests.cpp
  clang/lib/Index/IndexBody.cpp
  clang/test/Index/cxx14-lambdas.cpp


Index: clang/test/Index/cxx14-lambdas.cpp
===
--- clang/test/Index/cxx14-lambdas.cpp
+++ clang/test/Index/cxx14-lambdas.cpp
@@ -28,7 +28,9 @@
 // CHECK-LOAD: cxx14-lambdas.cpp:8:7: ReturnStmt= Extent=[8:7 - 8:29]
 
 // RUN: env CINDEXTEST_INDEXLOCALSYMBOLS=1 c-index-test -index-file -std=c++14 
%s | FileCheck -check-prefix=CHECK-INDEX %s
+// CHECK-INDEX: [indexEntityReference]: kind: variable | name: localA | USR: 
c:cxx14-lambdas.cpp@100@S@X@F@f#@localA | lang: C | cursor: 
DeclRefExpr=localA:6:9 | loc: 7:27
 // CHECK-INDEX: [indexEntityReference]: kind: variable | name: ptr | USR: 
c:cxx14-lambdas.cpp@139@S@X@F@f#@Sa@F@operator()#I#1@ptr | lang: C | cursor: 
VariableRef=ptr:7:20 | loc: 7:20
+// CHECK-INDEX: [indexEntityReference]: kind: variable | name: localB | USR: 
c:cxx14-lambdas.cpp@100@S@X@F@f#@localB | lang: C | cursor: 
DeclRefExpr=localB:6:17 | loc: 7:42
 // CHECK-INDEX: [indexEntityReference]: kind: variable | name: copy | USR: 
c:cxx14-lambdas.cpp@154@S@X@F@f#@Sa@F@operator()#I#1@copy | lang: C | cursor: 
VariableRef=copy:7:35 | loc: 7:35
 // CHECK-INDEX: [indexDeclaration]: kind: variable | name: x | USR: 
c:cxx14-lambdas.cpp@170@S@X@F@f#@Sa@F@operator()#I#1@x | lang: C | cursor: 
ParmDecl=x:7:59 (Definition) | loc: 7:59
 // CHECK-INDEX: [indexEntityReference]: kind: typedef | name: Integer | USR: 
c:cxx14-lambdas.cpp@T@Integer | lang: C | cursor: TypeRef=Integer:3:13 | loc: 
7:51
Index: clang/lib/Index/IndexBody.cpp
===
--- clang/lib/Index/IndexBody.cpp
+++ clang/lib/Index/IndexBody.cpp
@@ -391,11 +391,13 @@
 if (C->capturesThis() || C->capturesVLAType())
   return true;
 
+if (!base::TraverseStmt(Init))
+  return false;
+
 if (C->capturesVariable() && IndexCtx.shouldIndexFunctionLocalSymbols())
   return IndexCtx.handleReference(C->getCapturedVar(), C->getLocation(),
   Parent, ParentDC, SymbolRoleSet());
 
-// FIXME: Lambda init-captures.
 return true;
   }
 
Index: clang-tools-extra/clangd/unittests/XRefsTests.cpp
===
--- clang-tools-extra/clangd/unittests/XRefsTests.cpp
+++ clang-tools-extra/clangd/unittests/XRefsTests.cpp
@@ -1582,6 +1582,12 @@
   f.[[^~]]Foo();
 }
   )cpp",
+  R"cpp(// Lambda capture initializer
+void foo() {
+  int [[w^aldo]] = 42;
+  auto lambda = [x = [[waldo]]](){};
+}
+  )cpp",
   };
   for (const char *Test : Tests) {
 Annotations T(Test);


Index: clang/test/Index/cxx14-lambdas.cpp
===
--- clang/test/Index/cxx14-lambdas.cpp
+++ clang/test/Index/cxx14-lambdas.cpp
@@ -28,7 +28,9 @@
 // CHECK-LOAD: cxx14-lambdas.cpp:8:7: ReturnStmt= Extent=[8:7 - 8:29]
 
 // RUN: env CINDEXTEST_INDEXLOCALSYMBOLS=1 c-index-test -index-file -std=c++14 %s | FileCheck -check-prefix=CHECK-INDEX %s
+// CHECK-INDEX: [indexEntityReference]: kind: variable | name: localA | USR: c:cxx14-lambdas.cpp@100@S@X@F@f#@localA | lang: C | cursor: DeclRefExpr=localA:6:9 | loc: 7:27
 // CHECK-INDEX: [indexEntityReference]: kind: variable | name: ptr | USR: c:cxx14-lambdas.cpp@139@S@X@F@f#@Sa@F@operator()#I#1@ptr | lang: C | cursor: VariableRef=ptr:7:20 | loc: 7:20
+// CHECK-INDEX: [indexEntityReference]: kind: variable | name: localB | USR: c:cxx14-lambdas.cpp@100@S@X@F@f#@localB | lang: C | cursor: DeclRefExpr=localB:6:17 | loc: 7:42
 // CHECK-INDEX: [indexEntityReference]: kind: variable | name: copy | USR: c:cxx14-lambdas.cpp@154@S@X@F@f#@Sa@F@operator()#I#1@copy | lang: C | cursor: VariableRef=copy:7:35 | loc: 7:35
 // CHECK-INDEX: [indexDeclaration]: kind: variable | name: x | USR: c:cxx14-lambdas.cpp@170@S@X@F@f#@Sa@F@operator()#I#1@x | lang: C | cursor: ParmDecl=x:7:59 (Definition) | loc: 7:59
 // CHECK-INDEX: [indexEntityReference]: kind: typedef | name: Integer | USR: c:cxx14-lambdas.cpp@T@Integer | lang: C | cursor: TypeRef=Integer:3:13 | loc: 7:51
Index: clang/lib/Index/IndexBody.cpp
===
--- clang/lib/Index/IndexBody.cpp
+++ clang/lib/Index/IndexBody.cpp
@@ -391,11 +391,13 @@
 if (C->capturesThis() || C->capturesVLAType())
   return true;
 
+if 

[PATCH] D87257: [clang] Traverse init-captures while indexing

2020-09-20 Thread Nathan Ridge via Phabricator via cfe-commits
nridge updated this revision to Diff 293040.
nridge added a comment.

Add clang test


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D87257

Files:
  clang-tools-extra/clangd/unittests/XRefsTests.cpp
  clang/lib/Index/IndexBody.cpp
  clang/test/Index/cxx14-lambdas.cpp


Index: clang/test/Index/cxx14-lambdas.cpp
===
--- clang/test/Index/cxx14-lambdas.cpp
+++ clang/test/Index/cxx14-lambdas.cpp
@@ -28,7 +28,9 @@
 // CHECK-LOAD: cxx14-lambdas.cpp:8:7: ReturnStmt= Extent=[8:7 - 8:29]
 
 // RUN: env CINDEXTEST_INDEXLOCALSYMBOLS=1 c-index-test -index-file -std=c++14 
%s | FileCheck -check-prefix=CHECK-INDEX %s
+// CHECK-INDEX: [indexEntityReference]: kind: variable | name: localA | USR: 
c:cxx14-lambdas.cpp@100@S@X@F@f#@localA | lang: C | cursor: 
DeclRefExpr=localA:6:9 | loc: 7:27
 // CHECK-INDEX: [indexEntityReference]: kind: variable | name: ptr | USR: 
c:cxx14-lambdas.cpp@139@S@X@F@f#@Sa@F@operator()#I#1@ptr | lang: C | cursor: 
VariableRef=ptr:7:20 | loc: 7:20
+// CHECK-INDEX: [indexEntityReference]: kind: variable | name: localB | USR: 
c:cxx14-lambdas.cpp@100@S@X@F@f#@localB | lang: C | cursor: 
DeclRefExpr=localB:6:17 | loc: 7:42
 // CHECK-INDEX: [indexEntityReference]: kind: variable | name: copy | USR: 
c:cxx14-lambdas.cpp@154@S@X@F@f#@Sa@F@operator()#I#1@copy | lang: C | cursor: 
VariableRef=copy:7:35 | loc: 7:35
 // CHECK-INDEX: [indexDeclaration]: kind: variable | name: x | USR: 
c:cxx14-lambdas.cpp@170@S@X@F@f#@Sa@F@operator()#I#1@x | lang: C | cursor: 
ParmDecl=x:7:59 (Definition) | loc: 7:59
 // CHECK-INDEX: [indexEntityReference]: kind: typedef | name: Integer | USR: 
c:cxx14-lambdas.cpp@T@Integer | lang: C | cursor: TypeRef=Integer:3:13 | loc: 
7:51
Index: clang/lib/Index/IndexBody.cpp
===
--- clang/lib/Index/IndexBody.cpp
+++ clang/lib/Index/IndexBody.cpp
@@ -391,11 +391,13 @@
 if (C->capturesThis() || C->capturesVLAType())
   return true;
 
+if (!base::TraverseStmt(Init))
+  return false;
+
 if (C->capturesVariable() && IndexCtx.shouldIndexFunctionLocalSymbols())
   return IndexCtx.handleReference(C->getCapturedVar(), C->getLocation(),
   Parent, ParentDC, SymbolRoleSet());
 
-// FIXME: Lambda init-captures.
 return true;
   }
 
Index: clang-tools-extra/clangd/unittests/XRefsTests.cpp
===
--- clang-tools-extra/clangd/unittests/XRefsTests.cpp
+++ clang-tools-extra/clangd/unittests/XRefsTests.cpp
@@ -1589,6 +1589,12 @@
 [[Vector]] x2;
 Vector y;
   )cpp",
+  R"cpp(// Lambda capture initializer
+void foo() {
+  int [[w^aldo]] = 42;
+  auto lambda = [x = [[waldo]]](){};
+}
+  )cpp",
   };
   for (const char *Test : Tests) {
 Annotations T(Test);


Index: clang/test/Index/cxx14-lambdas.cpp
===
--- clang/test/Index/cxx14-lambdas.cpp
+++ clang/test/Index/cxx14-lambdas.cpp
@@ -28,7 +28,9 @@
 // CHECK-LOAD: cxx14-lambdas.cpp:8:7: ReturnStmt= Extent=[8:7 - 8:29]
 
 // RUN: env CINDEXTEST_INDEXLOCALSYMBOLS=1 c-index-test -index-file -std=c++14 %s | FileCheck -check-prefix=CHECK-INDEX %s
+// CHECK-INDEX: [indexEntityReference]: kind: variable | name: localA | USR: c:cxx14-lambdas.cpp@100@S@X@F@f#@localA | lang: C | cursor: DeclRefExpr=localA:6:9 | loc: 7:27
 // CHECK-INDEX: [indexEntityReference]: kind: variable | name: ptr | USR: c:cxx14-lambdas.cpp@139@S@X@F@f#@Sa@F@operator()#I#1@ptr | lang: C | cursor: VariableRef=ptr:7:20 | loc: 7:20
+// CHECK-INDEX: [indexEntityReference]: kind: variable | name: localB | USR: c:cxx14-lambdas.cpp@100@S@X@F@f#@localB | lang: C | cursor: DeclRefExpr=localB:6:17 | loc: 7:42
 // CHECK-INDEX: [indexEntityReference]: kind: variable | name: copy | USR: c:cxx14-lambdas.cpp@154@S@X@F@f#@Sa@F@operator()#I#1@copy | lang: C | cursor: VariableRef=copy:7:35 | loc: 7:35
 // CHECK-INDEX: [indexDeclaration]: kind: variable | name: x | USR: c:cxx14-lambdas.cpp@170@S@X@F@f#@Sa@F@operator()#I#1@x | lang: C | cursor: ParmDecl=x:7:59 (Definition) | loc: 7:59
 // CHECK-INDEX: [indexEntityReference]: kind: typedef | name: Integer | USR: c:cxx14-lambdas.cpp@T@Integer | lang: C | cursor: TypeRef=Integer:3:13 | loc: 7:51
Index: clang/lib/Index/IndexBody.cpp
===
--- clang/lib/Index/IndexBody.cpp
+++ clang/lib/Index/IndexBody.cpp
@@ -391,11 +391,13 @@
 if (C->capturesThis() || C->capturesVLAType())
   return true;
 
+if (!base::TraverseStmt(Init))
+  return false;
+
 if (C->capturesVariable() && IndexCtx.shouldIndexFunctionLocalSymbols())
   return IndexCtx.handleReference(C->getCapturedVar(), C->getLocation(),
   

[PATCH] D87257: [clang] Traverse init-captures while indexing

2020-09-20 Thread Nathan Ridge via Phabricator via cfe-commits
nridge added a comment.

In D87257#2260499 , @hokein wrote:

> In D87257#2260022 , @nridge wrote:
>
>> I did try to add a test to `clang/test/Index/Core/index-source.cpp`, however 
>> the output of `c-index-test` does not seem to be changed by adding this 
>> reference.
>
> Could you check `clang/test/Index/cxx14-lambdas.cpp`, looks like that file is 
> testing lambda.

Thank you for the suggestion, I was able to make the test work with 
cxx14-lambdas.cpp.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D87257

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


[PATCH] D87257: [clang] Traverse init-captures while indexing

2020-09-08 Thread Haojian Wu via Phabricator via cfe-commits
hokein added a comment.

In D87257#2260022 , @nridge wrote:

> I did try to add a test to `clang/test/Index/Core/index-source.cpp`, however 
> the output of `c-index-test` does not seem to be changed by adding this 
> reference.

Could you check `clang/test/Index/cxx14-lambdas.cpp`, looks like that file is 
testing lambda.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D87257

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


[PATCH] D87257: [clang] Traverse init-captures while indexing

2020-09-07 Thread Nathan Ridge via Phabricator via cfe-commits
nridge updated this revision to Diff 290379.
nridge added a comment.

Fix typo


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D87257

Files:
  clang-tools-extra/clangd/unittests/XRefsTests.cpp
  clang/lib/Index/IndexBody.cpp


Index: clang/lib/Index/IndexBody.cpp
===
--- clang/lib/Index/IndexBody.cpp
+++ clang/lib/Index/IndexBody.cpp
@@ -391,11 +391,13 @@
 if (C->capturesThis() || C->capturesVLAType())
   return true;
 
+if (!base::TraverseStmt(Init))
+  return false;
+
 if (C->capturesVariable() && IndexCtx.shouldIndexFunctionLocalSymbols())
   return IndexCtx.handleReference(C->getCapturedVar(), C->getLocation(),
   Parent, ParentDC, SymbolRoleSet());
 
-// FIXME: Lambda init-captures.
 return true;
   }
 
Index: clang-tools-extra/clangd/unittests/XRefsTests.cpp
===
--- clang-tools-extra/clangd/unittests/XRefsTests.cpp
+++ clang-tools-extra/clangd/unittests/XRefsTests.cpp
@@ -1589,6 +1589,12 @@
 [[Vector]] x2;
 Vector y;
   )cpp",
+  R"cpp(// Lambda capture initializer
+void foo() {
+  int [[w^aldo]] = 42;
+  auto lambda = [x = [[waldo]]](){};
+}
+  )cpp",
   };
   for (const char *Test : Tests) {
 Annotations T(Test);


Index: clang/lib/Index/IndexBody.cpp
===
--- clang/lib/Index/IndexBody.cpp
+++ clang/lib/Index/IndexBody.cpp
@@ -391,11 +391,13 @@
 if (C->capturesThis() || C->capturesVLAType())
   return true;
 
+if (!base::TraverseStmt(Init))
+  return false;
+
 if (C->capturesVariable() && IndexCtx.shouldIndexFunctionLocalSymbols())
   return IndexCtx.handleReference(C->getCapturedVar(), C->getLocation(),
   Parent, ParentDC, SymbolRoleSet());
 
-// FIXME: Lambda init-captures.
 return true;
   }
 
Index: clang-tools-extra/clangd/unittests/XRefsTests.cpp
===
--- clang-tools-extra/clangd/unittests/XRefsTests.cpp
+++ clang-tools-extra/clangd/unittests/XRefsTests.cpp
@@ -1589,6 +1589,12 @@
 [[Vector]] x2;
 Vector y;
   )cpp",
+  R"cpp(// Lambda capture initializer
+void foo() {
+  int [[w^aldo]] = 42;
+  auto lambda = [x = [[waldo]]](){};
+}
+  )cpp",
   };
   for (const char *Test : Tests) {
 Annotations T(Test);
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D87257: [clang] Traverse init-captures while indexing

2020-09-07 Thread Nathan Ridge via Phabricator via cfe-commits
nridge added a reviewer: hokein.
nridge added a comment.

I did try to add a test to `clang/test/Index/Core/index-source.cpp`, however 
the output of `c-index-test` does not seem to be changed by adding this 
reference.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D87257

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


[PATCH] D87257: [clang] Traverse init-captures while indexing

2020-09-07 Thread Nathan Ridge via Phabricator via cfe-commits
nridge created this revision.
Herald added subscribers: cfe-commits, usaxena95, kadircet, arphaman, jkorous.
Herald added a project: clang.
nridge requested review of this revision.

Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D87257

Files:
  clang-tools-extra/clangd/unittests/XRefsTests.cpp
  clang/lib/Index/IndexBody.cpp


Index: clang/lib/Index/IndexBody.cpp
===
--- clang/lib/Index/IndexBody.cpp
+++ clang/lib/Index/IndexBody.cpp
@@ -391,11 +391,13 @@
 if (C->capturesThis() || C->capturesVLAType())
   return true;
 
+// if (!base::TraverseStmt(Init))
+//  return false;
+
 if (C->capturesVariable() && IndexCtx.shouldIndexFunctionLocalSymbols())
   return IndexCtx.handleReference(C->getCapturedVar(), C->getLocation(),
   Parent, ParentDC, SymbolRoleSet());
 
-// FIXME: Lambda init-captures.
 return true;
   }
 
Index: clang-tools-extra/clangd/unittests/XRefsTests.cpp
===
--- clang-tools-extra/clangd/unittests/XRefsTests.cpp
+++ clang-tools-extra/clangd/unittests/XRefsTests.cpp
@@ -1589,6 +1589,12 @@
 [[Vector]] x2;
 Vector y;
   )cpp",
+  R"cpp(// Lambda capture initializer
+void foo() {
+  int [[w^aldo]] = 42;
+  auto lambda = [x = [[waldo]]](){};
+}
+  )cpp",
   };
   for (const char *Test : Tests) {
 Annotations T(Test);


Index: clang/lib/Index/IndexBody.cpp
===
--- clang/lib/Index/IndexBody.cpp
+++ clang/lib/Index/IndexBody.cpp
@@ -391,11 +391,13 @@
 if (C->capturesThis() || C->capturesVLAType())
   return true;
 
+// if (!base::TraverseStmt(Init))
+//  return false;
+
 if (C->capturesVariable() && IndexCtx.shouldIndexFunctionLocalSymbols())
   return IndexCtx.handleReference(C->getCapturedVar(), C->getLocation(),
   Parent, ParentDC, SymbolRoleSet());
 
-// FIXME: Lambda init-captures.
 return true;
   }
 
Index: clang-tools-extra/clangd/unittests/XRefsTests.cpp
===
--- clang-tools-extra/clangd/unittests/XRefsTests.cpp
+++ clang-tools-extra/clangd/unittests/XRefsTests.cpp
@@ -1589,6 +1589,12 @@
 [[Vector]] x2;
 Vector y;
   )cpp",
+  R"cpp(// Lambda capture initializer
+void foo() {
+  int [[w^aldo]] = 42;
+  auto lambda = [x = [[waldo]]](){};
+}
+  )cpp",
   };
   for (const char *Test : Tests) {
 Annotations T(Test);
___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits