221
|
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":"func @foo(%arg: i1) {\n%value = constant true\nbr ^bb2\n^bb2:\nreturn\n}"
|
|
9 }}}
|
|
10 // -----
|
|
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}
|
|
15 }}
|
|
16 // CHECK: "id": 1,
|
|
17 // CHECK-NEXT: "jsonrpc": "2.0",
|
|
18 // CHECK-NEXT: "result": {
|
|
19 // CHECK-NEXT: "contents": {
|
|
20 // CHECK-NEXT: "kind": "markdown",
|
223
|
21 // CHECK-NEXT: "value": "\"std.constant\"\n\nGeneric Form:\n\n```mlir\n%0 = \"std.constant\"() {value = true} : () -> i1\n```\n"
|
221
|
22 // CHECK-NEXT: },
|
|
23 // CHECK-NEXT: "range": {
|
|
24 // CHECK-NEXT: "end": {
|
|
25 // CHECK-NEXT: "character": 17,
|
|
26 // CHECK-NEXT: "line": 1
|
|
27 // CHECK-NEXT: },
|
|
28 // CHECK-NEXT: "start": {
|
|
29 // CHECK-NEXT: "character": 9,
|
|
30 // CHECK-NEXT: "line": 1
|
|
31 // CHECK-NEXT: }
|
|
32 // CHECK-NEXT: }
|
|
33 // CHECK-NEXT: }
|
|
34 // -----
|
|
35 // Hover on an operation result.
|
223
|
36 {"jsonrpc":"2.0","id":2,"method":"textDocument/hover","params":{
|
221
|
37 "textDocument":{"uri":"test:///foo.mlir"},
|
|
38 "position":{"line":1,"character":2}
|
|
39 }}
|
223
|
40 // CHECK: "id": 2,
|
221
|
41 // CHECK-NEXT: "jsonrpc": "2.0",
|
|
42 // CHECK-NEXT: "result": {
|
|
43 // CHECK-NEXT: "contents": {
|
|
44 // CHECK-NEXT: "kind": "markdown",
|
|
45 // CHECK-NEXT: "value": "Operation: \"std.constant\"\n\nResult #0\n\nType: `i1`\n\n"
|
|
46 // CHECK-NEXT: },
|
|
47 // CHECK-NEXT: "range": {
|
|
48 // CHECK-NEXT: "end": {
|
|
49 // CHECK-NEXT: "character": 6,
|
|
50 // CHECK-NEXT: "line": 1
|
|
51 // CHECK-NEXT: },
|
|
52 // CHECK-NEXT: "start": {
|
|
53 // CHECK-NEXT: "character": 0,
|
|
54 // CHECK-NEXT: "line": 1
|
|
55 // CHECK-NEXT: }
|
|
56 // CHECK-NEXT: }
|
|
57 // CHECK-NEXT: }
|
|
58 // -----
|
|
59 // Hover on a Block.
|
223
|
60 {"jsonrpc":"2.0","id":3,"method":"textDocument/hover","params":{
|
221
|
61 "textDocument":{"uri":"test:///foo.mlir"},
|
|
62 "position":{"line":3,"character":2}
|
|
63 }}
|
223
|
64 // CHECK: "id": 3,
|
221
|
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\"\n\nBlock #1\n\nPredecessors: <Block #0>\n\n"
|
|
70 // CHECK-NEXT: },
|
|
71 // CHECK-NEXT: "range": {
|
|
72 // CHECK-NEXT: "end": {
|
|
73 // CHECK-NEXT: "character": 4,
|
|
74 // CHECK-NEXT: "line": 3
|
|
75 // CHECK-NEXT: },
|
|
76 // CHECK-NEXT: "start": {
|
|
77 // CHECK-NEXT: "character": 0,
|
|
78 // CHECK-NEXT: "line": 3
|
|
79 // CHECK-NEXT: }
|
|
80 // CHECK-NEXT: }
|
|
81 // CHECK-NEXT: }
|
|
82 // -----
|
|
83 // Hover on a Block argument.
|
223
|
84 {"jsonrpc":"2.0","id":4,"method":"textDocument/hover","params":{
|
221
|
85 "textDocument":{"uri":"test:///foo.mlir"},
|
|
86 "position":{"line":0,"character":12}
|
|
87 }}
|
223
|
88 // CHECK: "id": 4,
|
221
|
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\"\n\nBlock: <Block #0>\n\nArgument #0\n\nType: `i1`\n\n"
|
|
94 // CHECK-NEXT: },
|
|
95 // CHECK-NEXT: "range": {
|
|
96 // CHECK-NEXT: "end": {
|
|
97 // CHECK-NEXT: "character": 14,
|
|
98 // CHECK-NEXT: "line": 0
|
|
99 // CHECK-NEXT: },
|
|
100 // CHECK-NEXT: "start": {
|
|
101 // CHECK-NEXT: "character": 10,
|
|
102 // CHECK-NEXT: "line": 0
|
|
103 // CHECK-NEXT: }
|
|
104 // CHECK-NEXT: }
|
|
105 // CHECK-NEXT: }
|
|
106 // -----
|
223
|
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}
|
|
111 }}
|
|
112 // CHECK: "id": 5,
|
|
113 // CHECK-NEXT: "jsonrpc": "2.0",
|
|
114 // CHECK-NEXT: "result": {
|
|
115 // CHECK-NEXT: "contents": {
|
|
116 // CHECK-NEXT: "kind": "markdown",
|
|
117 // CHECK-NEXT: "value": "\"func\" : public @foo\n\nGeneric Form:\n\n```mlir\n\"func\"() ( {\n}) {sym_name = \"foo\", type = (i1) -> ()} : () -> ()\n```\n"
|
|
118 // CHECK-NEXT: },
|
|
119 // CHECK-NEXT: "range": {
|
|
120 // CHECK-NEXT: "end": {
|
|
121 // CHECK-NEXT: "character": 4,
|
|
122 // CHECK-NEXT: "line": 0
|
|
123 // CHECK-NEXT: },
|
|
124 // CHECK-NEXT: "start": {
|
|
125 // CHECK-NEXT: "character": 0,
|
|
126 // CHECK-NEXT: "line": 0
|
|
127 // CHECK-NEXT: }
|
|
128 // CHECK-NEXT: }
|
|
129 // CHECK-NEXT: }
|
|
130 // -----
|
|
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":8}
|
|
135 }}
|
|
136 // CHECK: "id": 6,
|
|
137 // CHECK-NEXT: "jsonrpc": "2.0",
|
|
138 // CHECK-NEXT: "result": {
|
|
139 // CHECK-NEXT: "contents": {
|
|
140 // CHECK-NEXT: "kind": "markdown",
|
|
141 // CHECK-NEXT: "value": "\"func\" : public @foo\n\nGeneric Form:\n\n```mlir\n\"func\"() ( {\n}) {sym_name = \"foo\", type = (i1) -> ()} : () -> ()\n```\n"
|
|
142 // CHECK-NEXT: },
|
|
143 // CHECK-NEXT: "range": {
|
|
144 // CHECK-NEXT: "end": {
|
|
145 // CHECK-NEXT: "character": 9,
|
|
146 // CHECK-NEXT: "line": 0
|
|
147 // CHECK-NEXT: },
|
|
148 // CHECK-NEXT: "start": {
|
|
149 // CHECK-NEXT: "character": 5,
|
|
150 // CHECK-NEXT: "line": 0
|
|
151 // CHECK-NEXT: }
|
|
152 // CHECK-NEXT: }
|
|
153 // CHECK-NEXT: }
|
|
154 // -----
|
|
155 {"jsonrpc":"2.0","id":7,"method":"shutdown"}
|
221
|
156 // -----
|
|
157 {"jsonrpc":"2.0","method":"exit"}
|