summaryrefslogtreecommitdiff
path: root/source/slang/slang-language-server-semantic-tokens.cpp
diff options
context:
space:
mode:
authorYong He <yonghe@outlook.com>2023-11-06 14:40:38 -0800
committerGitHub <noreply@github.com>2023-11-06 14:40:38 -0800
commit46529df2c4f73a4655bdd79d48004f29374a99a8 (patch)
tree801e69e70a47ce702c055df68ada41a38158367b /source/slang/slang-language-server-semantic-tokens.cpp
parentda9e0adb5cf2b1bed6075a3afe93cfdcceabe904 (diff)
Fix ICE when lowering an associatedtype declref from an derived interface. (#3312)
* Fix ICE when lowering an associatedtype declref from an derived interface. * Fixes. * Fix test. * Fix GLSL/SPIRV image subscript swizzle store regression. * 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.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/source/slang/slang-language-server-semantic-tokens.cpp b/source/slang/slang-language-server-semantic-tokens.cpp
index 707414c5e..8fb4b1303 100644
--- a/source/slang/slang-language-server-semantic-tokens.cpp
+++ b/source/slang/slang-language-server-semantic-tokens.cpp
@@ -21,6 +21,8 @@ const char* kSemanticTokenTypes[] = {
"string"
};
+static const int kInitTokenLegnth = 6;
+
static_assert(SLANG_COUNT_OF(kSemanticTokenTypes) == (int)SemanticTokenType::NormalText, "kSemanticTokenTypes must match SemanticTokenType");
SemanticToken _createSemanticToken(SourceManager* manager, SourceLoc loc, Name* name)
@@ -183,6 +185,17 @@ List<SemanticToken> getSemanticTokens(Linkage* linkage, Module* module, UnownedS
maybeInsertToken(token);
}
}
+ else if (auto ctorDecl = as<ConstructorDecl>(node))
+ {
+ if (ctorDecl->getName())
+ {
+ SemanticToken token = _createSemanticToken(
+ manager, ctorDecl->getNameLoc(), ctorDecl->getName());
+ token.type = SemanticTokenType::Function;
+ token.length = kInitTokenLegnth;
+ maybeInsertToken(token);
+ }
+ }
else if (auto paramDecl = as<ParamDecl>(node))
{
if (paramDecl->getName())