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