xref: /llvm-project/mlir/test/mlir-pdll-lsp-server/hover.test (revision bf352e0b2ef9f8824a5b88d44313b5a13258350d)
109af7fefSRiver Riddle// RUN: mlir-pdll-lsp-server -pdll-extra-dir %S -pdll-extra-dir %S/../../include -lit-test < %s | FileCheck %s
241ae2114SRiver Riddle{"jsonrpc":"2.0","id":0,"method":"initialize","params":{"processId":123,"rootPath":"pdll","capabilities":{},"trace":"off"}}
341ae2114SRiver Riddle// -----
441ae2114SRiver Riddle{"jsonrpc":"2.0","method":"textDocument/didOpen","params":{"textDocument":{
541ae2114SRiver Riddle  "uri":"test:///foo.pdll",
641ae2114SRiver Riddle  "languageId":"pdll",
741ae2114SRiver Riddle  "version":1,
8*bf352e0bSRiver Riddle  "text":"Constraint FooCst();\n// This is documentation for the rewriter.\n/// And even more docs.\nRewrite FooRewrite(op: Op) -> Op;\nPattern Foo {\nlet root: Op;\nerase root;\n}\n#include \"include/included.td\"\n#include \"include/included.pdll\""
941ae2114SRiver Riddle}}}
1041ae2114SRiver Riddle// -----
1141ae2114SRiver Riddle// Hover on a variable.
1241ae2114SRiver Riddle{"jsonrpc":"2.0","id":1,"method":"textDocument/hover","params":{
1341ae2114SRiver Riddle  "textDocument":{"uri":"test:///foo.pdll"},
14*bf352e0bSRiver Riddle  "position":{"line":5,"character":6}
1541ae2114SRiver Riddle}}
1641ae2114SRiver Riddle//      CHECK:  "id": 1,
1741ae2114SRiver Riddle// CHECK-NEXT:  "jsonrpc": "2.0",
1841ae2114SRiver Riddle// CHECK-NEXT:  "result": {
1941ae2114SRiver Riddle// CHECK-NEXT:    "contents": {
2041ae2114SRiver Riddle// CHECK-NEXT:      "kind": "markdown",
2141ae2114SRiver Riddle// CHECK-NEXT:      "value": "**Variable**: `root`\n***\nType: `Op`\n"
2241ae2114SRiver Riddle// CHECK-NEXT:    },
2341ae2114SRiver Riddle// CHECK-NEXT:    "range": {
2441ae2114SRiver Riddle// CHECK-NEXT:      "end": {
2541ae2114SRiver Riddle// CHECK-NEXT:        "character": 8,
26*bf352e0bSRiver Riddle// CHECK-NEXT:        "line": 5
2741ae2114SRiver Riddle// CHECK-NEXT:      },
2841ae2114SRiver Riddle// CHECK-NEXT:      "start": {
2941ae2114SRiver Riddle// CHECK-NEXT:        "character": 4,
30*bf352e0bSRiver Riddle// CHECK-NEXT:        "line": 5
3141ae2114SRiver Riddle// CHECK-NEXT:      }
3241ae2114SRiver Riddle// CHECK-NEXT:    }
3341ae2114SRiver Riddle// CHECK-NEXT:  }
3441ae2114SRiver Riddle// -----
3541ae2114SRiver Riddle// Hover on a pattern.
3641ae2114SRiver Riddle{"jsonrpc":"2.0","id":1,"method":"textDocument/hover","params":{
3741ae2114SRiver Riddle  "textDocument":{"uri":"test:///foo.pdll"},
38*bf352e0bSRiver Riddle  "position":{"line":4,"character":9}
3941ae2114SRiver Riddle}}
4041ae2114SRiver Riddle//      CHECK:  "id": 1,
4141ae2114SRiver Riddle// CHECK-NEXT:  "jsonrpc": "2.0",
4241ae2114SRiver Riddle// CHECK-NEXT:  "result": {
4341ae2114SRiver Riddle// CHECK-NEXT:    "contents": {
4441ae2114SRiver Riddle// CHECK-NEXT:      "kind": "markdown",
4541ae2114SRiver Riddle// CHECK-NEXT:      "value": "**Pattern**: `Foo`\n***\nRootOp: `Op`\n"
4641ae2114SRiver Riddle// CHECK-NEXT:    },
4741ae2114SRiver Riddle// CHECK-NEXT:    "range": {
4841ae2114SRiver Riddle// CHECK-NEXT:      "end": {
4941ae2114SRiver Riddle// CHECK-NEXT:        "character": 11,
50*bf352e0bSRiver Riddle// CHECK-NEXT:        "line": 4
5141ae2114SRiver Riddle// CHECK-NEXT:      },
5241ae2114SRiver Riddle// CHECK-NEXT:      "start": {
5341ae2114SRiver Riddle// CHECK-NEXT:        "character": 8,
54*bf352e0bSRiver Riddle// CHECK-NEXT:        "line": 4
5541ae2114SRiver Riddle// CHECK-NEXT:      }
5641ae2114SRiver Riddle// CHECK-NEXT:    }
5741ae2114SRiver Riddle// CHECK-NEXT:  }
5841ae2114SRiver Riddle// -----
5941ae2114SRiver Riddle// Hover on a core constraint.
6041ae2114SRiver Riddle{"jsonrpc":"2.0","id":1,"method":"textDocument/hover","params":{
6141ae2114SRiver Riddle  "textDocument":{"uri":"test:///foo.pdll"},
62*bf352e0bSRiver Riddle  "position":{"line":5,"character":11}
6341ae2114SRiver Riddle}}
6441ae2114SRiver Riddle//      CHECK:  "id": 1,
6541ae2114SRiver Riddle// CHECK-NEXT:  "jsonrpc": "2.0",
6641ae2114SRiver Riddle// CHECK-NEXT:  "result": {
6741ae2114SRiver Riddle// CHECK-NEXT:    "contents": {
6841ae2114SRiver Riddle// CHECK-NEXT:      "kind": "markdown",
6941ae2114SRiver Riddle// CHECK-NEXT:      "value": "**Constraint**: `Op`\n"
7041ae2114SRiver Riddle// CHECK-NEXT:    },
7141ae2114SRiver Riddle// CHECK-NEXT:    "range": {
7241ae2114SRiver Riddle// CHECK-NEXT:      "end": {
7341ae2114SRiver Riddle// CHECK-NEXT:        "character": 12,
74*bf352e0bSRiver Riddle// CHECK-NEXT:        "line": 5
7541ae2114SRiver Riddle// CHECK-NEXT:      },
7641ae2114SRiver Riddle// CHECK-NEXT:      "start": {
7741ae2114SRiver Riddle// CHECK-NEXT:        "character": 10,
78*bf352e0bSRiver Riddle// CHECK-NEXT:        "line": 5
7941ae2114SRiver Riddle// CHECK-NEXT:      }
8041ae2114SRiver Riddle// CHECK-NEXT:    }
8141ae2114SRiver Riddle// CHECK-NEXT:  }
8241ae2114SRiver Riddle// -----
8341ae2114SRiver Riddle// Hover on a user constraint.
8441ae2114SRiver Riddle{"jsonrpc":"2.0","id":1,"method":"textDocument/hover","params":{
8541ae2114SRiver Riddle  "textDocument":{"uri":"test:///foo.pdll"},
8641ae2114SRiver Riddle  "position":{"line":0,"character":14}
8741ae2114SRiver Riddle}}
8841ae2114SRiver Riddle//      CHECK:  "id": 1,
8941ae2114SRiver Riddle// CHECK-NEXT:  "jsonrpc": "2.0",
9041ae2114SRiver Riddle// CHECK-NEXT:  "result": {
9141ae2114SRiver Riddle// CHECK-NEXT:    "contents": {
9241ae2114SRiver Riddle// CHECK-NEXT:      "kind": "markdown",
9341ae2114SRiver Riddle// CHECK-NEXT:      "value": "**Constraint**: `FooCst`\n***\n"
9441ae2114SRiver Riddle// CHECK-NEXT:    },
9541ae2114SRiver Riddle// CHECK-NEXT:    "range": {
9641ae2114SRiver Riddle// CHECK-NEXT:      "end": {
9741ae2114SRiver Riddle// CHECK-NEXT:        "character": 17,
9841ae2114SRiver Riddle// CHECK-NEXT:        "line": 0
9941ae2114SRiver Riddle// CHECK-NEXT:      },
10041ae2114SRiver Riddle// CHECK-NEXT:      "start": {
10141ae2114SRiver Riddle// CHECK-NEXT:        "character": 11,
10241ae2114SRiver Riddle// CHECK-NEXT:        "line": 0
10341ae2114SRiver Riddle// CHECK-NEXT:      }
10441ae2114SRiver Riddle// CHECK-NEXT:    }
10541ae2114SRiver Riddle// CHECK-NEXT:  }
10641ae2114SRiver Riddle// -----
10741ae2114SRiver Riddle// Hover on a user rewrite.
10841ae2114SRiver Riddle{"jsonrpc":"2.0","id":1,"method":"textDocument/hover","params":{
10941ae2114SRiver Riddle  "textDocument":{"uri":"test:///foo.pdll"},
110*bf352e0bSRiver Riddle  "position":{"line":3,"character":11}
11141ae2114SRiver Riddle}}
11241ae2114SRiver Riddle//      CHECK:  "id": 1,
11341ae2114SRiver Riddle// CHECK-NEXT:  "jsonrpc": "2.0",
11441ae2114SRiver Riddle// CHECK-NEXT:  "result": {
11541ae2114SRiver Riddle// CHECK-NEXT:    "contents": {
11641ae2114SRiver Riddle// CHECK-NEXT:      "kind": "markdown",
117*bf352e0bSRiver Riddle// CHECK-NEXT:      "value": "**Rewrite**: `FooRewrite`\n***\nParameters:\n* op: `Op`\n***\nResults:\n* `Op`\n***\n\n This is documentation for the rewriter.\n And even more docs.\n"
11841ae2114SRiver Riddle// CHECK-NEXT:    },
11941ae2114SRiver Riddle// CHECK-NEXT:    "range": {
12041ae2114SRiver Riddle// CHECK-NEXT:      "end": {
12141ae2114SRiver Riddle// CHECK-NEXT:        "character": 18,
122*bf352e0bSRiver Riddle// CHECK-NEXT:        "line": 3
12341ae2114SRiver Riddle// CHECK-NEXT:      },
12441ae2114SRiver Riddle// CHECK-NEXT:      "start": {
12541ae2114SRiver Riddle// CHECK-NEXT:        "character": 8,
126*bf352e0bSRiver Riddle// CHECK-NEXT:        "line": 3
12741ae2114SRiver Riddle// CHECK-NEXT:      }
12841ae2114SRiver Riddle// CHECK-NEXT:    }
12941ae2114SRiver Riddle// CHECK-NEXT:  }
13041ae2114SRiver Riddle// -----
13109af7fefSRiver Riddle// Hover on an include file.
13209af7fefSRiver Riddle{"jsonrpc":"2.0","id":1,"method":"textDocument/hover","params":{
13309af7fefSRiver Riddle  "textDocument":{"uri":"test:///foo.pdll"},
134*bf352e0bSRiver Riddle  "position":{"line":8,"character":15}
13509af7fefSRiver Riddle}}
13609af7fefSRiver Riddle//      CHECK:  "id": 1,
13709af7fefSRiver Riddle// CHECK-NEXT:  "jsonrpc": "2.0",
13809af7fefSRiver Riddle// CHECK-NEXT:  "result": {
13909af7fefSRiver Riddle// CHECK-NEXT:    "contents": {
14009af7fefSRiver Riddle// CHECK-NEXT:      "kind": "markdown",
14109af7fefSRiver Riddle// CHECK-NEXT:      "value": "`included.td`\n***\n{{.*}}included.td"
14209af7fefSRiver Riddle// CHECK-NEXT:    },
14309af7fefSRiver Riddle// CHECK-NEXT:    "range": {
14409af7fefSRiver Riddle// CHECK-NEXT:      "end": {
14509af7fefSRiver Riddle// CHECK-NEXT:        "character": 30,
146*bf352e0bSRiver Riddle// CHECK-NEXT:        "line": 8
14709af7fefSRiver Riddle// CHECK-NEXT:      },
14809af7fefSRiver Riddle// CHECK-NEXT:      "start": {
14909af7fefSRiver Riddle// CHECK-NEXT:        "character": 9,
150*bf352e0bSRiver Riddle// CHECK-NEXT:        "line": 8
15109af7fefSRiver Riddle// CHECK-NEXT:      }
15209af7fefSRiver Riddle// CHECK-NEXT:    }
15309af7fefSRiver Riddle// CHECK-NEXT:  }
15409af7fefSRiver Riddle// -----
15509af7fefSRiver Riddle// Hover on an include file.
15609af7fefSRiver Riddle{"jsonrpc":"2.0","id":1,"method":"textDocument/hover","params":{
15709af7fefSRiver Riddle  "textDocument":{"uri":"test:///foo.pdll"},
158*bf352e0bSRiver Riddle  "position":{"line":9,"character":15}
15909af7fefSRiver Riddle}}
16009af7fefSRiver Riddle//      CHECK:  "id": 1,
16109af7fefSRiver Riddle// CHECK-NEXT:  "jsonrpc": "2.0",
16209af7fefSRiver Riddle// CHECK-NEXT:  "result": {
16309af7fefSRiver Riddle// CHECK-NEXT:    "contents": {
16409af7fefSRiver Riddle// CHECK-NEXT:      "kind": "markdown",
16509af7fefSRiver Riddle// CHECK-NEXT:      "value": "`included.pdll`\n***\n{{.*}}included.pdll"
16609af7fefSRiver Riddle// CHECK-NEXT:    },
16709af7fefSRiver Riddle// CHECK-NEXT:    "range": {
16809af7fefSRiver Riddle// CHECK-NEXT:      "end": {
16909af7fefSRiver Riddle// CHECK-NEXT:        "character": 32,
170*bf352e0bSRiver Riddle// CHECK-NEXT:        "line": 9
17109af7fefSRiver Riddle// CHECK-NEXT:      },
17209af7fefSRiver Riddle// CHECK-NEXT:      "start": {
17309af7fefSRiver Riddle// CHECK-NEXT:        "character": 9,
174*bf352e0bSRiver Riddle// CHECK-NEXT:        "line": 9
17509af7fefSRiver Riddle// CHECK-NEXT:      }
17609af7fefSRiver Riddle// CHECK-NEXT:    }
17709af7fefSRiver Riddle// CHECK-NEXT:  }
17809af7fefSRiver Riddle// -----
17941ae2114SRiver Riddle{"jsonrpc":"2.0","id":7,"method":"shutdown"}
18041ae2114SRiver Riddle// -----
18141ae2114SRiver Riddle{"jsonrpc":"2.0","method":"exit"}
182