|  | # RUN: clangd -log=verbose -lit-test < %s | FileCheck -strict-whitespace %s | 
|  | {"jsonrpc":"2.0","id":0,"method":"initialize","params":{"processId":123,"rootPath":"clangd","capabilities":{},"trace":"off"}} | 
|  | --- | 
|  | {"jsonrpc":"2.0","method":"textDocument/didOpen","params":{"textDocument":{"uri":"test:///main.cpp","languageId":"cpp","version":1,"text":"auto i = 0;"}}} | 
|  | --- | 
|  | { | 
|  | "jsonrpc": "2.0", | 
|  | "id": 1, | 
|  | "method": "textDocument/codeAction", | 
|  | "params": { | 
|  | "textDocument": { | 
|  | "uri": "test:///main.cpp" | 
|  | }, | 
|  | "range": { | 
|  | "start": { | 
|  | "line": 0, | 
|  | "character": 0 | 
|  | }, | 
|  | "end": { | 
|  | "line": 0, | 
|  | "character": 4 | 
|  | } | 
|  | }, | 
|  | "context": { | 
|  | "diagnostics": [] | 
|  | } | 
|  | } | 
|  | } | 
|  | #      CHECK:  "id": 1, | 
|  | # CHECK-NEXT:  "jsonrpc": "2.0", | 
|  | # CHECK-NEXT:  "result": [ | 
|  | # CHECK-NEXT:    { | 
|  | # CHECK-NEXT:      "arguments": [ | 
|  | # CHECK-NEXT:        { | 
|  | # CHECK-NEXT:          "file": "file://{{.*}}/clangd-test/main.cpp", | 
|  | # CHECK-NEXT:          "selection": { | 
|  | # CHECK-NEXT:            "end": { | 
|  | # CHECK-NEXT:              "character": 4, | 
|  | # CHECK-NEXT:              "line": 0 | 
|  | # CHECK-NEXT:            }, | 
|  | # CHECK-NEXT:            "start": { | 
|  | # CHECK-NEXT:              "character": 0, | 
|  | # CHECK-NEXT:              "line": 0 | 
|  | # CHECK-NEXT:            } | 
|  | # CHECK-NEXT:          }, | 
|  | # CHECK-NEXT:          "tweakID": "ExpandDeducedType" | 
|  | # CHECK-NEXT:        } | 
|  | # CHECK-NEXT:      ], | 
|  | # CHECK-NEXT:      "command": "clangd.applyTweak", | 
|  | # CHECK-NEXT:      "title": "Replace with deduced type" | 
|  | # CHECK-NEXT:    } | 
|  | # CHECK-NEXT:  ] | 
|  | --- | 
|  | { | 
|  | "jsonrpc": "2.0", | 
|  | "id": 2, | 
|  | "method": "textDocument/codeAction", | 
|  | "params": { | 
|  | "textDocument": { "uri": "test:///main.cpp" }, | 
|  | "range": { | 
|  | "start": {"line": 0, "character": 0}, | 
|  | "end": {"line": 0, "character": 4} | 
|  | }, | 
|  | "context": { | 
|  | "diagnostics": [], | 
|  | "only": ["quickfix"] | 
|  | } | 
|  | } | 
|  | } | 
|  | #      CHECK:  "id": 2, | 
|  | # CHECK-NEXT:  "jsonrpc": "2.0", | 
|  | # CHECK-NEXT:  "result": [] | 
|  | --- | 
|  | { | 
|  | "jsonrpc": "2.0", | 
|  | "id": 3, | 
|  | "method": "textDocument/codeAction", | 
|  | "params": { | 
|  | "textDocument": { "uri": "test:///main.cpp" }, | 
|  | "range": { | 
|  | "start": {"line": 0, "character": 0}, | 
|  | "end": {"line": 0, "character": 4} | 
|  | }, | 
|  | "context": { | 
|  | "diagnostics": [], | 
|  | "only": ["refactor"] | 
|  | } | 
|  | } | 
|  | } | 
|  | #      CHECK:  "id": 3, | 
|  | # CHECK-NEXT:  "jsonrpc": "2.0", | 
|  | # CHECK-NEXT:  "result": [ | 
|  | # CHECK-NEXT:    { | 
|  | --- | 
|  | {"jsonrpc":"2.0","id":4,"method":"workspace/executeCommand","params":{"command":"clangd.applyTweak","arguments":[{"file":"test:///main.cpp","selection":{"end":{"character":4,"line":0},"start":{"character":0,"line":0}},"tweakID":"ExpandDeducedType"}]}} | 
|  | #      CHECK:    "newText": "int", | 
|  | # CHECK-NEXT:    "range": { | 
|  | # CHECK-NEXT:      "end": { | 
|  | # CHECK-NEXT:        "character": 4, | 
|  | # CHECK-NEXT:        "line": 0 | 
|  | # CHECK-NEXT:      }, | 
|  | # CHECK-NEXT:      "start": { | 
|  | # CHECK-NEXT:        "character": 0, | 
|  | # CHECK-NEXT:        "line": 0 | 
|  | # CHECK-NEXT:      } | 
|  | # CHECK-NEXT:    } | 
|  | --- | 
|  | {"jsonrpc":"2.0","id":5,"method":"shutdown"} | 
|  | --- | 
|  | {"jsonrpc":"2.0","method":"exit"} | 
|  | --- |