1# RUN: clangd -lit-test < %s | FileCheck -strict-whitespace %s 2{"jsonrpc":"2.0","id":0,"method":"initialize","params":{"processId":123,"rootPath":"clangd","capabilities":{"textDocument":{"semanticHighlightingCapabilities":{"semanticHighlighting":true}}},"trace":"off"}} 3--- 4# CHECK: "id": 0, 5# CHECK: "semanticHighlighting": { 6# CHECK-NEXT: "scopes": [ 7# CHECK-NEXT: [ 8# CHECK-NEXT: "variable.other.cpp" 9# CHECK-NEXT: ], 10# CHECK-NEXT: [ 11# CHECK-NEXT: "variable.other.local.cpp" 12# CHECK-NEXT: ], 13# CHECK-NEXT: [ 14# CHECK-NEXT: "variable.parameter.cpp" 15# CHECK-NEXT: ], 16# CHECK-NEXT: [ 17# CHECK-NEXT: "entity.name.function.cpp" 18# CHECK-NEXT: ], 19# CHECK-NEXT: [ 20# CHECK-NEXT: "entity.name.function.method.cpp" 21# CHECK-NEXT: ], 22# CHECK-NEXT: [ 23# CHECK-NEXT: "entity.name.function.method.static.cpp" 24# CHECK-NEXT: ], 25# CHECK-NEXT: [ 26# CHECK-NEXT: "variable.other.field.cpp" 27# CHECK-NEXT: ], 28# CHECK-NEXT: [ 29# CHECK-NEXT: "variable.other.field.static.cpp" 30# CHECK-NEXT: ], 31# CHECK-NEXT: [ 32# CHECK-NEXT: "entity.name.type.class.cpp" 33# CHECK-NEXT: ], 34# CHECK-NEXT: [ 35# CHECK-NEXT: "entity.name.type.enum.cpp" 36# CHECK-NEXT: ], 37# CHECK-NEXT: [ 38# CHECK-NEXT: "variable.other.enummember.cpp" 39# CHECK-NEXT: ], 40# CHECK-NEXT: [ 41# CHECK-NEXT: "entity.name.type.typedef.cpp" 42# CHECK-NEXT: ], 43# CHECK-NEXT: [ 44# CHECK-NEXT: "entity.name.type.dependent.cpp" 45# CHECK-NEXT: ], 46# CHECK-NEXT: [ 47# CHECK-NEXT: "entity.name.other.dependent.cpp" 48# CHECK-NEXT: ], 49# CHECK-NEXT: [ 50# CHECK-NEXT: "entity.name.namespace.cpp" 51# CHECK-NEXT: ], 52# CHECK-NEXT: [ 53# CHECK-NEXT: "entity.name.type.template.cpp" 54# CHECK-NEXT: ], 55# CHECK-NEXT: [ 56# CHECK-NEXT: "entity.name.type.concept.cpp" 57# CHECK-NEXT: ], 58# CHECK-NEXT: [ 59# CHECK-NEXT: "storage.type.primitive.cpp" 60# CHECK-NEXT: ], 61# CHECK-NEXT: [ 62# CHECK-NEXT: "entity.name.function.preprocessor.cpp" 63# CHECK-NEXT: ], 64# CHECK-NEXT: [ 65# CHECK-NEXT: "meta.disabled" 66# CHECK-NEXT: ] 67# CHECK-NEXT: ] 68# CHECK-NEXT: }, 69--- 70{"jsonrpc":"2.0","method":"textDocument/didOpen","params":{"textDocument":{"uri":"test:///foo.cpp","languageId":"cpp","text":"int x = 2;"}}} 71# CHECK: "method": "textDocument/semanticHighlighting", 72# CHECK-NEXT: "params": { 73# CHECK-NEXT: "lines": [ 74# CHECK-NEXT: { 75# CHECK-NEXT: "isInactive": false, 76# CHECK-NEXT: "line": 0, 77# CHECK-NEXT: "tokens": "AAAABAABAAA=" 78# CHECK-NEXT: } 79# CHECK-NEXT: ], 80# CHECK-NEXT: "textDocument": { 81# CHECK-NEXT: "uri": "file://{{.*}}/clangd-test/foo.cpp", 82# CHECK-NEXT: "version": 0 83# CHECK-NEXT: } 84# CHECK-NEXT: } 85# CHECK-NEXT:} 86--- 87{"jsonrpc":"2.0","method":"textDocument/didOpen","params":{"textDocument":{"uri":"test:///foo2.cpp","languageId":"cpp","text":"int x = 2;\nint y = 2;"}}} 88# CHECK: "method": "textDocument/semanticHighlighting", 89# CHECK-NEXT: "params": { 90# CHECK-NEXT: "lines": [ 91# CHECK-NEXT: { 92# CHECK-NEXT: "isInactive": false, 93# CHECK-NEXT: "line": 0, 94# CHECK-NEXT: "tokens": "AAAABAABAAA=" 95# CHECK-NEXT: } 96# CHECK-NEXT: { 97# CHECK-NEXT: "isInactive": false, 98# CHECK-NEXT: "line": 1, 99# CHECK-NEXT: "tokens": "AAAABAABAAA=" 100# CHECK-NEXT: } 101# CHECK-NEXT: ], 102# CHECK-NEXT: "textDocument": { 103# CHECK-NEXT: "uri": "file://{{.*}}/clangd-test/foo2.cpp", 104# CHECK-NEXT: "version": 0 105# CHECK-NEXT: } 106# CHECK-NEXT: } 107# CHECK-NEXT:} 108--- 109{"jsonrpc":"2.0","method":"textDocument/didChange","params":{"textDocument":{"uri":"test:///foo.cpp"},"contentChanges": [{"range":{"start": {"line": 0,"character": 10},"end": {"line": 0,"character": 10}},"rangeLength": 0,"text": "\nint y = 2;"}]}} 110# CHECK: "method": "textDocument/semanticHighlighting", 111# CHECK-NEXT: "params": { 112# CHECK-NEXT: "lines": [ 113# CHECK-NEXT: { 114# CHECK-NEXT: "isInactive": false, 115# CHECK-NEXT: "line": 1, 116# CHECK-NEXT: "tokens": "AAAABAABAAA=" 117# CHECK-NEXT: } 118# CHECK-NEXT: ], 119# CHECK-NEXT: "textDocument": { 120# CHECK-NEXT: "uri": "file://{{.*}}/clangd-test/foo.cpp", 121# CHECK-NEXT: "version": 1 122# CHECK-NEXT: } 123# CHECK-NEXT: } 124# CHECK-NEXT:} 125--- 126{"jsonrpc":"2.0","method":"textDocument/didChange","params":{"textDocument":{"uri":"test:///foo.cpp"},"contentChanges": [{"range":{"start": {"line": 0,"character": 10},"end": {"line": 1,"character": 10}},"rangeLength": 11,"text": ""}]}} 127# CHECK: "method": "textDocument/semanticHighlighting", 128# CHECK-NEXT: "params": { 129# CHECK-NEXT: "lines": [ 130# CHECK-NEXT: { 131# CHECK-NEXT: "isInactive": false, 132# CHECK-NEXT: "line": 1, 133# CHECK-NEXT: "tokens": "" 134# CHECK-NEXT: } 135# CHECK-NEXT: ], 136# CHECK-NEXT: "textDocument": { 137# CHECK-NEXT: "uri": "file://{{.*}}/clangd-test/foo.cpp", 138# CHECK-NEXT: "version": 2 139# CHECK-NEXT: } 140# CHECK-NEXT: } 141# CHECK-NEXT:} 142--- 143{"jsonrpc":"2.0","id":3,"method":"shutdown"} 144--- 145{"jsonrpc":"2.0","method":"exit"} 146