From ab41d548db376c6b52869004d1b6e21b88b4c9c8 Mon Sep 17 00:00:00 2001 From: Yong He Date: Tue, 6 Feb 2024 16:30:31 -0800 Subject: Improve Capability System (#3555) * Improve capability system. * Update documentation. * Tuning semantics. * LSP: hierarchical diagnostics. * Fix test. * Fix test. --- source/slang/slang-workspace-version.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'source/slang/slang-workspace-version.cpp') 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 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; } -- cgit v1.2.3