# RUN: clangd -lit-test < %s | FileCheck -strict-whitespace %s -implicit-check-not=semanticHighlight # Send capabilities for both Theia semanticHighlight & standard semanticTokens. # clangd should not use/acknowledge the Theia protocol. {"jsonrpc":"2.0","id":0,"method":"initialize","params":{"capabilities":{"textDocument":{ "semanticHighlightingCapabilities":{"semanticHighlighting":true}, "semanticTokens":{"dynamicRegistration":true} }}}} --- {"jsonrpc":"2.0","method":"textDocument/didOpen","params":{"textDocument":{ "uri": "test:///foo.cpp", "languageId": "cpp", "text": "int x = 2;" }}} --- # Non-incremental token request. {"jsonrpc":"2.0","id":1,"method":"textDocument/semanticTokens/full","params":{"textDocument":{"uri":"test:///foo.cpp"}}} # CHECK: "id": 1, # CHECK-NEXT: "jsonrpc": "2.0", # CHECK-NEXT: "result": { # CHECK-NEXT: "data": [ # First line, char 5, variable, declaration+globalScope # CHECK-NEXT: 0, # CHECK-NEXT: 4, # CHECK-NEXT: 1, # CHECK-NEXT: 0, # CHECK-NEXT: 2049 # CHECK-NEXT: ], # CHECK-NEXT: "resultId": "1" # CHECK-NEXT: } --- {"jsonrpc":"2.0","method":"textDocument/didChange","params":{ "textDocument": {"uri":"test:///foo.cpp","version":2}, "contentChanges":[{"text":"int x = 2;\nint y = 3;"}] }} --- # Incremental token request, based on previous response. {"jsonrpc":"2.0","id":2,"method":"textDocument/semanticTokens/full/delta","params":{ "textDocument": {"uri":"test:///foo.cpp"}, "previousResultId": "1" }} # CHECK: "id": 2, # CHECK-NEXT: "jsonrpc": "2.0", # CHECK-NEXT: "result": { # CHECK-NEXT: "edits": [ # CHECK-NEXT: { # CHECK-NEXT: "data": [ # Next line, char 5, variable, declaration+globalScope # CHECK-NEXT: 1, # CHECK-NEXT: 4, # CHECK-NEXT: 1, # CHECK-NEXT: 0, # CHECK-NEXT: 2049 # CHECK-NEXT: ], # Inserted at position 1 # CHECK-NEXT: "deleteCount": 0, # CHECK-NEXT: "start": 5 # CHECK-NEXT: } # CHECK-NEXT: ], # CHECK-NEXT: "resultId": "2" # CHECK-NEXT: } --- # Incremental token request with incorrect baseline => full tokens list. {"jsonrpc":"2.0","id":2,"method":"textDocument/semanticTokens/full/delta","params":{ "textDocument": {"uri":"test:///foo.cpp"}, "previousResultId": "bogus" }} # CHECK: "id": 2, # CHECK-NEXT: "jsonrpc": "2.0", # CHECK-NEXT: "result": { # CHECK-NEXT: "data": [ # CHECK-NEXT: 0, # CHECK-NEXT: 4, # CHECK-NEXT: 1, # CHECK-NEXT: 0, # CHECK-NEXT: 2049, # CHECK-NEXT: 1, # CHECK-NEXT: 4, # CHECK-NEXT: 1, # CHECK-NEXT: 0, # CHECK-NEXT: 2049 # CHECK-NEXT: ], # CHECK-NEXT: "resultId": "3" # CHECK-NEXT: } --- {"jsonrpc":"2.0","id":3,"method":"shutdown"} --- {"jsonrpc":"2.0","method":"exit"}