1// RUN: mlir-lsp-server -lit-test < %s | FileCheck -strict-whitespace %s 2{"jsonrpc":"2.0","id":0,"method":"initialize","params":{"processId":123,"rootPath":"mlir","capabilities":{},"trace":"off"}} 3// ----- 4{"jsonrpc":"2.0","method":"textDocument/didOpen","params":{"textDocument":{ 5 "uri":"test:///foo.mlir", 6 "languageId":"mlir", 7 "version":1, 8 "text":"#attr = 42 : f32\n// -----\nfunc.func @foo(%arg: i32) -> i64 {\nreturn %arg : i64\n}\n" 9}}} 10// ----- 11{"jsonrpc":"2.0","id":1,"method":"textDocument/codeAction","params":{ 12 "textDocument":{ 13 "uri":"file:///foo.mlir" 14 }, 15 "range":{ 16 "start":{"line":0,"character":8}, "end":{"line":0,"character":10} 17 }, 18 "context":{ 19 "diagnostics":[{ 20 "range":{"start":{"line":0,"character":8}, "end":{"line":0,"character":10}}, 21 "message":"unexpected decimal integer literal for a floating point value", 22 "severity":1, 23 "relatedInformation":[{ 24 "message":"add a trailing dot to make the literal a float", 25 "location":{ 26 "uri":"file:///foo.mlir", 27 "range":{"start":{"line":0,"character":8}, "end":{"line":0,"character":10}} 28 } 29 }], 30 "source":"mlir" 31 }], 32 "only":["quickfix"], 33 "triggerKind":1 34 } 35}} 36// CHECK-LABEL: "id": 1 37// CHECK-NEXT: "jsonrpc": "2.0", 38// CHECK-NEXT: "result": [ 39// CHECK-NEXT: { 40// CHECK-NEXT: "diagnostics": [ 41// CHECK-NEXT: { 42// CHECK-NEXT: "message": "unexpected decimal integer literal for a floating point value", 43// CHECK-NEXT: "range": { 44// CHECK-NEXT: "end": { 45// CHECK-NEXT: "character": 10, 46// CHECK-NEXT: "line": 0 47// CHECK-NEXT: }, 48// CHECK-NEXT: "start": { 49// CHECK-NEXT: "character": 8, 50// CHECK-NEXT: "line": 0 51// CHECK-NEXT: } 52// CHECK-NEXT: }, 53// CHECK-NEXT: "relatedInformation": [ 54// CHECK-NEXT: { 55// CHECK-NEXT: "location": { 56// CHECK-NEXT: "range": { 57// CHECK-NEXT: "end": { 58// CHECK-NEXT: "character": 10, 59// CHECK-NEXT: "line": 0 60// CHECK-NEXT: }, 61// CHECK-NEXT: "start": { 62// CHECK-NEXT: "character": 8, 63// CHECK-NEXT: "line": 0 64// CHECK-NEXT: } 65// CHECK-NEXT: }, 66// CHECK-NEXT: "uri": "file:///foo.mlir" 67// CHECK-NEXT: }, 68// CHECK-NEXT: "message": "add a trailing dot to make the literal a float" 69// CHECK-NEXT: } 70// CHECK-NEXT: ], 71// CHECK-NEXT: "severity": 1, 72// CHECK-NEXT: "source": "mlir" 73// CHECK-NEXT: } 74// CHECK-NEXT: ], 75// CHECK-NEXT: "edit": { 76// CHECK-NEXT: "changes": { 77// CHECK-NEXT: "file:///foo.mlir": [ 78// CHECK-NEXT: { 79// CHECK-LITERAL: "newText": "// expected-error @below {{unexpected decimal integer literal for a floating point value}}\n" 80// CHECK: "range": { 81// CHECK-NEXT: "end": { 82// CHECK-NEXT: "character": 0, 83// CHECK-NEXT: "line": 0 84// CHECK-NEXT: }, 85// CHECK-NEXT: "start": { 86// CHECK-NEXT: "character": 0, 87// CHECK-NEXT: "line": 0 88// CHECK-NEXT: } 89// CHECK-NEXT: } 90// CHECK-NEXT: }, 91// CHECK-NEXT: { 92// CHECK-NEXT-LITERAL: "newText": "// expected-note @below {{add a trailing dot to make the literal a float}}\n", 93// CHECK: "range": { 94// CHECK-NEXT: "end": { 95// CHECK-NEXT: "character": 0, 96// CHECK-NEXT: "line": 0 97// CHECK-NEXT: }, 98// CHECK-NEXT: "start": { 99// CHECK-NEXT: "character": 0, 100// CHECK-NEXT: "line": 0 101// CHECK-NEXT: } 102// CHECK-NEXT: } 103// CHECK-NEXT: } 104// CHECK-NEXT: ] 105// CHECK-NEXT: } 106// CHECK-NEXT: }, 107// CHECK-NEXT: "kind": "quickfix", 108// CHECK-NEXT: "title": "Add expected-* diagnostic checks" 109// CHECK-NEXT: } 110// CHECK-NEXT: ] 111// ----- 112{"jsonrpc":"2.0","id":2,"method":"textDocument/codeAction","params":{ 113 "textDocument":{"uri":"file:///foo.mlir"}, 114 "range":{"start":{"line":3,"character":9},"end":{"line":3,"character":13}}, 115 "context":{ 116 "diagnostics":[{ 117 "range":{"start":{"line":3,"character":9},"end":{"line":3,"character":13}}, 118 "message":"use of value '%arg' expects different type than prior uses: 'i64' vs 'i32'", 119 "severity":1, 120 "relatedInformation":[{ 121 "message":"prior use here", 122 "location":{ 123 "uri":"file:///foo.mlir", 124 "range":{"start":{"line":2,"character":15},"end":{"line":2,"character":19}} 125 } 126 }], 127 "source":"mlir" 128 }], 129 "only":["quickfix"], 130 "triggerKind":1 131 } 132}} 133// CHECK-LABEL: "id": 2 134// CHECK-NEXT: "jsonrpc": "2.0", 135// CHECK-NEXT: "result": [ 136// CHECK-NEXT: { 137// CHECK: "edit": { 138// CHECK-NEXT: "changes": { 139// CHECK-NEXT: "file:///foo.mlir": [ 140// CHECK-NEXT: { 141// CHECK-NEXT-LITERAL: "newText": "// expected-error @below {{use of value '%arg' expects different type than prior uses: 'i64' vs 'i32'}}\n", 142// CHECK: "range": { 143// CHECK-NEXT: "end": { 144// CHECK-NEXT: "character": 0, 145// CHECK-NEXT: "line": 3 146// CHECK-NEXT: }, 147// CHECK-NEXT: "start": { 148// CHECK-NEXT: "character": 0, 149// CHECK-NEXT: "line": 3 150// CHECK-NEXT: } 151// CHECK-NEXT: } 152// CHECK-NEXT: }, 153// CHECK-NEXT: { 154// CHECK-NEXT-LITERAL: "newText": "// expected-note @below {{prior use here}}\n", 155// CHECK: "range": { 156// CHECK-NEXT: "end": { 157// CHECK-NEXT: "character": 0, 158// CHECK-NEXT: "line": 2 159// CHECK-NEXT: }, 160// CHECK-NEXT: "start": { 161// CHECK-NEXT: "character": 0, 162// CHECK-NEXT: "line": 2 163// CHECK-NEXT: } 164// CHECK-NEXT: } 165// CHECK-NEXT: } 166// CHECK-NEXT: ] 167// CHECK-NEXT: } 168// CHECK-NEXT: }, 169// CHECK-NEXT: "kind": "quickfix", 170// CHECK-NEXT: "title": "Add expected-* diagnostic checks" 171// CHECK-NEXT: } 172// CHECK-NEXT: ] 173// ----- 174{"jsonrpc":"2.0","id":10,"method":"shutdown"} 175// ----- 176{"jsonrpc":"2.0","method":"exit"} 177