134 lines · plain
1# RUN: clangd -lit-test < %s | FileCheck -strict-whitespace %s2{"jsonrpc":"2.0","id":0,"method":"initialize","params":{"processId":123,"rootPath":"clangd","capabilities":{"textDocument":{"codeAction":{"codeActionLiteralSupport":{}}}},"trace":"off"}}3---4{"jsonrpc":"2.0","method":"textDocument/didOpen","params":{"textDocument":{"uri":"test:///foo.c","languageId":"c","text":"int main(int i, char **a) { if (i = 2) {}}"}}}5# CHECK: "method": "textDocument/publishDiagnostics",6# CHECK-NEXT: "params": {7# CHECK-NEXT: "diagnostics": [8# CHECK-NEXT: {9# CHECK-NEXT: "code": "-Wparentheses",10# CHECK-NEXT: "message": "Using the result of an assignment as a condition without parentheses (fixes available)",11# CHECK-NEXT: "range": {12# CHECK-NEXT: "end": {13# CHECK-NEXT: "character": 37,14# CHECK-NEXT: "line": 015# CHECK-NEXT: },16# CHECK-NEXT: "start": {17# CHECK-NEXT: "character": 32,18# CHECK-NEXT: "line": 019# CHECK-NEXT: }20# CHECK-NEXT: },21# CHECK-NEXT: "severity": 2,22# CHECK-NEXT: "source": "clang"23# CHECK-NEXT: }24# CHECK-NEXT: ],25# CHECK-NEXT: "uri": "file://{{.*}}/foo.c",26# CHECK-NEXT: "version": 027# CHECK-NEXT: }28---29{"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"}]}}}30# CHECK: "id": 2,31# CHECK-NEXT: "jsonrpc": "2.0",32# CHECK-NEXT: "result": [33# CHECK-NEXT: {34# CHECK-NEXT: "diagnostics": [35# CHECK-NEXT: {36# CHECK-NEXT: "code": "-Wparentheses",37# CHECK-NEXT: "message": "Using the result of an assignment as a condition without parentheses (fixes available)",38# CHECK-NEXT: "range": {39# CHECK-NEXT: "end": {40# CHECK-NEXT: "character": 37,41# CHECK-NEXT: "line": 042# CHECK-NEXT: },43# CHECK-NEXT: "start": {44# CHECK-NEXT: "character": 32,45# CHECK-NEXT: "line": 046# CHECK-NEXT: }47# CHECK-NEXT: },48# CHECK-NEXT: "severity": 2,49# CHECK-NEXT: "source": "clang"50# CHECK-NEXT: }51# CHECK-NEXT: ],52# CHECK-NEXT: "edit": {53# CHECK-NEXT: "changes": {54# CHECK-NEXT: "file://{{.*}}/foo.c": [55# CHECK-NEXT: {56# CHECK-NEXT: "newText": "(",57# CHECK-NEXT: "range": {58# CHECK-NEXT: "end": {59# CHECK-NEXT: "character": 32,60# CHECK-NEXT: "line": 061# CHECK-NEXT: },62# CHECK-NEXT: "start": {63# CHECK-NEXT: "character": 32,64# CHECK-NEXT: "line": 065# CHECK-NEXT: }66# CHECK-NEXT: }67# CHECK-NEXT: },68# CHECK-NEXT: {69# CHECK-NEXT: "newText": ")",70# CHECK-NEXT: "range": {71# CHECK-NEXT: "end": {72# CHECK-NEXT: "character": 37,73# CHECK-NEXT: "line": 074# CHECK-NEXT: },75# CHECK-NEXT: "start": {76# CHECK-NEXT: "character": 37,77# CHECK-NEXT: "line": 078# CHECK-NEXT: }79# CHECK-NEXT: }80# CHECK-NEXT: }81# CHECK-NEXT: ]82# CHECK-NEXT: }83# CHECK-NEXT: },84# CHECK-NEXT: "kind": "quickfix",85# CHECK-NEXT: "title": "place parentheses around the assignment to silence this warning"86# CHECK-NEXT: },87# CHECK-NEXT: {88# CHECK-NEXT: "diagnostics": [89# CHECK-NEXT: {90# CHECK-NEXT: "code": "-Wparentheses",91# CHECK-NEXT: "message": "Using the result of an assignment as a condition without parentheses (fixes available)",92# CHECK-NEXT: "range": {93# CHECK-NEXT: "end": {94# CHECK-NEXT: "character": 37,95# CHECK-NEXT: "line": 096# CHECK-NEXT: },97# CHECK-NEXT: "start": {98# CHECK-NEXT: "character": 32,99# CHECK-NEXT: "line": 0100# CHECK-NEXT: }101# CHECK-NEXT: },102# CHECK-NEXT: "severity": 2,103# CHECK-NEXT: "source": "clang"104# CHECK-NEXT: }105# CHECK-NEXT: ],106# CHECK-NEXT: "edit": {107# CHECK-NEXT: "changes": {108# CHECK-NEXT: "file://{{.*}}/foo.c": [109# CHECK-NEXT: {110# CHECK-NEXT: "newText": "==",111# CHECK-NEXT: "range": {112# CHECK-NEXT: "end": {113# CHECK-NEXT: "character": 35,114# CHECK-NEXT: "line": 0115# CHECK-NEXT: },116# CHECK-NEXT: "start": {117# CHECK-NEXT: "character": 34,118# CHECK-NEXT: "line": 0119# CHECK-NEXT: }120# CHECK-NEXT: }121# CHECK-NEXT: }122# CHECK-NEXT: ]123# CHECK-NEXT: }124# CHECK-NEXT: },125# CHECK-NEXT: "kind": "quickfix",126# CHECK-NEXT: "title": "use '==' to turn this assignment into an equality comparison"127# CHECK-NEXT: }128# CHECK-NEXT: ]129---130{"jsonrpc":"2.0","id":4,"method":"shutdown"}131---132{"jsonrpc":"2.0","method":"exit"}133 134