Fix GCC build problem with 288f05f related to SmallVector. (#116958)
[llvm-project.git] / mlir / test / mlir-lsp-server / hover.test
blobedca346b8c733bf1772b094bcef2db971684860d
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.func @foo(%arg: i1) {\n%value = arith.constant true\ncf.br ^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}
16 //      CHECK:  "id": 1,
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"
22 // CHECK-NEXT:    },
23 // CHECK-NEXT:    "range": {
24 // CHECK-NEXT:      "end": {
25 // CHECK-NEXT:        "character": 23,
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.
36 {"jsonrpc":"2.0","id":2,"method":"textDocument/hover","params":{
37   "textDocument":{"uri":"test:///foo.mlir"},
38   "position":{"line":1,"character":2}
40 //      CHECK:  "id": 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"
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.
60 {"jsonrpc":"2.0","id":3,"method":"textDocument/hover","params":{
61   "textDocument":{"uri":"test:///foo.mlir"},
62   "position":{"line":3,"character":2}
64 //      CHECK:  "id": 3,
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"
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.
84 {"jsonrpc":"2.0","id":4,"method":"textDocument/hover","params":{
85   "textDocument":{"uri":"test:///foo.mlir"},
86   "position":{"line":0,"character":17}
88 //      CHECK:  "id": 4,
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"
94 // CHECK-NEXT:    },
95 // CHECK-NEXT:    "range": {
96 // CHECK-NEXT:      "end": {
97 // CHECK-NEXT:        "character": 19,
98 // CHECK-NEXT:        "line": 0
99 // CHECK-NEXT:      },
100 // CHECK-NEXT:      "start": {
101 // CHECK-NEXT:        "character": 15,
102 // CHECK-NEXT:        "line": 0
103 // CHECK-NEXT:      }
104 // CHECK-NEXT:    }
105 // CHECK-NEXT:  }
106 // -----
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}
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.func\" : public @foo\n\nGeneric Form:\n\n```mlir\n\"func.func\"() <{function_type = (i1) -> (), sym_name = \"foo\"}> ({...}) : () -> ()\n```\n"
118 // CHECK-NEXT:    },
119 // CHECK-NEXT:    "range": {
120 // CHECK-NEXT:      "end": {
121 // CHECK-NEXT:        "character": 9,
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":13}
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.func\" : public @foo\n\nGeneric Form:\n\n```mlir\n\"func.func\"() <{function_type = (i1) -> (), sym_name = \"foo\"}> ({...}) : () -> ()\n```\n"
142 // CHECK-NEXT:    },
143 // CHECK-NEXT:    "range": {
144 // CHECK-NEXT:      "end": {
145 // CHECK-NEXT:        "character": 14,
146 // CHECK-NEXT:        "line": 0
147 // CHECK-NEXT:      },
148 // CHECK-NEXT:      "start": {
149 // CHECK-NEXT:        "character": 10,
150 // CHECK-NEXT:        "line": 0
151 // CHECK-NEXT:      }
152 // CHECK-NEXT:    }
153 // CHECK-NEXT:  }
154 // -----
155 {"jsonrpc":"2.0","id":7,"method":"shutdown"}
156 // -----
157 {"jsonrpc":"2.0","method":"exit"}