75 lines · plain
1# RUN: clangd -lit-test < %s | FileCheck -strict-whitespace %s2# RUN: clangd -lit-test -pch-storage=memory < %s | FileCheck -strict-whitespace %s3{"jsonrpc":"2.0","id":0,"method":"initialize","params":{"processId":123,"rootPath":"clangd","capabilities":{},"trace":"off"}}4---5{"jsonrpc":"2.0","method":"textDocument/didOpen","params":{"textDocument":{"uri":"test:///main.cpp","languageId":"cpp","version":1,"text":"struct S { int a; };\nint main() {\nS().\n}"}}}6---7{"jsonrpc":"2.0","id":1,"method":"textDocument/completion","params":{"textDocument":{"uri":"test:///main.cpp"},"position":{"line":2,"character":4}}}8# CHECK: "id": 19# CHECK-NEXT: "jsonrpc": "2.0",10# CHECK-NEXT: "result": {11# CHECK-NEXT: "isIncomplete": false,12# CHECK-NEXT: "items": [13# CHECK-NEXT: {14# CHECK-NEXT: "detail": "int",15# CHECK-NEXT: "filterText": "a",16# CHECK-NEXT: "insertText": "a",17# CHECK-NEXT: "insertTextFormat": 1,18# CHECK-NEXT: "kind": 5,19# CHECK-NEXT: "label": " a",20# CHECK-NEXT: "score": {{[0-9]+.[0-9]+}},21# CHECK-NEXT: "sortText": "{{.*}}a"22# CHECK-NEXT: "textEdit": {23# CHECK-NEXT: "newText": "a",24# CHECK-NEXT: "range": {25# CHECK-NEXT: "end": {26# CHECK-NEXT: "character": 4,27# CHECK-NEXT: "line": 228# CHECK-NEXT: }29# CHECK-NEXT: "start": {30# CHECK-NEXT: "character": 4,31# CHECK-NEXT: "line": 232# CHECK-NEXT: }33# CHECK-NEXT: }34# CHECK-NEXT: }35# CHECK-NEXT: }36# CHECK-NEXT: ]37---38# Update the source file and check for completions again.39{"jsonrpc":"2.0","method":"textDocument/didChange","params":{"textDocument":{"uri":"test:///main.cpp","version":2},"contentChanges":[{"text":"struct S { int b; };\nint main() {\nS().\n}"}]}}40---41{"jsonrpc":"2.0","id":3,"method":"textDocument/completion","params":{"textDocument":{"uri":"test:///main.cpp"},"position":{"line":2,"character":4}}}42# CHECK: "id": 3,43# CHECK-NEXT: "jsonrpc": "2.0",44# CHECK-NEXT: "result": {45# CHECK-NEXT: "isIncomplete": false,46# CHECK-NEXT: "items": [47# CHECK-NEXT: {48# CHECK-NEXT: "detail": "int",49# CHECK-NEXT: "filterText": "b",50# CHECK-NEXT: "insertText": "b",51# CHECK-NEXT: "insertTextFormat": 1,52# CHECK-NEXT: "kind": 5,53# CHECK-NEXT: "label": " b",54# CHECK-NEXT: "score": {{[0-9]+.[0-9]+}},55# CHECK-NEXT: "sortText": "{{.*}}b"56# CHECK-NEXT: "textEdit": {57# CHECK-NEXT: "newText": "b",58# CHECK-NEXT: "range": {59# CHECK-NEXT: "end": {60# CHECK-NEXT: "character": 4,61# CHECK-NEXT: "line": 262# CHECK-NEXT: }63# CHECK-NEXT: "start": {64# CHECK-NEXT: "character": 4,65# CHECK-NEXT: "line": 266# CHECK-NEXT: }67# CHECK-NEXT: }68# CHECK-NEXT: }69# CHECK-NEXT: }70# CHECK-NEXT: ]71---72{"jsonrpc":"2.0","id":4,"method":"shutdown"}73---74{"jsonrpc":"2.0","method":"exit"}75