diff options
| author | Yong He <yonghe@outlook.com> | 2025-04-30 14:17:45 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-04-30 14:17:45 -0700 |
| commit | 7f1df9d0b31413e59846cc955d2a955d3f361e2a (patch) | |
| tree | 8cfcb7b6dde96f90e9581f9a904a25158a7358cb /source/slang/slang-language-server-semantic-tokens.cpp | |
| parent | 678de6547bc8cac15e31de30b400e9a3b45c216f (diff) | |
Initial support for immutable lambda expressions. (#6914)
* Initial support for immutable lambda expressions.
* More diagnostics, and langauge server fix.
* Language server fix.
* Fix bug identified in review.
* Add expected result.
* Update expected result.
Diffstat (limited to 'source/slang/slang-language-server-semantic-tokens.cpp')
| -rw-r--r-- | source/slang/slang-language-server-semantic-tokens.cpp | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/source/slang/slang-language-server-semantic-tokens.cpp b/source/slang/slang-language-server-semantic-tokens.cpp index 5d0e41ecb..54528d7fc 100644 --- a/source/slang/slang-language-server-semantic-tokens.cpp +++ b/source/slang/slang-language-server-semantic-tokens.cpp @@ -39,6 +39,20 @@ SemanticToken _createSemanticToken(SourceManager* manager, SourceLoc loc, Name* return token; } +// We don't want to semantic highlight a synthetic name, like $init, () etc, +// because they aren't actually appearing in the source code. +bool isHighlightableName(Name* name) +{ + if (!name) + return false; + for (auto ch : name->text) + { + if (!CharUtil::isAlphaOrDigit(ch) && ch != '_') + return false; + } + return true; +} + List<SemanticToken> getSemanticTokens( Linkage* linkage, Module* module, @@ -67,7 +81,7 @@ List<SemanticToken> getSemanticTokens( return; if (!name) name = declRef.getDecl()->getName(); - if (!name) + if (!isHighlightableName(name)) return; // Don't look at the expr if it is defined in a different file. if (!manager->getHumaneLoc(loc, SourceLocType::Actual) @@ -221,7 +235,7 @@ List<SemanticToken> getSemanticTokens( } else if (auto funcDecl = as<FuncDecl>(node)) { - if (funcDecl->getName()) + if (isHighlightableName(funcDecl->getName())) { SemanticToken token = _createSemanticToken(manager, funcDecl->getNameLoc(), funcDecl->getName()); |
