|  | # RUN: clangd -lit-test < %s | FileCheck -strict-whitespace %s | 
|  | {"jsonrpc":"2.0","id":0,"method":"initialize","params":{"processId":123,"rootPath":"clangd","capabilities":{"textDocument":{"codeAction":{"codeActionLiteralSupport":{}}}},"trace":"off"}} | 
|  | --- | 
|  | {"jsonrpc":"2.0","method":"textDocument/didOpen","params":{"textDocument":{"uri":"test:///foo.c","languageId":"c","text":"int main(int i, char **a) { if (i = 2) {}}"}}} | 
|  | #      CHECK:    "method": "textDocument/publishDiagnostics", | 
|  | # CHECK-NEXT:  "params": { | 
|  | # CHECK-NEXT:    "diagnostics": [ | 
|  | # CHECK-NEXT:      { | 
|  | # CHECK-NEXT:        "code": "-Wparentheses", | 
|  | # CHECK-NEXT:        "message": "Using the result of an assignment as a condition without parentheses (fixes available)", | 
|  | # CHECK-NEXT:        "range": { | 
|  | # CHECK-NEXT:          "end": { | 
|  | # CHECK-NEXT:            "character": 37, | 
|  | # CHECK-NEXT:            "line": 0 | 
|  | # CHECK-NEXT:          }, | 
|  | # CHECK-NEXT:          "start": { | 
|  | # CHECK-NEXT:            "character": 32, | 
|  | # CHECK-NEXT:            "line": 0 | 
|  | # CHECK-NEXT:          } | 
|  | # CHECK-NEXT:        }, | 
|  | # CHECK-NEXT:        "severity": 2, | 
|  | # CHECK-NEXT:        "source": "clang" | 
|  | # CHECK-NEXT:      } | 
|  | # CHECK-NEXT:    ], | 
|  | # CHECK-NEXT:    "uri": "file://{{.*}}/foo.c", | 
|  | # CHECK-NEXT:    "version": 0 | 
|  | # CHECK-NEXT:  } | 
|  | --- | 
|  | {"jsonrpc":"2.0","id":2,"method":"textDocument/codeAction","params":{"textDocument":{"uri":"test:///foo.c"},"range":{"start":{"line":0,"character":13},"end":{"line":0,"character":35}},"context":{"diagnostics":[{"range":{"start": {"line": 0, "character": 32}, "end": {"line": 0, "character": 37}},"severity":2,"message":"Using the result of an assignment as a condition without parentheses (fixes available)", "code": "-Wparentheses", "source": "clang"}]}}} | 
|  | #      CHECK:  "id": 2, | 
|  | # CHECK-NEXT:  "jsonrpc": "2.0", | 
|  | # CHECK-NEXT:  "result": [ | 
|  | # CHECK-NEXT:    { | 
|  | # CHECK-NEXT:      "diagnostics": [ | 
|  | # CHECK-NEXT:        { | 
|  | # CHECK-NEXT:          "code": "-Wparentheses", | 
|  | # CHECK-NEXT:          "message": "Using the result of an assignment as a condition without parentheses (fixes available)", | 
|  | # CHECK-NEXT:          "range": { | 
|  | # CHECK-NEXT:            "end": { | 
|  | # CHECK-NEXT:              "character": 37, | 
|  | # CHECK-NEXT:              "line": 0 | 
|  | # CHECK-NEXT:            }, | 
|  | # CHECK-NEXT:            "start": { | 
|  | # CHECK-NEXT:              "character": 32, | 
|  | # CHECK-NEXT:              "line": 0 | 
|  | # CHECK-NEXT:            } | 
|  | # CHECK-NEXT:          }, | 
|  | # CHECK-NEXT:          "severity": 2, | 
|  | # CHECK-NEXT:          "source": "clang" | 
|  | # CHECK-NEXT:        } | 
|  | # CHECK-NEXT:      ], | 
|  | # CHECK-NEXT:      "edit": { | 
|  | # CHECK-NEXT:        "changes": { | 
|  | # CHECK-NEXT:          "file://{{.*}}/foo.c": [ | 
|  | # CHECK-NEXT:            { | 
|  | # CHECK-NEXT:              "newText": "(", | 
|  | # CHECK-NEXT:              "range": { | 
|  | # CHECK-NEXT:                "end": { | 
|  | # CHECK-NEXT:                  "character": 32, | 
|  | # CHECK-NEXT:                  "line": 0 | 
|  | # CHECK-NEXT:                }, | 
|  | # CHECK-NEXT:                "start": { | 
|  | # CHECK-NEXT:                  "character": 32, | 
|  | # CHECK-NEXT:                  "line": 0 | 
|  | # CHECK-NEXT:                } | 
|  | # CHECK-NEXT:              } | 
|  | # CHECK-NEXT:            }, | 
|  | # CHECK-NEXT:            { | 
|  | # CHECK-NEXT:              "newText": ")", | 
|  | # CHECK-NEXT:              "range": { | 
|  | # CHECK-NEXT:                "end": { | 
|  | # CHECK-NEXT:                  "character": 37, | 
|  | # CHECK-NEXT:                  "line": 0 | 
|  | # CHECK-NEXT:                }, | 
|  | # CHECK-NEXT:                "start": { | 
|  | # CHECK-NEXT:                  "character": 37, | 
|  | # CHECK-NEXT:                  "line": 0 | 
|  | # CHECK-NEXT:                } | 
|  | # CHECK-NEXT:              } | 
|  | # CHECK-NEXT:            } | 
|  | # CHECK-NEXT:          ] | 
|  | # CHECK-NEXT:        } | 
|  | # CHECK-NEXT:      }, | 
|  | # CHECK-NEXT:      "kind": "quickfix", | 
|  | # CHECK-NEXT:      "title": "place parentheses around the assignment to silence this warning" | 
|  | # CHECK-NEXT:    }, | 
|  | # CHECK-NEXT:    { | 
|  | # CHECK-NEXT:      "diagnostics": [ | 
|  | # CHECK-NEXT:        { | 
|  | # CHECK-NEXT:          "code": "-Wparentheses", | 
|  | # CHECK-NEXT:          "message": "Using the result of an assignment as a condition without parentheses (fixes available)", | 
|  | # CHECK-NEXT:          "range": { | 
|  | # CHECK-NEXT:            "end": { | 
|  | # CHECK-NEXT:              "character": 37, | 
|  | # CHECK-NEXT:              "line": 0 | 
|  | # CHECK-NEXT:            }, | 
|  | # CHECK-NEXT:            "start": { | 
|  | # CHECK-NEXT:              "character": 32, | 
|  | # CHECK-NEXT:              "line": 0 | 
|  | # CHECK-NEXT:            } | 
|  | # CHECK-NEXT:          }, | 
|  | # CHECK-NEXT:          "severity": 2, | 
|  | # CHECK-NEXT:          "source": "clang" | 
|  | # CHECK-NEXT:        } | 
|  | # CHECK-NEXT:      ], | 
|  | # CHECK-NEXT:      "edit": { | 
|  | # CHECK-NEXT:        "changes": { | 
|  | # CHECK-NEXT:          "file://{{.*}}/foo.c": [ | 
|  | # CHECK-NEXT:            { | 
|  | # CHECK-NEXT:              "newText": "==", | 
|  | # CHECK-NEXT:              "range": { | 
|  | # CHECK-NEXT:                "end": { | 
|  | # CHECK-NEXT:                  "character": 35, | 
|  | # CHECK-NEXT:                  "line": 0 | 
|  | # CHECK-NEXT:                }, | 
|  | # CHECK-NEXT:                "start": { | 
|  | # CHECK-NEXT:                  "character": 34, | 
|  | # CHECK-NEXT:                  "line": 0 | 
|  | # CHECK-NEXT:                } | 
|  | # CHECK-NEXT:              } | 
|  | # CHECK-NEXT:            } | 
|  | # CHECK-NEXT:          ] | 
|  | # CHECK-NEXT:        } | 
|  | # CHECK-NEXT:      }, | 
|  | # CHECK-NEXT:      "kind": "quickfix", | 
|  | # CHECK-NEXT:      "title": "use '==' to turn this assignment into an equality comparison" | 
|  | # CHECK-NEXT:    } | 
|  | # CHECK-NEXT:  ] | 
|  | --- | 
|  | {"jsonrpc":"2.0","id":4,"method":"shutdown"} | 
|  | --- | 
|  | {"jsonrpc":"2.0","method":"exit"} | 
|  |  |