diff options
| author | Yong He <yonghe@outlook.com> | 2024-02-06 16:30:31 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-02-06 16:30:31 -0800 |
| commit | ab41d548db376c6b52869004d1b6e21b88b4c9c8 (patch) | |
| tree | 61aacddad8b8c56d77cf63ab3b650fdb28bbe0e6 /source/slang/slang-workspace-version.cpp | |
| parent | 6365e00179179f2bc0bc25af3d51d528501498d5 (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.cpp | 15 |
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; } |
