llvmbot wrote:

<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-clang

Author: None (Serafean)

<details>
<summary>Changes</summary>

Modelled after commit 08e18126431878373abfa33136768d0ec7c13def, which did the 
same for If statements.

Tested with KDevelop : with a patched clang, initializers in switch statement 
get cursors.

---
Full diff: https://github.com/llvm/llvm-project/pull/173670.diff


2 Files Affected:

- (added) clang/test/Index/cxx17-switch-with-initializer.cpp (+18) 
- (modified) clang/tools/libclang/CIndex.cpp (+1) 


``````````diff
diff --git a/clang/test/Index/cxx17-switch-with-initializer.cpp 
b/clang/test/Index/cxx17-switch-with-initializer.cpp
new file mode 100644
index 0000000000000..ffa77f318e97a
--- /dev/null
+++ b/clang/test/Index/cxx17-switch-with-initializer.cpp
@@ -0,0 +1,18 @@
+// Test is line- and column-sensitive; see below.
+
+void foo() {
+  switch (int bar = true; bar) {
+  }
+}
+
+// RUN: c-index-test -test-load-source all -std=c++17 %s | FileCheck 
-check-prefix=CHECK %s
+// CHECK: cxx17-switch-with-initializer.cpp:3:6: FunctionDecl=foo:3:6 
(Definition) Extent=[3:1 - 6:2]
+// CHECK: cxx17-switch-with-initializer.cpp:3:12: CompoundStmt= Extent=[3:12 - 
6:2]
+// CHECK: cxx17-switch-with-initializer.cpp:4:3: SwitchStmt= Extent=[4:3 - 5:4]
+// CHECK: cxx17-switch-with-initializer.cpp:4:11: DeclStmt= Extent=[4:11 - 
4:26]
+// CHECK: cxx17-switch-with-initializer.cpp:4:15: VarDecl=bar:4:15 
(Definition) Extent=[4:11 - 4:25]
+// CHECK: cxx17-switch-with-initializer.cpp:4:21: UnexposedExpr= Extent=[4:21 
- 4:25]
+// CHECK: cxx17-switch-with-initializer.cpp:4:21: CXXBoolLiteralExpr= 
Extent=[4:21 - 4:25]
+// CHECK: cxx17-switch-with-initializer.cpp:4:27: UnexposedExpr=bar:4:15 
Extent=[4:27 - 4:30]
+// CHECK: cxx17-switch-with-initializer.cpp:4:27: DeclRefExpr=bar:4:15 
Extent=[4:27 - 4:30]
+// CHECK: cxx17-switch-with-initializer.cpp:4:32: CompoundStmt= Extent=[4:32 - 
5:4]
diff --git a/clang/tools/libclang/CIndex.cpp b/clang/tools/libclang/CIndex.cpp
index 32e84248c1b27..78a42e3877b6b 100644
--- a/clang/tools/libclang/CIndex.cpp
+++ b/clang/tools/libclang/CIndex.cpp
@@ -3217,6 +3217,7 @@ void EnqueueVisitor::VisitStmt(const Stmt *S) { 
EnqueueChildren(S); }
 void EnqueueVisitor::VisitSwitchStmt(const SwitchStmt *S) {
   AddStmt(S->getBody());
   AddStmt(S->getCond());
+  AddStmt(S->getInit());
   AddDecl(S->getConditionVariable());
 }
 

``````````

</details>


https://github.com/llvm/llvm-project/pull/173670
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to