| // RUN: mlir-lsp-server -lit-test < %s | FileCheck -strict-whitespace %s |
| {"jsonrpc":"2.0","id":0,"method":"initialize","params":{"processId":123,"rootPath":"mlir","capabilities":{},"trace":"off"}} |
| // ----- |
| {"jsonrpc":"2.0","method":"textDocument/didOpen","params":{"textDocument":{ |
| "uri":"test:///foo.mlir", |
| "languageId":"mlir", |
| "version":1, |
| "text":"#attr = 42 : f32\n// -----\nfunc.func @foo(%arg: i32) -> i64 {\nreturn %arg : i64\n}\n" |
| }}} |
| // ----- |
| {"jsonrpc":"2.0","id":1,"method":"textDocument/codeAction","params":{ |
| "textDocument":{ |
| "uri":"file:///foo.mlir" |
| }, |
| "range":{ |
| "start":{"line":0,"character":8}, "end":{"line":0,"character":10} |
| }, |
| "context":{ |
| "diagnostics":[{ |
| "range":{"start":{"line":0,"character":8}, "end":{"line":0,"character":10}}, |
| "message":"unexpected decimal integer literal for a floating point value", |
| "severity":1, |
| "relatedInformation":[{ |
| "message":"add a trailing dot to make the literal a float", |
| "location":{ |
| "uri":"file:///foo.mlir", |
| "range":{"start":{"line":0,"character":8}, "end":{"line":0,"character":10}} |
| } |
| }], |
| "source":"mlir" |
| }], |
| "only":["quickfix"], |
| "triggerKind":1 |
| } |
| }} |
| // CHECK-LABEL: "id": 1 |
| // CHECK-NEXT: "jsonrpc": "2.0", |
| // CHECK-NEXT: "result": [ |
| // CHECK-NEXT: { |
| // CHECK-NEXT: "diagnostics": [ |
| // CHECK-NEXT: { |
| // CHECK-NEXT: "message": "unexpected decimal integer literal for a floating point value", |
| // CHECK-NEXT: "range": { |
| // CHECK-NEXT: "end": { |
| // CHECK-NEXT: "character": 10, |
| // CHECK-NEXT: "line": 0 |
| // CHECK-NEXT: }, |
| // CHECK-NEXT: "start": { |
| // CHECK-NEXT: "character": 8, |
| // CHECK-NEXT: "line": 0 |
| // CHECK-NEXT: } |
| // CHECK-NEXT: }, |
| // CHECK-NEXT: "relatedInformation": [ |
| // CHECK-NEXT: { |
| // CHECK-NEXT: "location": { |
| // CHECK-NEXT: "range": { |
| // CHECK-NEXT: "end": { |
| // CHECK-NEXT: "character": 10, |
| // CHECK-NEXT: "line": 0 |
| // CHECK-NEXT: }, |
| // CHECK-NEXT: "start": { |
| // CHECK-NEXT: "character": 8, |
| // CHECK-NEXT: "line": 0 |
| // CHECK-NEXT: } |
| // CHECK-NEXT: }, |
| // CHECK-NEXT: "uri": "file:///foo.mlir" |
| // CHECK-NEXT: }, |
| // CHECK-NEXT: "message": "add a trailing dot to make the literal a float" |
| // CHECK-NEXT: } |
| // CHECK-NEXT: ], |
| // CHECK-NEXT: "severity": 1, |
| // CHECK-NEXT: "source": "mlir" |
| // CHECK-NEXT: } |
| // CHECK-NEXT: ], |
| // CHECK-NEXT: "edit": { |
| // CHECK-NEXT: "changes": { |
| // CHECK-NEXT: "file:///foo.mlir": [ |
| // CHECK-NEXT: { |
| // CHECK-LITERAL: "newText": "// expected-error @below {{unexpected decimal integer literal for a floating point value}}\n" |
| // CHECK: "range": { |
| // CHECK-NEXT: "end": { |
| // CHECK-NEXT: "character": 0, |
| // CHECK-NEXT: "line": 0 |
| // CHECK-NEXT: }, |
| // CHECK-NEXT: "start": { |
| // CHECK-NEXT: "character": 0, |
| // CHECK-NEXT: "line": 0 |
| // CHECK-NEXT: } |
| // CHECK-NEXT: } |
| // CHECK-NEXT: }, |
| // CHECK-NEXT: { |
| // CHECK-NEXT-LITERAL: "newText": "// expected-note @below {{add a trailing dot to make the literal a float}}\n", |
| // CHECK: "range": { |
| // CHECK-NEXT: "end": { |
| // CHECK-NEXT: "character": 0, |
| // CHECK-NEXT: "line": 0 |
| // CHECK-NEXT: }, |
| // CHECK-NEXT: "start": { |
| // CHECK-NEXT: "character": 0, |
| // CHECK-NEXT: "line": 0 |
| // CHECK-NEXT: } |
| // CHECK-NEXT: } |
| // CHECK-NEXT: } |
| // CHECK-NEXT: ] |
| // CHECK-NEXT: } |
| // CHECK-NEXT: }, |
| // CHECK-NEXT: "kind": "quickfix", |
| // CHECK-NEXT: "title": "Add expected-* diagnostic checks" |
| // CHECK-NEXT: } |
| // CHECK-NEXT: ] |
| // ----- |
| {"jsonrpc":"2.0","id":2,"method":"textDocument/codeAction","params":{ |
| "textDocument":{"uri":"file:///foo.mlir"}, |
| "range":{"start":{"line":3,"character":9},"end":{"line":3,"character":13}}, |
| "context":{ |
| "diagnostics":[{ |
| "range":{"start":{"line":3,"character":9},"end":{"line":3,"character":13}}, |
| "message":"use of value '%arg' expects different type than prior uses: 'i64' vs 'i32'", |
| "severity":1, |
| "relatedInformation":[{ |
| "message":"prior use here", |
| "location":{ |
| "uri":"file:///foo.mlir", |
| "range":{"start":{"line":2,"character":15},"end":{"line":2,"character":19}} |
| } |
| }], |
| "source":"mlir" |
| }], |
| "only":["quickfix"], |
| "triggerKind":1 |
| } |
| }} |
| // CHECK-LABEL: "id": 2 |
| // CHECK-NEXT: "jsonrpc": "2.0", |
| // CHECK-NEXT: "result": [ |
| // CHECK-NEXT: { |
| // CHECK: "edit": { |
| // CHECK-NEXT: "changes": { |
| // CHECK-NEXT: "file:///foo.mlir": [ |
| // CHECK-NEXT: { |
| // CHECK-NEXT-LITERAL: "newText": "// expected-error @below {{use of value '%arg' expects different type than prior uses: 'i64' vs 'i32'}}\n", |
| // CHECK: "range": { |
| // CHECK-NEXT: "end": { |
| // CHECK-NEXT: "character": 0, |
| // CHECK-NEXT: "line": 3 |
| // CHECK-NEXT: }, |
| // CHECK-NEXT: "start": { |
| // CHECK-NEXT: "character": 0, |
| // CHECK-NEXT: "line": 3 |
| // CHECK-NEXT: } |
| // CHECK-NEXT: } |
| // CHECK-NEXT: }, |
| // CHECK-NEXT: { |
| // CHECK-NEXT-LITERAL: "newText": "// expected-note @below {{prior use here}}\n", |
| // CHECK: "range": { |
| // CHECK-NEXT: "end": { |
| // CHECK-NEXT: "character": 0, |
| // CHECK-NEXT: "line": 2 |
| // CHECK-NEXT: }, |
| // CHECK-NEXT: "start": { |
| // CHECK-NEXT: "character": 0, |
| // CHECK-NEXT: "line": 2 |
| // CHECK-NEXT: } |
| // CHECK-NEXT: } |
| // CHECK-NEXT: } |
| // CHECK-NEXT: ] |
| // CHECK-NEXT: } |
| // CHECK-NEXT: }, |
| // CHECK-NEXT: "kind": "quickfix", |
| // CHECK-NEXT: "title": "Add expected-* diagnostic checks" |
| // CHECK-NEXT: } |
| // CHECK-NEXT: ] |
| // ----- |
| {"jsonrpc":"2.0","id":10,"method":"shutdown"} |
| // ----- |
| {"jsonrpc":"2.0","method":"exit"} |