]> git.lizzy.rs Git - rust.git/commit
rustc: Request ansi colors if stderr isn't a tty
authorAlex Crichton <alex@alexcrichton.com>
Thu, 8 Nov 2018 15:49:28 +0000 (07:49 -0800)
committerAlex Crichton <alex@alexcrichton.com>
Thu, 8 Nov 2018 15:53:03 +0000 (07:53 -0800)
commit255cc1aed33442567c29c95fa445a534575e925c
treef3e843496ae2cf9295cca99601bcc418f2355665
parent8315b11b6352cbd91ee096571c31ae7d3ac9613d
rustc: Request ansi colors if stderr isn't a tty

Currently Cargo will always capture the output of rustc meaning that
rustc is never hooked up to a tty. To retain colors Cargo uses the
`fwdansi` crate to ensure that ansi color codes are translated to
windows terminal methods (and ansi codes otherwise just go their natural
route on Unix).

Cargo passes `--color always` to rustc to ensure that using a pipe
doesn't trick it into not emitting colors at all. It turns out, however,
that `--color always` ends up still accidentally using the native shell
api on native windows shells.

The fix here is to instead pass `AlwaysAnsi` to `termcolor` instead of
`Always`, ensuring that when `--color always` is passed to rustc and its
output isn't a terminal, we're always generating ansi colors regardless
of the platform.

Closes #55769
src/librustc_errors/emitter.rs