Skip to content

Commit 2e33027

Browse files
committed
Fix cppbuild task warnings. (#6557)
* Fix cppbuild task warnings: #6556
1 parent 73a0b95 commit 2e33027

1 file changed

Lines changed: 24 additions & 6 deletions

File tree

Extension/src/LanguageServer/cppBuildTaskProvider.ts

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -370,16 +370,34 @@ class CustomBuildTaskTerminal implements Pseudoterminal {
370370
try {
371371
const result: number = await new Promise<number>((resolve, reject) => {
372372
cp.exec(activeCommand, this.options, (_error, stdout, _stderr) => {
373+
const dot: string = (stdout || _stderr) ? ":" : ".";
373374
if (_error) {
374375
telemetry.logLanguageServerEvent("cppBuildTaskError");
375-
const dot: string = (stdout || _stderr) ? ":" : ".";
376-
this.writeEmitter.fire(localize("build_finished_with_error", "Build finished with error(s)") + dot + this.endOfLine);
377-
splitWriteEmitter(stdout);
378-
splitWriteEmitter(_stderr);
376+
this.writeEmitter.fire(localize("build_finished_with_error", "Build finished with errors(s)") + dot + this.endOfLine);
377+
if (stdout) {
378+
splitWriteEmitter(stdout); // cl.exe
379+
} else if (_stderr) {
380+
splitWriteEmitter(_stderr); // gcc/clang
381+
} else {
382+
splitWriteEmitter(_error.message); // e.g. command executable not found
383+
}
379384
resolve(-1);
380-
} else {
385+
return;
386+
} else if (_stderr && !stdout) { // gcc/clang
387+
telemetry.logLanguageServerEvent("cppBuildTaskWarnings");
388+
this.writeEmitter.fire(localize("build_finished_with_warnings", "Build finished with warning(s)") + dot + this.endOfLine);
389+
splitWriteEmitter(_stderr);
390+
resolve(0);
391+
} else if (stdout && stdout.includes("warning C")) { // cl.exe
392+
telemetry.logLanguageServerEvent("cppBuildTaskWarnings");
393+
this.writeEmitter.fire(localize("build_finished_with_warnings", "Build finished with warning(s)") + dot + this.endOfLine);
381394
splitWriteEmitter(stdout);
382-
this.writeEmitter.fire(localize("build_finished_successfully", "Build finished successfully.") + this.endOfLine);
395+
resolve(0);
396+
} else {
397+
if (stdout) {
398+
splitWriteEmitter(stdout); // cl.exe
399+
}
400+
this.writeEmitter.fire(localize("build finished successfully", "Build finished successfully.") + this.endOfLine);
383401
resolve(0);
384402
}
385403
});

0 commit comments

Comments
 (0)