aboutsummaryrefslogtreecommitdiff
path: root/tools/driver/StandardLibrary.cc
diff options
context:
space:
mode:
author_ov4 <ov4@ov4.org>2026-10-21 14:06:54 +0000
committer_ov4 <ov4@ov4.org>2026-10-21 14:06:54 +0000
commit899c2af576124df2918fd2ae976434df0ebbae5b (patch)
treebb67a979eca30a6d447c2819576b81dc84741f17 /tools/driver/StandardLibrary.cc
parentb4ffb2d9498560557821714e2d4651279dd6817c (diff)
feat(driver): color diagnostics like gcc with -fdiagnostics-color
Add -fdiagnostics-color[=auto|always|never] and -fno-diagnostics-color. The default auto mode colors only a terminal stderr (TERM set and not dumb on Unix; a console that accepts VT sequences on Windows), so test harnesses, the desktop bundle and other pipes stay plain. Every diagnostic label now comes from cps::diagnosticPrefix, which emits gcc's default GCC_COLORS bytes: bold locus, bold red error/fatal error, bold magenta warning, bold cyan note. compilation terminated., runtime messages of the compiled program and lld output are unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Diffstat (limited to 'tools/driver/StandardLibrary.cc')
-rw-r--r--tools/driver/StandardLibrary.cc9
1 files changed, 6 insertions, 3 deletions
diff --git a/tools/driver/StandardLibrary.cc b/tools/driver/StandardLibrary.cc
index ac88745..7680054 100644
--- a/tools/driver/StandardLibrary.cc
+++ b/tools/driver/StandardLibrary.cc
@@ -1,4 +1,5 @@
#include "StandardLibrary.h"
+#include "cps/Diagnostics.h"
#include "llvm/Support/FileSystem.h"
#include "llvm/Support/Path.h"
#include "llvm/Support/raw_ostream.h"
@@ -19,7 +20,8 @@ StandardLibrary::~StandardLibrary() {
bool StandardLibrary::load(std::vector<std::string> &Inputs) {
auto Error = llvm::sys::fs::createUniqueDirectory("cpsc-std", Directory);
if (Error) {
- llvm::errs() << "cpsc: fatal error: cannot extract standard library: " << Error.message() << "\n";
+ llvm::errs() << cps::diagnosticPrefix(cps::Severity::Fatal)
+ << "cannot extract standard library: " << Error.message() << "\n";
return false;
}
for (const auto &File : LibraryFiles) {
@@ -32,8 +34,9 @@ bool StandardLibrary::load(std::vector<std::string> &Inputs) {
Error = Output.error();
}
if (Error) {
- llvm::errs() << "cpsc: fatal error: cannot extract standard library file '"
- << File.Name << "': " << Error.message() << "\n";
+ llvm::errs() << cps::diagnosticPrefix(cps::Severity::Fatal)
+ << "cannot extract standard library file '" << File.Name
+ << "': " << Error.message() << "\n";
Output.clear_error();
return false;
}