# RUN: clangd -lit-test < %s | FileCheck -strict-whitespace %s {"jsonrpc":"2.0","id":0,"method":"initialize","params":{"processId":123,"rootPath":"clangd","capabilities":{"textDocument":{"semanticHighlightingCapabilities":{"semanticHighlighting":true}}},"trace":"off"}} --- # CHECK: "id": 0, # CHECK: "semanticHighlighting": { # CHECK-NEXT: "scopes": [ # CHECK-NEXT: [ # CHECK-NEXT: "variable.other.cpp" # CHECK-NEXT: ], # CHECK-NEXT: [ # CHECK-NEXT: "variable.other.local.cpp" # CHECK-NEXT: ], # CHECK-NEXT: [ # CHECK-NEXT: "variable.parameter.cpp" # CHECK-NEXT: ], # CHECK-NEXT: [ # CHECK-NEXT: "entity.name.function.cpp" # CHECK-NEXT: ], # CHECK-NEXT: [ # CHECK-NEXT: "entity.name.function.method.cpp" # CHECK-NEXT: ], # CHECK-NEXT: [ # CHECK-NEXT: "entity.name.function.method.static.cpp" # CHECK-NEXT: ], # CHECK-NEXT: [ # CHECK-NEXT: "variable.other.field.cpp" # CHECK-NEXT: ], # CHECK-NEXT: [ # CHECK-NEXT: "variable.other.field.static.cpp" # CHECK-NEXT: ], # CHECK-NEXT: [ # CHECK-NEXT: "entity.name.type.class.cpp" # CHECK-NEXT: ], # CHECK-NEXT: [ # CHECK-NEXT: "entity.name.type.enum.cpp" # CHECK-NEXT: ], # CHECK-NEXT: [ # CHECK-NEXT: "variable.other.enummember.cpp" # CHECK-NEXT: ], # CHECK-NEXT: [ # CHECK-NEXT: "entity.name.type.typedef.cpp" # CHECK-NEXT: ], # CHECK-NEXT: [ # CHECK-NEXT: "entity.name.type.dependent.cpp" # CHECK-NEXT: ], # CHECK-NEXT: [ # CHECK-NEXT: "entity.name.other.dependent.cpp" # CHECK-NEXT: ], # CHECK-NEXT: [ # CHECK-NEXT: "entity.name.namespace.cpp" # CHECK-NEXT: ], # CHECK-NEXT: [ # CHECK-NEXT: "entity.name.type.template.cpp" # CHECK-NEXT: ], # CHECK-NEXT: [ # CHECK-NEXT: "entity.name.type.concept.cpp" # CHECK-NEXT: ], # CHECK-NEXT: [ # CHECK-NEXT: "storage.type.primitive.cpp" # CHECK-NEXT: ], # CHECK-NEXT: [ # CHECK-NEXT: "entity.name.function.preprocessor.cpp" # CHECK-NEXT: ], # CHECK-NEXT: [ # CHECK-NEXT: "meta.disabled" # CHECK-NEXT: ] # CHECK-NEXT: ] # CHECK-NEXT: }, --- {"jsonrpc":"2.0","method":"textDocument/didOpen","params":{"textDocument":{"uri":"test:///foo.cpp","languageId":"cpp","text":"int x = 2;"}}} # CHECK: "method": "textDocument/semanticHighlighting", # CHECK-NEXT: "params": { # CHECK-NEXT: "lines": [ # CHECK-NEXT: { # CHECK-NEXT: "isInactive": false, # CHECK-NEXT: "line": 0, # CHECK-NEXT: "tokens": "AAAABAABAAA=" # CHECK-NEXT: } # CHECK-NEXT: ], # CHECK-NEXT: "textDocument": { # CHECK-NEXT: "uri": "file://{{.*}}/clangd-test/foo.cpp", # CHECK-NEXT: "version": 0 # CHECK-NEXT: } # CHECK-NEXT: } # CHECK-NEXT:} --- {"jsonrpc":"2.0","method":"textDocument/didOpen","params":{"textDocument":{"uri":"test:///foo2.cpp","languageId":"cpp","text":"int x = 2;\nint y = 2;"}}} # CHECK: "method": "textDocument/semanticHighlighting", # CHECK-NEXT: "params": { # CHECK-NEXT: "lines": [ # CHECK-NEXT: { # CHECK-NEXT: "isInactive": false, # CHECK-NEXT: "line": 0, # CHECK-NEXT: "tokens": "AAAABAABAAA=" # CHECK-NEXT: } # CHECK-NEXT: { # CHECK-NEXT: "isInactive": false, # CHECK-NEXT: "line": 1, # CHECK-NEXT: "tokens": "AAAABAABAAA=" # CHECK-NEXT: } # CHECK-NEXT: ], # CHECK-NEXT: "textDocument": { # CHECK-NEXT: "uri": "file://{{.*}}/clangd-test/foo2.cpp", # CHECK-NEXT: "version": 0 # CHECK-NEXT: } # CHECK-NEXT: } # CHECK-NEXT:} --- {"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;"}]}} # CHECK: "method": "textDocument/semanticHighlighting", # CHECK-NEXT: "params": { # CHECK-NEXT: "lines": [ # CHECK-NEXT: { # CHECK-NEXT: "isInactive": false, # CHECK-NEXT: "line": 1, # CHECK-NEXT: "tokens": "AAAABAABAAA=" # CHECK-NEXT: } # CHECK-NEXT: ], # CHECK-NEXT: "textDocument": { # CHECK-NEXT: "uri": "file://{{.*}}/clangd-test/foo.cpp", # CHECK-NEXT: "version": 1 # CHECK-NEXT: } # CHECK-NEXT: } # CHECK-NEXT:} --- {"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": ""}]}} # CHECK: "method": "textDocument/semanticHighlighting", # CHECK-NEXT: "params": { # CHECK-NEXT: "lines": [ # CHECK-NEXT: { # CHECK-NEXT: "isInactive": false, # CHECK-NEXT: "line": 1, # CHECK-NEXT: "tokens": "" # CHECK-NEXT: } # CHECK-NEXT: ], # CHECK-NEXT: "textDocument": { # CHECK-NEXT: "uri": "file://{{.*}}/clangd-test/foo.cpp", # CHECK-NEXT: "version": 2 # CHECK-NEXT: } # CHECK-NEXT: } # CHECK-NEXT:} --- {"jsonrpc":"2.0","id":3,"method":"shutdown"} --- {"jsonrpc":"2.0","method":"exit"}