146 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":{}}},"workspace":{"workspaceEdit":{"documentChanges":true}}},"trace":"off"}}3---4{"jsonrpc":"2.0","method":"textDocument/didOpen","params":{"textDocument":{"uri":"test:///foo.c","languageId":"c","version":1,"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": 127# 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: "documentChanges": [54# CHECK-NEXT: {55# CHECK-NEXT: "edits": [56# CHECK-NEXT: {57# CHECK-NEXT: "newText": "(",58# CHECK-NEXT: "range": {59# CHECK-NEXT: "end": {60# CHECK-NEXT: "character": 32,61# CHECK-NEXT: "line": 062# CHECK-NEXT: },63# CHECK-NEXT: "start": {64# CHECK-NEXT: "character": 32,65# CHECK-NEXT: "line": 066# CHECK-NEXT: }67# CHECK-NEXT: }68# CHECK-NEXT: },69# CHECK-NEXT: {70# CHECK-NEXT: "newText": ")",71# CHECK-NEXT: "range": {72# CHECK-NEXT: "end": {73# CHECK-NEXT: "character": 37,74# CHECK-NEXT: "line": 075# CHECK-NEXT: },76# CHECK-NEXT: "start": {77# CHECK-NEXT: "character": 37,78# CHECK-NEXT: "line": 079# CHECK-NEXT: }80# CHECK-NEXT: }81# CHECK-NEXT: }82# CHECK-NEXT: ],83# CHECK-NEXT: "textDocument": {84# CHECK-NEXT: "uri": "file://{{.*}}/foo.c",85# CHECK-NEXT: "version": 186# CHECK-NEXT: }87# CHECK-NEXT: }88# CHECK-NEXT: ]89# CHECK-NEXT: },90# CHECK-NEXT: "kind": "quickfix",91# CHECK-NEXT: "title": "place parentheses around the assignment to silence this warning"92# CHECK-NEXT: },93# CHECK-NEXT: {94# CHECK-NEXT: "diagnostics": [95# CHECK-NEXT: {96# CHECK-NEXT: "code": "-Wparentheses",97# CHECK-NEXT: "message": "Using the result of an assignment as a condition without parentheses (fixes available)",98# CHECK-NEXT: "range": {99# CHECK-NEXT: "end": {100# CHECK-NEXT: "character": 37,101# CHECK-NEXT: "line": 0102# CHECK-NEXT: },103# CHECK-NEXT: "start": {104# CHECK-NEXT: "character": 32,105# CHECK-NEXT: "line": 0106# CHECK-NEXT: }107# CHECK-NEXT: },108# CHECK-NEXT: "severity": 2,109# CHECK-NEXT: "source": "clang"110# CHECK-NEXT: }111# CHECK-NEXT: ],112# CHECK-NEXT: "edit": {113# CHECK-NEXT: "documentChanges": [114# CHECK-NEXT: {115# CHECK-NEXT: "edits": [116# CHECK-NEXT: {117# CHECK-NEXT: "newText": "==",118# CHECK-NEXT: "range": {119# CHECK-NEXT: "end": {120# CHECK-NEXT: "character": 35,121# CHECK-NEXT: "line": 0122# CHECK-NEXT: },123# CHECK-NEXT: "start": {124# CHECK-NEXT: "character": 34,125# CHECK-NEXT: "line": 0126# CHECK-NEXT: }127# CHECK-NEXT: }128# CHECK-NEXT: }129# CHECK-NEXT: ],130# CHECK-NEXT: "textDocument": {131# CHECK-NEXT: "uri": "file://{{.*}}/foo.c",132# CHECK-NEXT: "version": 1133# CHECK-NEXT: }134# CHECK-NEXT: }135# CHECK-NEXT: ]136# CHECK-NEXT: },137# CHECK-NEXT: "kind": "quickfix",138# CHECK-NEXT: "title": "use '==' to turn this assignment into an equality comparison"139# CHECK-NEXT: }140# CHECK-NEXT: ]141---142{"jsonrpc":"2.0","id":4,"method":"shutdown"}143---144{"jsonrpc":"2.0","method":"exit"}145 146