| # 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: 8193 |
| # 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: 8193 |
| # 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: 8193, |
| # CHECK-NEXT: 1, |
| # CHECK-NEXT: 4, |
| # CHECK-NEXT: 1, |
| # CHECK-NEXT: 0, |
| # CHECK-NEXT: 8193 |
| # CHECK-NEXT: ], |
| # CHECK-NEXT: "resultId": "3" |
| # CHECK-NEXT: } |
| --- |
| {"jsonrpc":"2.0","id":3,"method":"shutdown"} |
| --- |
| {"jsonrpc":"2.0","method":"exit"} |