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"}}
4 {"jsonrpc":"2.0","method":"textDocument/didOpen","params":{"textDocument":{
5 "uri":"test:///foo.mlir",
8 "text":"func.func @foo(%arg: i1) {\n%value = arith.constant true\ncf.br ^bb2\n^bb2:\nreturn\n}"
11 // Hover on an operation.
12 {"jsonrpc":"2.0","id":1,"method":"textDocument/hover","params":{
13 "textDocument":{"uri":"test:///foo.mlir"},
14 "position":{"line":1,"character":12}
17 // CHECK-NEXT: "jsonrpc": "2.0",
18 // CHECK-NEXT: "result": {
19 // CHECK-NEXT: "contents": {
20 // CHECK-NEXT: "kind": "markdown",
21 // CHECK-NEXT: "value": "\"arith.constant\"\n\nGeneric Form:\n\n```mlir\n%0 = \"arith.constant\"() <{value = true}> : () -> i1\n```\n"
23 // CHECK-NEXT: "range": {
24 // CHECK-NEXT: "end": {
25 // CHECK-NEXT: "character": 23,
26 // CHECK-NEXT: "line": 1
28 // CHECK-NEXT: "start": {
29 // CHECK-NEXT: "character": 9,
30 // CHECK-NEXT: "line": 1
35 // Hover on an operation result.
36 {"jsonrpc":"2.0","id":2,"method":"textDocument/hover","params":{
37 "textDocument":{"uri":"test:///foo.mlir"},
38 "position":{"line":1,"character":2}
41 // CHECK-NEXT: "jsonrpc": "2.0",
42 // CHECK-NEXT: "result": {
43 // CHECK-NEXT: "contents": {
44 // CHECK-NEXT: "kind": "markdown",
45 // CHECK-NEXT: "value": "Operation: \"arith.constant\"\n\nResult #0\n\nType: `i1`\n\n"
47 // CHECK-NEXT: "range": {
48 // CHECK-NEXT: "end": {
49 // CHECK-NEXT: "character": 6,
50 // CHECK-NEXT: "line": 1
52 // CHECK-NEXT: "start": {
53 // CHECK-NEXT: "character": 0,
54 // CHECK-NEXT: "line": 1
60 {"jsonrpc":"2.0","id":3,"method":"textDocument/hover","params":{
61 "textDocument":{"uri":"test:///foo.mlir"},
62 "position":{"line":3,"character":2}
65 // CHECK-NEXT: "jsonrpc": "2.0",
66 // CHECK-NEXT: "result": {
67 // CHECK-NEXT: "contents": {
68 // CHECK-NEXT: "kind": "markdown",
69 // CHECK-NEXT: "value": "Operation: \"func.func\"\n\nBlock #1\n\nPredecessors: <Block #0>\n\n"
71 // CHECK-NEXT: "range": {
72 // CHECK-NEXT: "end": {
73 // CHECK-NEXT: "character": 4,
74 // CHECK-NEXT: "line": 3
76 // CHECK-NEXT: "start": {
77 // CHECK-NEXT: "character": 0,
78 // CHECK-NEXT: "line": 3
83 // Hover on a Block argument.
84 {"jsonrpc":"2.0","id":4,"method":"textDocument/hover","params":{
85 "textDocument":{"uri":"test:///foo.mlir"},
86 "position":{"line":0,"character":17}
89 // CHECK-NEXT: "jsonrpc": "2.0",
90 // CHECK-NEXT: "result": {
91 // CHECK-NEXT: "contents": {
92 // CHECK-NEXT: "kind": "markdown",
93 // CHECK-NEXT: "value": "Operation: \"func.func\"\n\nBlock: <Block #0>\n\nArgument #0\n\nType: `i1`\n\n"
95 // CHECK-NEXT: "range": {
96 // CHECK-NEXT: "end": {
97 // CHECK-NEXT: "character": 19,
98 // CHECK-NEXT: "line": 0
100 // CHECK-NEXT: "start": {
101 // CHECK-NEXT: "character": 15,
102 // CHECK-NEXT: "line": 0
107 // Hover on a region operation.
108 {"jsonrpc":"2.0","id":5,"method":"textDocument/hover","params":{
109 "textDocument":{"uri":"test:///foo.mlir"},
110 "position":{"line":0,"character":1}
113 // CHECK-NEXT: "jsonrpc": "2.0",
114 // CHECK-NEXT: "result": {
115 // CHECK-NEXT: "contents": {
116 // CHECK-NEXT: "kind": "markdown",
117 // CHECK-NEXT: "value": "\"func.func\" : public @foo\n\nGeneric Form:\n\n```mlir\n\"func.func\"() <{function_type = (i1) -> (), sym_name = \"foo\"}> ({...}) : () -> ()\n```\n"
119 // CHECK-NEXT: "range": {
120 // CHECK-NEXT: "end": {
121 // CHECK-NEXT: "character": 9,
122 // CHECK-NEXT: "line": 0
124 // CHECK-NEXT: "start": {
125 // CHECK-NEXT: "character": 0,
126 // CHECK-NEXT: "line": 0
131 // Hover on a symbol reference.
132 {"jsonrpc":"2.0","id":6,"method":"textDocument/hover","params":{
133 "textDocument":{"uri":"test:///foo.mlir"},
134 "position":{"line":0,"character":13}
137 // CHECK-NEXT: "jsonrpc": "2.0",
138 // CHECK-NEXT: "result": {
139 // CHECK-NEXT: "contents": {
140 // CHECK-NEXT: "kind": "markdown",
141 // CHECK-NEXT: "value": "\"func.func\" : public @foo\n\nGeneric Form:\n\n```mlir\n\"func.func\"() <{function_type = (i1) -> (), sym_name = \"foo\"}> ({...}) : () -> ()\n```\n"
143 // CHECK-NEXT: "range": {
144 // CHECK-NEXT: "end": {
145 // CHECK-NEXT: "character": 14,
146 // CHECK-NEXT: "line": 0
148 // CHECK-NEXT: "start": {
149 // CHECK-NEXT: "character": 10,
150 // CHECK-NEXT: "line": 0
155 {"jsonrpc":"2.0","id":7,"method":"shutdown"}
157 {"jsonrpc":"2.0","method":"exit"}