diff options
| author | Guillaume Gomez <guillaume1.gomez@gmail.com> | 2023-06-08 10:15:13 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-06-08 10:15:13 +0200 |
| commit | cf5e0b06183dabee960e4c7f7afd73355b8c3f89 (patch) | |
| tree | 39e5f53ed3998999dd0b60ac4e31066aa58c358d /compiler/rustc_driver_impl/src | |
| parent | b3d1a8331180df3a5efaf3e0f2ccac0013059402 (diff) | |
| parent | fbe3a475f290c0847623357c732caa62b29389f3 (diff) | |
| download | rust-cf5e0b06183dabee960e4c7f7afd73355b8c3f89.tar.gz rust-cf5e0b06183dabee960e4c7f7afd73355b8c3f89.zip | |
Rollup merge of #112401 - WaffleLapkin:dont_compile_error, r=Nilstrieb
Don't `use compile_error as print` I've spent **1.5 hours** debugging this while trying to compile #112400, if we use `compile_error!`, we should not just forward user input to it, but issue a reasonable error message. The better solution would be to use a lint like `clippy::print_stdout`, but since we don't have clippy in CI, let's at least make the macro error better. Also note that some functions called here actually do use `println` (see for example `print_type_sizes` function).
Diffstat (limited to 'compiler/rustc_driver_impl/src')
| -rw-r--r-- | compiler/rustc_driver_impl/src/lib.rs | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/compiler/rustc_driver_impl/src/lib.rs b/compiler/rustc_driver_impl/src/lib.rs index 14888cf4d75..c503a44c196 100644 --- a/compiler/rustc_driver_impl/src/lib.rs +++ b/compiler/rustc_driver_impl/src/lib.rs @@ -58,11 +58,18 @@ use std::str; use std::sync::OnceLock; use std::time::Instant; +#[allow(unused_macros)] +macro do_not_use_print($($t:tt)*) { + std::compile_error!( + "Don't use `print` or `println` here, use `safe_print` or `safe_println` instead" + ) +} + // This import blocks the use of panicking `print` and `println` in all the code // below. Please use `safe_print` and `safe_println` to avoid ICE when // encountering an I/O error during print. #[allow(unused_imports)] -use std::{compile_error as print, compile_error as println}; +use {do_not_use_print as print, do_not_use_print as println}; pub mod args; pub mod pretty; |
