141d2c6dfSRiver Riddle// RUN: mlir-pdll-lsp-server -pdll-extra-dir %S -pdll-extra-dir %S/../../include -lit-test < %s | FileCheck -strict-whitespace %s 2008de486SRiver Riddle{"jsonrpc":"2.0","id":0,"method":"initialize","params":{"processId":123,"rootPath":"pdll","capabilities":{},"trace":"off"}} 3008de486SRiver Riddle// ----- 4008de486SRiver Riddle{"jsonrpc":"2.0","method":"textDocument/didOpen","params":{"textDocument":{ 5008de486SRiver Riddle "uri":"test:///foo.pdll", 6008de486SRiver Riddle "languageId":"pdll", 7008de486SRiver Riddle "version":1, 841d2c6dfSRiver Riddle "text":"#include \"include/included.pdll\"\nConstraint ValueCst(value: Value);\nConstraint Cst();\nPattern FooPattern with benefit(1) {\nlet tuple = (value1 = _: Op, _: Op<test.op>);\nerase tuple.value1;\n}" 9008de486SRiver Riddle}}} 10008de486SRiver Riddle// ----- 11008de486SRiver Riddle{"jsonrpc":"2.0","id":1,"method":"textDocument/completion","params":{ 12008de486SRiver Riddle "textDocument":{"uri":"test:///foo.pdll"}, 1341d2c6dfSRiver Riddle "position":{"line":5,"character":12} 14008de486SRiver Riddle}} 15008de486SRiver Riddle// CHECK: "id": 1 16008de486SRiver Riddle// CHECK-NEXT: "jsonrpc": "2.0", 17008de486SRiver Riddle// CHECK-NEXT: "result": { 18008de486SRiver Riddle// CHECK-NEXT: "isIncomplete": false, 19008de486SRiver Riddle// CHECK-NEXT: "items": [ 20008de486SRiver Riddle// CHECK-NEXT: { 21008de486SRiver Riddle// CHECK-NEXT: "detail": "0: Op", 22008de486SRiver Riddle// CHECK-NEXT: "filterText": "0", 23008de486SRiver Riddle// CHECK-NEXT: "insertText": "0", 24008de486SRiver Riddle// CHECK-NEXT: "insertTextFormat": 1, 25008de486SRiver Riddle// CHECK-NEXT: "kind": 5, 26008de486SRiver Riddle// CHECK-NEXT: "label": "0 (field #0)", 27008de486SRiver Riddle// CHECK-NEXT: "sortText": "0" 28008de486SRiver Riddle// CHECK-NEXT: }, 29008de486SRiver Riddle// CHECK-NEXT: { 30008de486SRiver Riddle// CHECK-NEXT: "detail": "0: Op", 31008de486SRiver Riddle// CHECK-NEXT: "filterText": "value1 (field #0)", 32008de486SRiver Riddle// CHECK-NEXT: "insertText": "value1", 33008de486SRiver Riddle// CHECK-NEXT: "insertTextFormat": 1, 34008de486SRiver Riddle// CHECK-NEXT: "kind": 5, 35008de486SRiver Riddle// CHECK-NEXT: "label": "value1 (field #0)", 36008de486SRiver Riddle// CHECK-NEXT: "sortText": "0" 37008de486SRiver Riddle// CHECK-NEXT: }, 38008de486SRiver Riddle// CHECK-NEXT: { 39008de486SRiver Riddle// CHECK-NEXT: "detail": "1: Op<test.op>", 40008de486SRiver Riddle// CHECK-NEXT: "filterText": "1", 41008de486SRiver Riddle// CHECK-NEXT: "insertText": "1", 42008de486SRiver Riddle// CHECK-NEXT: "insertTextFormat": 1, 43008de486SRiver Riddle// CHECK-NEXT: "kind": 5, 44008de486SRiver Riddle// CHECK-NEXT: "label": "1 (field #1)", 45008de486SRiver Riddle// CHECK-NEXT: "sortText": "1" 46008de486SRiver Riddle// CHECK-NEXT: } 47008de486SRiver Riddle// CHECK-NEXT: ] 48008de486SRiver Riddle// CHECK-NEXT: } 49008de486SRiver Riddle// ----- 50008de486SRiver Riddle{"jsonrpc":"2.0","id":1,"method":"textDocument/completion","params":{ 51008de486SRiver Riddle "textDocument":{"uri":"test:///foo.pdll"}, 5241d2c6dfSRiver Riddle "position":{"line":3,"character":23} 53008de486SRiver Riddle}} 54008de486SRiver Riddle// CHECK: "id": 1 55008de486SRiver Riddle// CHECK-NEXT: "jsonrpc": "2.0", 56008de486SRiver Riddle// CHECK-NEXT: "result": { 57008de486SRiver Riddle// CHECK-NEXT: "isIncomplete": false, 58008de486SRiver Riddle// CHECK-NEXT: "items": [ 59008de486SRiver Riddle// CHECK-NEXT: { 60008de486SRiver Riddle// CHECK-NEXT: "detail": "pattern metadata", 61008de486SRiver Riddle// CHECK-NEXT: "documentation": { 62008de486SRiver Riddle// CHECK-NEXT: "kind": "markdown", 63008de486SRiver Riddle// CHECK-NEXT: "value": "The `benefit` of matching the pattern." 64008de486SRiver Riddle// CHECK-NEXT: }, 65008de486SRiver Riddle// CHECK-NEXT: "insertText": "benefit($1)", 66008de486SRiver Riddle// CHECK-NEXT: "insertTextFormat": 2, 67008de486SRiver Riddle// CHECK-NEXT: "kind": 7, 68008de486SRiver Riddle// CHECK-NEXT: "label": "benefit" 69008de486SRiver Riddle// CHECK-NEXT: }, 70008de486SRiver Riddle// CHECK-NEXT: { 71008de486SRiver Riddle// CHECK-NEXT: "detail": "pattern metadata", 72008de486SRiver Riddle// CHECK-NEXT: "documentation": { 73008de486SRiver Riddle// CHECK-NEXT: "kind": "markdown", 74008de486SRiver Riddle// CHECK-NEXT: "value": "The pattern properly handles recursive application." 75008de486SRiver Riddle// CHECK-NEXT: }, 76008de486SRiver Riddle// CHECK-NEXT: "insertTextFormat": 1, 77008de486SRiver Riddle// CHECK-NEXT: "kind": 7, 78008de486SRiver Riddle// CHECK-NEXT: "label": "recursion" 79008de486SRiver Riddle// CHECK-NEXT: } 80008de486SRiver Riddle// CHECK-NEXT: ] 81008de486SRiver Riddle// CHECK-NEXT: } 82008de486SRiver Riddle// ----- 83008de486SRiver Riddle{"jsonrpc":"2.0","id":1,"method":"textDocument/completion","params":{ 84008de486SRiver Riddle "textDocument":{"uri":"test:///foo.pdll"}, 8541d2c6dfSRiver Riddle "position":{"line":4,"character":24} 86008de486SRiver Riddle}} 87008de486SRiver Riddle// CHECK: "id": 1 88008de486SRiver Riddle// CHECK-NEXT: "jsonrpc": "2.0", 89008de486SRiver Riddle// CHECK-NEXT: "result": { 90008de486SRiver Riddle// CHECK-NEXT: "isIncomplete": false, 91008de486SRiver Riddle// CHECK-NEXT: "items": [ 92008de486SRiver Riddle// CHECK-NEXT: { 93008de486SRiver Riddle// CHECK-NEXT: "detail": "Attr constraint", 94008de486SRiver Riddle// CHECK-NEXT: "documentation": { 95008de486SRiver Riddle// CHECK-NEXT: "kind": "markdown", 96008de486SRiver Riddle// CHECK-NEXT: "value": "A single entity core constraint of type `mlir::Attribute`" 97008de486SRiver Riddle// CHECK-NEXT: }, 98008de486SRiver Riddle// CHECK-NEXT: "insertTextFormat": 1, 99008de486SRiver Riddle// CHECK-NEXT: "kind": 7, 100008de486SRiver Riddle// CHECK-NEXT: "label": "Attr", 101008de486SRiver Riddle// CHECK-NEXT: "sortText": "0" 102008de486SRiver Riddle// CHECK-NEXT: }, 103008de486SRiver Riddle// CHECK-NEXT: { 104008de486SRiver Riddle// CHECK-NEXT: "detail": "Op constraint", 105008de486SRiver Riddle// CHECK-NEXT: "documentation": { 106008de486SRiver Riddle// CHECK-NEXT: "kind": "markdown", 107008de486SRiver Riddle// CHECK-NEXT: "value": "A single entity core constraint of type `mlir::Operation *`" 108008de486SRiver Riddle// CHECK-NEXT: }, 109008de486SRiver Riddle// CHECK-NEXT: "insertTextFormat": 1, 110008de486SRiver Riddle// CHECK-NEXT: "kind": 7, 111008de486SRiver Riddle// CHECK-NEXT: "label": "Op", 112008de486SRiver Riddle// CHECK-NEXT: "sortText": "0" 113008de486SRiver Riddle// CHECK-NEXT: }, 114008de486SRiver Riddle// CHECK-NEXT: { 115008de486SRiver Riddle// CHECK-NEXT: "detail": "Value constraint", 116008de486SRiver Riddle// CHECK-NEXT: "documentation": { 117008de486SRiver Riddle// CHECK-NEXT: "kind": "markdown", 118008de486SRiver Riddle// CHECK-NEXT: "value": "A single entity core constraint of type `mlir::Value`" 119008de486SRiver Riddle// CHECK-NEXT: }, 120008de486SRiver Riddle// CHECK-NEXT: "insertTextFormat": 1, 121008de486SRiver Riddle// CHECK-NEXT: "kind": 7, 122008de486SRiver Riddle// CHECK-NEXT: "label": "Value", 123008de486SRiver Riddle// CHECK-NEXT: "sortText": "0" 124008de486SRiver Riddle// CHECK-NEXT: }, 125008de486SRiver Riddle// CHECK-NEXT: { 126008de486SRiver Riddle// CHECK-NEXT: "detail": "ValueRange constraint", 127008de486SRiver Riddle// CHECK-NEXT: "documentation": { 128008de486SRiver Riddle// CHECK-NEXT: "kind": "markdown", 129008de486SRiver Riddle// CHECK-NEXT: "value": "A single entity core constraint of type `mlir::ValueRange`" 130008de486SRiver Riddle// CHECK-NEXT: }, 131008de486SRiver Riddle// CHECK-NEXT: "insertTextFormat": 1, 132008de486SRiver Riddle// CHECK-NEXT: "kind": 7, 133008de486SRiver Riddle// CHECK-NEXT: "label": "ValueRange", 134008de486SRiver Riddle// CHECK-NEXT: "sortText": "0" 135008de486SRiver Riddle// CHECK-NEXT: }, 136008de486SRiver Riddle// CHECK-NEXT: { 137008de486SRiver Riddle// CHECK-NEXT: "detail": "Type constraint", 138008de486SRiver Riddle// CHECK-NEXT: "documentation": { 139008de486SRiver Riddle// CHECK-NEXT: "kind": "markdown", 140008de486SRiver Riddle// CHECK-NEXT: "value": "A single entity core constraint of type `mlir::Type`" 141008de486SRiver Riddle// CHECK-NEXT: }, 142008de486SRiver Riddle// CHECK-NEXT: "insertTextFormat": 1, 143008de486SRiver Riddle// CHECK-NEXT: "kind": 7, 144008de486SRiver Riddle// CHECK-NEXT: "label": "Type", 145008de486SRiver Riddle// CHECK-NEXT: "sortText": "0" 146008de486SRiver Riddle// CHECK-NEXT: }, 147008de486SRiver Riddle// CHECK-NEXT: { 148008de486SRiver Riddle// CHECK-NEXT: "detail": "TypeRange constraint", 149008de486SRiver Riddle// CHECK-NEXT: "documentation": { 150008de486SRiver Riddle// CHECK-NEXT: "kind": "markdown", 151008de486SRiver Riddle// CHECK-NEXT: "value": "A single entity core constraint of type `mlir::TypeRange`" 152008de486SRiver Riddle// CHECK-NEXT: }, 153008de486SRiver Riddle// CHECK-NEXT: "insertTextFormat": 1, 154008de486SRiver Riddle// CHECK-NEXT: "kind": 7, 155008de486SRiver Riddle// CHECK-NEXT: "label": "TypeRange", 156008de486SRiver Riddle// CHECK-NEXT: "sortText": "0" 157008de486SRiver Riddle// CHECK-NEXT: }, 158008de486SRiver Riddle// CHECK-NEXT: { 159008de486SRiver Riddle// CHECK-NEXT: "detail": "Attr<type> constraint", 160008de486SRiver Riddle// CHECK-NEXT: "documentation": { 161008de486SRiver Riddle// CHECK-NEXT: "kind": "markdown", 162008de486SRiver Riddle// CHECK-NEXT: "value": "A single entity core constraint of type `mlir::Attribute`" 163008de486SRiver Riddle// CHECK-NEXT: }, 164008de486SRiver Riddle// CHECK-NEXT: "insertText": "Attr<$1>", 165008de486SRiver Riddle// CHECK-NEXT: "insertTextFormat": 2, 166008de486SRiver Riddle// CHECK-NEXT: "kind": 7, 167008de486SRiver Riddle// CHECK-NEXT: "label": "Attr<type>", 168008de486SRiver Riddle// CHECK-NEXT: "sortText": "0" 169008de486SRiver Riddle// CHECK-NEXT: }, 170008de486SRiver Riddle// CHECK-NEXT: { 171008de486SRiver Riddle// CHECK-NEXT: "detail": "Value<type> constraint", 172008de486SRiver Riddle// CHECK-NEXT: "documentation": { 173008de486SRiver Riddle// CHECK-NEXT: "kind": "markdown", 174008de486SRiver Riddle// CHECK-NEXT: "value": "A single entity core constraint of type `mlir::Value`" 175008de486SRiver Riddle// CHECK-NEXT: }, 176008de486SRiver Riddle// CHECK-NEXT: "insertText": "Value<$1>", 177008de486SRiver Riddle// CHECK-NEXT: "insertTextFormat": 2, 178008de486SRiver Riddle// CHECK-NEXT: "kind": 7, 179008de486SRiver Riddle// CHECK-NEXT: "label": "Value<type>", 180008de486SRiver Riddle// CHECK-NEXT: "sortText": "0" 181008de486SRiver Riddle// CHECK-NEXT: }, 182008de486SRiver Riddle// CHECK-NEXT: { 183008de486SRiver Riddle// CHECK-NEXT: "detail": "ValueRange<type> constraint", 184008de486SRiver Riddle// CHECK-NEXT: "documentation": { 185008de486SRiver Riddle// CHECK-NEXT: "kind": "markdown", 186008de486SRiver Riddle// CHECK-NEXT: "value": "A single entity core constraint of type `mlir::ValueRange`" 187008de486SRiver Riddle// CHECK-NEXT: }, 188008de486SRiver Riddle// CHECK-NEXT: "insertText": "ValueRange<$1>", 189008de486SRiver Riddle// CHECK-NEXT: "insertTextFormat": 2, 190008de486SRiver Riddle// CHECK-NEXT: "kind": 7, 191008de486SRiver Riddle// CHECK-NEXT: "label": "ValueRange<type>", 192008de486SRiver Riddle// CHECK-NEXT: "sortText": "0" 193008de486SRiver Riddle// CHECK-NEXT: }, 194008de486SRiver Riddle// CHECK-NEXT: { 195008de486SRiver Riddle// CHECK-NEXT: "detail": "(value: Value) -> Tuple<>", 196008de486SRiver Riddle// CHECK-NEXT: "kind": 8, 197008de486SRiver Riddle// CHECK-NEXT: "label": "ValueCst", 198008de486SRiver Riddle// CHECK-NEXT: "sortText": "2_ValueCst" 199008de486SRiver Riddle// CHECK-NEXT: } 200008de486SRiver Riddle// CHECK-NEXT: ] 201008de486SRiver Riddle// CHECK-NEXT: } 202008de486SRiver Riddle// ----- 20341d2c6dfSRiver Riddle{"jsonrpc":"2.0","id":1,"method":"textDocument/completion","params":{ 20441d2c6dfSRiver Riddle "textDocument":{"uri":"test:///foo.pdll"}, 20541d2c6dfSRiver Riddle "position":{"line":0,"character":18} 20641d2c6dfSRiver Riddle}} 20741d2c6dfSRiver Riddle// CHECK: "id": 1 20841d2c6dfSRiver Riddle// CHECK-NEXT: "jsonrpc": "2.0", 20941d2c6dfSRiver Riddle// CHECK-NEXT: "result": { 21041d2c6dfSRiver Riddle// CHECK-NEXT: "isIncomplete": false, 21141d2c6dfSRiver Riddle// CHECK-NEXT: "items": [ 21241d2c6dfSRiver Riddle// CHECK-NEXT: { 21341d2c6dfSRiver Riddle// CHECK-NEXT: "kind": 17, 214*021b2545SRiver Riddle// CHECK-NEXT: "label": "included.pdll" 21541d2c6dfSRiver Riddle// CHECK-NEXT: }, 21641d2c6dfSRiver Riddle// CHECK-NEXT: { 21741d2c6dfSRiver Riddle// CHECK-NEXT: "kind": 17, 218*021b2545SRiver Riddle// CHECK-NEXT: "label": "included.td" 21941d2c6dfSRiver Riddle// CHECK-NEXT: } 22041d2c6dfSRiver Riddle// CHECK-NEXT: ] 22141d2c6dfSRiver Riddle// CHECK-NEXT: } 22241d2c6dfSRiver Riddle// ----- 223008de486SRiver Riddle{"jsonrpc":"2.0","id":3,"method":"shutdown"} 224008de486SRiver Riddle// ----- 225008de486SRiver Riddle{"jsonrpc":"2.0","method":"exit"} 226