| // 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 = i32\n!alias = i32\nfunc.func private @foo(%arg: i32) -> i32 {\n%cast = \"builtin.unrealized_conversion_cast\"() : () -> (!pdl.value)\nreturn %" |
| }}} |
| // ----- |
| {"jsonrpc":"2.0","id":1,"method":"textDocument/completion","params":{ |
| "textDocument":{"uri":"test:///foo.mlir"}, |
| "position":{"line":2,"character":0} |
| }} |
| // CHECK-LABEL: "id": 1 |
| // CHECK-NEXT: "jsonrpc": "2.0", |
| // CHECK-NEXT: "result": { |
| // CHECK-NEXT: "isIncomplete": false, |
| // CHECK-NEXT: "items": [ |
| // CHECK: { |
| // CHECK: "detail": "dialect", |
| // CHECK: "insertTextFormat": 1, |
| // CHECK: "kind": 9, |
| // CHECK: "label": "builtin", |
| // CHECK: "sortText": "3" |
| // CHECK: }, |
| // CHECK: { |
| // CHECK: "detail": "operation", |
| // CHECK: "insertTextFormat": 1, |
| // CHECK: "kind": 5, |
| // CHECK: "label": "module", |
| // CHECK: "sortText": "1" |
| // CHECK: } |
| // CHECK: ] |
| // CHECK-NEXT: } |
| // ----- |
| {"jsonrpc":"2.0","id":2,"method":"textDocument/completion","params":{ |
| "textDocument":{"uri":"test:///foo.mlir"}, |
| "position":{"line":3,"character":9} |
| }} |
| // CHECK-LABEL: "id": 2 |
| // CHECK-NEXT: "jsonrpc": "2.0", |
| // CHECK-NEXT: "result": { |
| // CHECK-NEXT: "isIncomplete": false, |
| // CHECK-NEXT: "items": [ |
| // CHECK: { |
| // CHECK: "detail": "dialect", |
| // CHECK: "insertTextFormat": 1, |
| // CHECK: "kind": 9, |
| // CHECK: "label": "builtin", |
| // CHECK: "sortText": "3" |
| // CHECK: }, |
| // CHECK-NOT: "detail": "operation", |
| // CHECK: ] |
| // CHECK-NEXT: } |
| // ----- |
| {"jsonrpc":"2.0","id":3,"method":"textDocument/completion","params":{ |
| "textDocument":{"uri":"test:///foo.mlir"}, |
| "position":{"line":3,"character":17} |
| }} |
| // CHECK-LABEL: "id": 3 |
| // CHECK-NEXT: "jsonrpc": "2.0", |
| // CHECK-NEXT: "result": { |
| // CHECK-NEXT: "isIncomplete": false, |
| // CHECK-NEXT: "items": [ |
| // CHECK-NOT: "detail": "dialect", |
| // CHECK: { |
| // CHECK: "detail": "operation", |
| // CHECK: "insertTextFormat": 1, |
| // CHECK: "kind": 5, |
| // CHECK: "label": "module", |
| // CHECK: "sortText": "1" |
| // CHECK: } |
| // CHECK: ] |
| // CHECK-NEXT: } |
| // ----- |
| {"jsonrpc":"2.0","id":4,"method":"textDocument/completion","params":{ |
| "textDocument":{"uri":"test:///foo.mlir"}, |
| "position":{"line":4,"character":8} |
| }} |
| // CHECK-LABEL: "id": 4 |
| // CHECK-NEXT: "jsonrpc": "2.0", |
| // CHECK-NEXT: "result": { |
| // CHECK-NEXT: "isIncomplete": false, |
| // CHECK-NEXT: "items": [ |
| // CHECK-NEXT: { |
| // CHECK-NEXT: "detail": "arg #0: i32", |
| // CHECK-NEXT: "insertText": "arg", |
| // CHECK-NEXT: "insertTextFormat": 1, |
| // CHECK-NEXT: "kind": 6, |
| // CHECK-NEXT: "label": "%arg" |
| // CHECK-NEXT: }, |
| // CHECK-NEXT: { |
| // CHECK-NEXT: "detail": "builtin.unrealized_conversion_cast: !pdl.value", |
| // CHECK-NEXT: "insertText": "cast", |
| // CHECK-NEXT: "insertTextFormat": 1, |
| // CHECK-NEXT: "kind": 6, |
| // CHECK-NEXT: "label": "%cast" |
| // CHECK-NEXT: } |
| // CHECK: ] |
| // CHECK-NEXT: } |
| // ----- |
| {"jsonrpc":"2.0","id":5,"method":"textDocument/completion","params":{ |
| "textDocument":{"uri":"test:///foo.mlir"}, |
| "position":{"line":2,"character":10} |
| }} |
| // CHECK-LABEL: "id": 5 |
| // CHECK-NEXT: "jsonrpc": "2.0", |
| // CHECK-NEXT: "result": { |
| // CHECK-NEXT: "isIncomplete": false, |
| // CHECK-NEXT: "items": [ |
| // CHECK-NEXT: { |
| // CHECK-NEXT: "detail": "optional", |
| // CHECK-NEXT: "insertTextFormat": 1, |
| // CHECK-NEXT: "kind": 14, |
| // CHECK-NEXT: "label": "public", |
| // CHECK-NEXT: "sortText": "0" |
| // CHECK-NEXT: }, |
| // CHECK-NEXT: { |
| // CHECK-NEXT: "detail": "optional", |
| // CHECK-NEXT: "insertTextFormat": 1, |
| // CHECK-NEXT: "kind": 14, |
| // CHECK-NEXT: "label": "private", |
| // CHECK-NEXT: "sortText": "0" |
| // CHECK-NEXT: }, |
| // CHECK-NEXT: { |
| // CHECK-NEXT: "detail": "optional", |
| // CHECK-NEXT: "insertTextFormat": 1, |
| // CHECK-NEXT: "kind": 14, |
| // CHECK-NEXT: "label": "nested", |
| // CHECK-NEXT: "sortText": "0" |
| // CHECK-NEXT: } |
| // CHECK-NEXT: ] |
| // CHECK-NEXT: } |
| // ----- |
| {"jsonrpc":"2.0","id":6,"method":"textDocument/completion","params":{ |
| "textDocument":{"uri":"test:///foo.mlir"}, |
| "position":{"line":0,"character":8} |
| }} |
| // CHECK-LABEL: "id": 6 |
| // CHECK-NEXT: "jsonrpc": "2.0", |
| // CHECK-NEXT: "result": { |
| // CHECK-NEXT: "isIncomplete": false, |
| // CHECK-NEXT: "items": [ |
| // CHECK: { |
| // CHECK: "insertTextFormat": 1, |
| // CHECK: "kind": 5, |
| // CHECK: "label": "false" |
| // CHECK: }, |
| // CHECK: { |
| // CHECK: "insertTextFormat": 1, |
| // CHECK: "kind": 5, |
| // CHECK: "label": "loc" |
| // CHECK: }, |
| // CHECK: { |
| // CHECK: "insertTextFormat": 1, |
| // CHECK: "kind": 5, |
| // CHECK: "label": "true" |
| // CHECK: }, |
| // CHECK: { |
| // CHECK: "insertTextFormat": 1, |
| // CHECK: "kind": 5, |
| // CHECK: "label": "unit" |
| // CHECK: } |
| // CHECK: ] |
| // CHECK: } |
| // ----- |
| {"jsonrpc":"2.0","id":7,"method":"textDocument/completion","params":{ |
| "textDocument":{"uri":"test:///foo.mlir"}, |
| "position":{"line":3,"character":56} |
| }} |
| // CHECK-LABEL: "id": 7 |
| // CHECK-NEXT: "jsonrpc": "2.0", |
| // CHECK-NEXT: "result": { |
| // CHECK-NEXT: "isIncomplete": false, |
| // CHECK-NEXT: "items": [ |
| // CHECK: { |
| // CHECK: "insertTextFormat": 1, |
| // CHECK: "kind": 5, |
| // CHECK: "label": "index" |
| // CHECK: }, |
| // CHECK: { |
| // CHECK: "insertTextFormat": 1, |
| // CHECK: "kind": 5, |
| // CHECK: "label": "none" |
| // CHECK: }, |
| // CHECK: { |
| // CHECK: "insertText": "i", |
| // CHECK: "insertTextFormat": 1, |
| // CHECK: "kind": 5, |
| // CHECK: "label": "i<N>" |
| // CHECK: } |
| // CHECK: ] |
| // CHECK-NEXT: } |
| // ----- |
| {"jsonrpc":"2.0","id":8,"method":"textDocument/completion","params":{ |
| "textDocument":{"uri":"test:///foo.mlir"}, |
| "position":{"line":3,"character":57} |
| }} |
| // CHECK-LABEL: "id": 8 |
| // CHECK-NEXT: "jsonrpc": "2.0", |
| // CHECK-NEXT: "result": { |
| // CHECK-NEXT: "isIncomplete": false, |
| // CHECK-NEXT: "items": [ |
| // CHECK: { |
| // CHECK: "detail": "dialect", |
| // CHECK: "insertTextFormat": 1, |
| // CHECK: "kind": 9, |
| // CHECK: "label": "builtin", |
| // CHECK: "sortText": "3" |
| // CHECK: }, |
| // CHECK: { |
| // CHECK: "detail": "alias: i32", |
| // CHECK: "insertTextFormat": 1, |
| // CHECK: "kind": 5, |
| // CHECK: "label": "alias", |
| // CHECK: "sortText": "2" |
| // CHECK: } |
| // CHECK: ] |
| // CHECK-NEXT: } |
| // ----- |
| {"jsonrpc":"2.0","id":9,"method":"textDocument/completion","params":{ |
| "textDocument":{"uri":"test:///foo.mlir"}, |
| "position":{"line":3,"character":61} |
| }} |
| // CHECK-LABEL: "id": 9 |
| // CHECK-NEXT: "jsonrpc": "2.0", |
| // CHECK-NEXT: "result": { |
| // CHECK-NEXT: "isIncomplete": false, |
| // CHECK-NEXT: "items": [ |
| // CHECK-NEXT: { |
| // CHECK-NEXT: "insertTextFormat": 1, |
| // CHECK-NEXT: "kind": 14, |
| // CHECK-NEXT: "label": "attribute", |
| // CHECK-NEXT: "sortText": "0" |
| // CHECK-NEXT: }, |
| // CHECK-NEXT: { |
| // CHECK-NEXT: "insertTextFormat": 1, |
| // CHECK-NEXT: "kind": 14, |
| // CHECK-NEXT: "label": "operation", |
| // CHECK-NEXT: "sortText": "0" |
| // CHECK-NEXT: }, |
| // CHECK-NEXT: { |
| // CHECK-NEXT: "insertTextFormat": 1, |
| // CHECK-NEXT: "kind": 14, |
| // CHECK-NEXT: "label": "range", |
| // CHECK-NEXT: "sortText": "0" |
| // CHECK-NEXT: }, |
| // CHECK-NEXT: { |
| // CHECK-NEXT: "insertTextFormat": 1, |
| // CHECK-NEXT: "kind": 14, |
| // CHECK-NEXT: "label": "type", |
| // CHECK-NEXT: "sortText": "0" |
| // CHECK-NEXT: }, |
| // CHECK-NEXT: { |
| // CHECK-NEXT: "insertTextFormat": 1, |
| // CHECK-NEXT: "kind": 14, |
| // CHECK-NEXT: "label": "value", |
| // CHECK-NEXT: "sortText": "0" |
| // CHECK-NEXT: } |
| // CHECK-NEXT: ] |
| // CHECK-NEXT: } |
| // ----- |
| {"jsonrpc":"2.0","id":10,"method":"shutdown"} |
| // ----- |
| {"jsonrpc":"2.0","method":"exit"} |