diff options
| author | Yong He <yonghe@outlook.com> | 2024-01-26 16:30:19 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-01-26 16:30:19 -0800 |
| commit | 470c5a28f5b84353f077c2d871db65cddd5f923a (patch) | |
| tree | e970a1c44173673bdc6dd5ec22e6b0c5bde93787 /source/slang/slang-language-server-semantic-tokens.cpp | |
| parent | 013bcf28da22fd569154bd9f98368e670fbeb873 (diff) | |
Fix LSP compatibility issues with Visual Studio. (#3520)
* [LSP] compatibility logic for Visual Studio.
* [LSP] Fix diagnostic rank parsing.
* [LSP] Fix semantic highlighting of cbuffer types.
* Fix.
* Fix.
---------
Co-authored-by: Yong He <yhe@nvidia.com>
Diffstat (limited to 'source/slang/slang-language-server-semantic-tokens.cpp')
| -rw-r--r-- | source/slang/slang-language-server-semantic-tokens.cpp | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/source/slang/slang-language-server-semantic-tokens.cpp b/source/slang/slang-language-server-semantic-tokens.cpp index 837aad06c..ae10d62e8 100644 --- a/source/slang/slang-language-server-semantic-tokens.cpp +++ b/source/slang/slang-language-server-semantic-tokens.cpp @@ -40,6 +40,8 @@ SemanticToken _createSemanticToken(SourceManager* manager, SourceLoc loc, Name* List<SemanticToken> getSemanticTokens(Linkage* linkage, Module* module, UnownedStringSlice fileName, DocumentVersion* doc) { auto manager = linkage->getSourceManager(); + + auto cbufferName = linkage->getNamePool()->getName(toSlice("ConstantBuffer")); List<SemanticToken> result; auto maybeInsertToken = [&](const SemanticToken& token) @@ -73,6 +75,10 @@ List<SemanticToken> getSemanticTokens(Linkage* linkage, Module* module, UnownedS if (target->hasModifier<BuiltinTypeModifier>()) return; token.type = SemanticTokenType::Type; + if (name == cbufferName) + { + token.length = doc->getTokenLength(token.line, token.col); + } } else if (as<ConstructorDecl>(target)) { @@ -156,7 +162,7 @@ List<SemanticToken> getSemanticTokens(Linkage* linkage, Module* module, UnownedS } else if (auto aggTypeDecl = as<AggTypeDeclBase>(node)) { - if (aggTypeDecl->getName()) + if (aggTypeDecl->getName() && aggTypeDecl->findModifier<ImplicitParameterGroupElementTypeModifier>() == nullptr) { SemanticToken token = _createSemanticToken( manager, aggTypeDecl->getNameLoc(), aggTypeDecl->getName()); |
