summaryrefslogtreecommitdiff
path: root/source/slang/slang-workspace-version.cpp
diff options
context:
space:
mode:
authorYong He <yonghe@outlook.com>2024-02-06 16:30:31 -0800
committerGitHub <noreply@github.com>2024-02-06 16:30:31 -0800
commitab41d548db376c6b52869004d1b6e21b88b4c9c8 (patch)
tree61aacddad8b8c56d77cf63ab3b650fdb28bbe0e6 /source/slang/slang-workspace-version.cpp
parent6365e00179179f2bc0bc25af3d51d528501498d5 (diff)
Improve Capability System (#3555)
* Improve capability system. * Update documentation. * Tuning semantics. * LSP: hierarchical diagnostics. * Fix test. * Fix test.
Diffstat (limited to 'source/slang/slang-workspace-version.cpp')
-rw-r--r--source/slang/slang-workspace-version.cpp15
1 files changed, 14 insertions, 1 deletions
diff --git a/source/slang/slang-workspace-version.cpp b/source/slang/slang-workspace-version.cpp
index 1b17f3170..0826ca557 100644
--- a/source/slang/slang-workspace-version.cpp
+++ b/source/slang/slang-workspace-version.cpp
@@ -194,6 +194,7 @@ void WorkspaceVersion::parseDiagnostics(String compilerOutput)
{
List<UnownedStringSlice> lines;
StringUtil::calcLines(compilerOutput.getUnownedSlice(), lines);
+
for (Index lineIndex = 0; lineIndex < lines.getCount(); lineIndex++)
{
auto line = lines[lineIndex];
@@ -272,7 +273,19 @@ void WorkspaceVersion::parseDiagnostics(String compilerOutput)
diagnostic.range.end.line--;
diagnostic.range.end.character--;
}
- diagnosticList.messages.add(diagnostic);
+ if (diagnostic.code == -1 && diagnosticList.messages.getCount())
+ {
+ // If this is a decoration message, add it as related information.
+ LanguageServerProtocol::DiagnosticRelatedInformation relatedInfo;
+ relatedInfo.location.range = diagnostic.range;
+ relatedInfo.location.uri = URI::fromLocalFilePath(fileName.getUnownedSlice()).uri;
+ relatedInfo.message = diagnostic.message;
+ diagnosticList.messages.getLast().relatedInformation.add(relatedInfo);
+ }
+ else
+ {
+ diagnosticList.messages.add(diagnostic);
+ }
if (diagnosticList.messages.getCount() >= 1000)
break;
}