================
@@ -490,6 +491,13 @@ bool eligibleForExtraction(const SelectionTree::Node *N) {
         BO->getRHS() == OuterImplicit.ASTNode.get<Expr>())
       return false;
   }
+  if (const auto *Decl = Parent->ASTNode.get<VarDecl>()) {
+    if (!Decl->isInitCapture() &&
----------------
kadircet wrote:

sorry I don't think you can get that kind of behavior from a regular clangd. 
can you add a test case demonstrating how that comes to be?

here's a sample clangd test proving my point:
```
Content-Length: 1290

{"id":1,"jsonrpc":"2.0","method":"initialize","params":{"capabilities":{"textDocument":{"codeAction":{"codeActionLiteralSupport":{"codeActionKind":{"valueSet":["","quickfix","refactor","refactor.extract","refactor.inline","refactor.rewrite","source","source.organizeImports"]}}},"completion":{"completionItem":{"documentationFormat":["plaintext","markdown"]},"completionItemKind":{"valueSet":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25]}},"documentSymbol":{"hierarchicalDocumentSymbolSupport":false,"labelSupport":false,"symbolKind":{"valueSet":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26]}},"hover":{"contentFormat":["plaintext","markdown"]},"signatureHelp":{"signatureInformation":{"documentationFormat":["plaintext","markdown"],"parameterInformation":{"labelOffsetSupport":true}}},"synchronization":{"didSave":true}},"workspace":{"applyEdit":true,"didChangeWatchedFiles":{"dynamicRegistration":true},"symbol":{"symbolKind":{"valueSet":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26]}},"workspaceEdit":{"documentChanges":true}}},"initializationOptions":{"clangdFileStatus":true},"processId":4179957,"rootPath":"/usr/local/google/home/kadircet/repos/tmp","rootUri":"file:///usr/local/google/home/kadircet/repos/tmp"}}Content-Length:
 52

{"jsonrpc":"2.0","method":"initialized","params":{}}Content-Length: 109

{"jsonrpc":"2.0","method":"workspace/didChangeConfiguration","params":{"settings":{"clangdFileStatus":true}}}Content-Length:
 193

{"jsonrpc":"2.0","method":"textDocument/didOpen","params":{"textDocument":{"languageId":"cpp","text":"void
 foo() {\n  int x = 1 + 2 + 3;\n  
return;\n}\n","uri":"file:///tmp/a.cc","version":1}}}Content-Length: 217

{"id":2,"jsonrpc":"2.0","method":"textDocument/codeAction","params":{"context":{"diagnostics":[]},"range":{"end":{"character":18,"line":1},"start":{"character":14,"line":1}},"textDocument":{"uri":"file:///tmp/a.cc"}}}Content-Length:
 251

{"id":3,"jsonrpc":"2.0","method":"workspace/executeCommand","params":{"arguments":[{"file":"file:///tmp/a.cc","selection":{"end":{"character":18,"line":1},"start":{"character":14,"line":1}},"tweakID":"ExtractVariable"}],"command":"clangd.applyTweak"}}Content-Length:
 50

{"id":0,"jsonrpc":"2.0","result":{"applied":true}}Content-Length: 232

{"jsonrpc":"2.0","method":"textDocument/didChange","params":{"contentChanges":[{"text":"void
 foo() {\n  auto placeholder = 1 + 2 + 3;\n  int x = placeholder;\n  
return;\n}\n"}],"textDocument":{"uri":"file:///tmp/a.cc","version":2}}}Content-Length:
 115

{"jsonrpc":"2.0","method":"textDocument/didClose","params":{"textDocument":{"uri":"file:///tmp/a.cc","version":2}}}Content-Length:
 58

{"id":4,"jsonrpc":"2.0","method":"shutdown","params":null}Content-Length: 47

{"jsonrpc":"2.0","method":"exit","params":null}
```

some notable points here are:
- original file contents: `"text":"void foo() {\n  int x = 1 + 2 + 3;\n  
return;\n}\n"`
- code action request range: 
`,"range":{"end":{"character":18,"line":1},"start":{"character":14,"line":1}}`, 
namely `[[2 + 3]]`.
- code action response: `"contentChanges":[{"text":"void foo() {\n  auto 
placeholder = 1 + 2 + 3;\n  int x = placeholder;\n  return;\n}\n"}]`

that's my clangd version string: `clangd version 19.0.0git 
(g...@github.com:llvm/llvm-project.git 
7e3fb372b0e8899958ec7e9241797e7e136a7a23)`

you can feed in the json request above into clangd with ` /path/to/clangd 
-log=verbose -sync < /tmp/clangd_input.mirror`.

https://github.com/llvm/llvm-project/pull/69477
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to