Skip to content

Commit a9ce5ff

Browse files
edrioukCopilot
andauthored
Update src/solutions/solution-problems.ts
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
1 parent 5003528 commit a9ce5ff

1 file changed

Lines changed: 23 additions & 1 deletion

File tree

src/solutions/solution-problems.ts

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -165,10 +165,32 @@ export class SolutionProblemsImpl implements SolutionProblems {
165165
// Merge cbuild errors/warnings into existing diagnostics
166166
const csolution = this.solutionManager.getCsolution();
167167
if (csolution && (logMessages.errors?.length || logMessages.warnings?.length)) {
168-
await this.updateDiagnostics(logMessages);
168+
await this.mergeDiagnostics(logMessages);
169169
}
170170
}
171171

172+
private async mergeDiagnostics(logMessages: LogMessages): Promise<void> {
173+
const existingDiagnostics = new Map<string, { uri: vscode.Uri; diagnostics: vscode.Diagnostic[] }>();
174+
this.diagnosticCollection.forEach((uri, diagnostics) => {
175+
existingDiagnostics.set(uri.toString(), { uri, diagnostics: [...diagnostics] });
176+
});
177+
178+
await this.updateDiagnostics(logMessages);
179+
180+
const mergedDiagnostics = new Map<string, { uri: vscode.Uri; diagnostics: vscode.Diagnostic[] }>(existingDiagnostics);
181+
this.diagnosticCollection.forEach((uri, diagnostics) => {
182+
const key = uri.toString();
183+
const existing = mergedDiagnostics.get(key);
184+
mergedDiagnostics.set(key, {
185+
uri,
186+
diagnostics: existing ? [...existing.diagnostics, ...diagnostics] : [...diagnostics],
187+
});
188+
});
189+
190+
this.diagnosticCollection.set(
191+
Array.from(mergedDiagnostics.values(), ({ uri, diagnostics }) => [uri, diagnostics] as [vscode.Uri, vscode.Diagnostic[]]),
192+
);
193+
}
172194
private handleLoadStateChanged(data: SolutionLoadStateChangeEvent): void {
173195
if (data.previousState.solutionPath !== data.newState.solutionPath) {
174196
this.clearDiagnostics();

0 commit comments

Comments
 (0)