158 lines · plain
1// RUN: mlir-lsp-server -lit-test < %s | FileCheck -strict-whitespace %s2{"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}15}}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": 127// CHECK-NEXT: },28// CHECK-NEXT: "start": {29// CHECK-NEXT: "character": 9,30// CHECK-NEXT: "line": 131// 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}39}}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": 151// CHECK-NEXT: },52// CHECK-NEXT: "start": {53// CHECK-NEXT: "character": 0,54// CHECK-NEXT: "line": 155// 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}63}}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": 375// CHECK-NEXT: },76// CHECK-NEXT: "start": {77// CHECK-NEXT: "character": 0,78// CHECK-NEXT: "line": 379// 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}87}}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": 099// CHECK-NEXT: },100// CHECK-NEXT: "start": {101// CHECK-NEXT: "character": 15,102// CHECK-NEXT: "line": 0103// 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}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.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": 0123// CHECK-NEXT: },124// CHECK-NEXT: "start": {125// CHECK-NEXT: "character": 0,126// CHECK-NEXT: "line": 0127// 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}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.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": 0147// CHECK-NEXT: },148// CHECK-NEXT: "start": {149// CHECK-NEXT: "character": 10,150// CHECK-NEXT: "line": 0151// CHECK-NEXT: }152// CHECK-NEXT: }153// CHECK-NEXT: }154// -----155{"jsonrpc":"2.0","id":7,"method":"shutdown"}156// -----157{"jsonrpc":"2.0","method":"exit"}158