diff options
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; } |
