1# RUN: clangd -lit-test < %s | FileCheck -strict-whitespace %s 2{"jsonrpc":"2.0","id":0,"method":"initialize","params":{"processId":123,"rootPath":"clangd","capabilities":{},"trace":"off"}} 3--- 4{"jsonrpc":"2.0","method":"textDocument/didOpen","params":{"textDocument":{"uri":"test:///main.cpp","languageId":"cpp","version":1,"text":"struct Parent {};\nstruct Child1 : Parent {};\nstruct Child2 : Child1 {};\nstruct Child3 : Child2 {};\nstruct Child4 : Child3 {};"}}} 5--- 6{"jsonrpc":"2.0","id":1,"method":"textDocument/prepareTypeHierarchy","params":{"textDocument":{"uri":"test:///main.cpp"},"position":{"line":2,"character":11},"direction":2,"resolve":1}} 7# CHECK: "id": 1 8# CHECK-NEXT: "jsonrpc": "2.0", 9# CHECK-NEXT: "result": [ 10# CHECK-NEXT: { 11# CHECK-NEXT: "data": { 12# CHECK-NEXT: "parents": [ 13# CHECK-NEXT: { 14# CHECK-NEXT: "parents": [ 15# CHECK-NEXT: { 16# CHECK-NEXT: "parents": [], 17# CHECK-NEXT: "symbolID": "FE546E7B648D69A7" 18# CHECK-NEXT: } 19# CHECK-NEXT: ], 20# CHECK-NEXT: "symbolID": "ECDC0C46D75120F4" 21# CHECK-NEXT: } 22# CHECK-NEXT: ], 23# CHECK-NEXT: "symbolID": "8A991335E4E67D08" 24# CHECK-NEXT: }, 25# CHECK-NEXT: "kind": 23, 26# CHECK-NEXT: "name": "Child2", 27# CHECK-NEXT: "range": { 28# CHECK-NEXT: "end": { 29# CHECK-NEXT: "character": 25, 30# CHECK-NEXT: "line": 2 31# CHECK-NEXT: }, 32# CHECK-NEXT: "start": { 33# CHECK-NEXT: "character": 0, 34# CHECK-NEXT: "line": 2 35# CHECK-NEXT: } 36# CHECK-NEXT: }, 37# CHECK-NEXT: "selectionRange": { 38# CHECK-NEXT: "end": { 39# CHECK-NEXT: "character": 13, 40# CHECK-NEXT: "line": 2 41# CHECK-NEXT: }, 42# CHECK-NEXT: "start": { 43# CHECK-NEXT: "character": 7, 44# CHECK-NEXT: "line": 2 45# CHECK-NEXT: } 46# CHECK-NEXT: }, 47# CHECK-NEXT: "uri": "file://{{.*}}/clangd-test/main.cpp" 48# CHECK-NEXT: } 49# CHECK-NEXT: ] 50--- 51{"jsonrpc":"2.0","id":2,"method":"typeHierarchy/supertypes","params":{"item":{"uri":"test:///main.cpp","data":{"parents":[{"parents":[{"parents":[],"symbolID":"FE546E7B648D69A7"}],"symbolID":"ECDC0C46D75120F4"}],"symbolID":"8A991335E4E67D08"},"name":"Child2","kind":23,"range":{"end":{"character":13,"line":3},"start":{"character":7,"line":3}},"selectionRange":{"end":{"character":13,"line":3},"start":{"character":7,"line":3}}}}} 52# CHECK: "id": 2 53# CHECK-NEXT: "jsonrpc": "2.0", 54# CHECK-NEXT: "result": [ 55# CHECK-NEXT: { 56# CHECK-NEXT: "data": { 57# CHECK-NEXT: "parents": [ 58# CHECK-NEXT: { 59# CHECK-NEXT: "parents": [], 60# CHECK-NEXT: "symbolID": "FE546E7B648D69A7" 61# CHECK-NEXT: } 62# CHECK-NEXT: ], 63# CHECK-NEXT: "symbolID": "ECDC0C46D75120F4" 64# CHECK-NEXT: }, 65# CHECK-NEXT: "detail": "Child1", 66# CHECK-NEXT: "kind": 23, 67# CHECK-NEXT: "name": "Child1", 68# CHECK-NEXT: "range": { 69# CHECK-NEXT: "end": { 70# CHECK-NEXT: "character": 13, 71# CHECK-NEXT: "line": 1 72# CHECK-NEXT: }, 73# CHECK-NEXT: "start": { 74# CHECK-NEXT: "character": 7, 75# CHECK-NEXT: "line": 1 76# CHECK-NEXT: } 77# CHECK-NEXT: }, 78# CHECK-NEXT: "selectionRange": { 79# CHECK-NEXT: "end": { 80# CHECK-NEXT: "character": 13, 81# CHECK-NEXT: "line": 1 82# CHECK-NEXT: }, 83# CHECK-NEXT: "start": { 84# CHECK-NEXT: "character": 7, 85# CHECK-NEXT: "line": 1 86# CHECK-NEXT: } 87# CHECK-NEXT: }, 88# CHECK-NEXT: "uri": "file://{{.*}}/clangd-test/main.cpp" 89# CHECK-NEXT: } 90# CHECK-NEXT: ] 91--- 92{"jsonrpc":"2.0","id":2,"method":"typeHierarchy/subtypes","params":{"item":{"uri":"test:///main.cpp","data":{"parents":[{"parents":[{"parents":[],"symbolID":"FE546E7B648D69A7"}],"symbolID":"ECDC0C46D75120F4"}],"symbolID":"8A991335E4E67D08"},"name":"Child2","kind":23,"range":{"end":{"character":13,"line":3},"start":{"character":7,"line":3}},"selectionRange":{"end":{"character":13,"line":3},"start":{"character":7,"line":3}}}}} 93# CHECK: "id": 2 94# CHECK-NEXT: "jsonrpc": "2.0", 95# CHECK-NEXT: "result": [ 96# CHECK-NEXT: { 97# CHECK-NEXT: "data": { 98# CHECK-NEXT: "parents": [ 99# CHECK-NEXT: { 100# CHECK-NEXT: "parents": [ 101# CHECK-NEXT: { 102# CHECK-NEXT: "parents": [ 103# CHECK-NEXT: { 104# CHECK-NEXT: "parents": [], 105# CHECK-NEXT: "symbolID": "FE546E7B648D69A7" 106# CHECK-NEXT: } 107# CHECK-NEXT: ], 108# CHECK-NEXT: "symbolID": "ECDC0C46D75120F4" 109# CHECK-NEXT: } 110# CHECK-NEXT: ], 111# CHECK-NEXT: "symbolID": "8A991335E4E67D08" 112# CHECK-NEXT: } 113# CHECK-NEXT: ], 114# CHECK-NEXT: "symbolID": "A6576FE083F2949A" 115# CHECK-NEXT: }, 116# CHECK-NEXT: "detail": "Child3", 117# CHECK-NEXT: "kind": 23, 118# CHECK-NEXT: "name": "Child3", 119# CHECK-NEXT: "range": { 120# CHECK-NEXT: "end": { 121# CHECK-NEXT: "character": 13, 122# CHECK-NEXT: "line": 3 123# CHECK-NEXT: }, 124# CHECK-NEXT: "start": { 125# CHECK-NEXT: "character": 7, 126# CHECK-NEXT: "line": 3 127# CHECK-NEXT: } 128# CHECK-NEXT: }, 129# CHECK-NEXT: "selectionRange": { 130# CHECK-NEXT: "end": { 131# CHECK-NEXT: "character": 13, 132# CHECK-NEXT: "line": 3 133# CHECK-NEXT: }, 134# CHECK-NEXT: "start": { 135# CHECK-NEXT: "character": 7, 136# CHECK-NEXT: "line": 3 137# CHECK-NEXT: } 138# CHECK-NEXT: }, 139# CHECK-NEXT: "uri": "file://{{.*}}/clangd-test/main.cpp" 140# CHECK-NEXT: } 141# CHECK-NEXT: ] 142--- 143{"jsonrpc":"2.0","id":3,"method":"shutdown"} 144--- 145{"jsonrpc":"2.0","method":"exit"} 146