summaryrefslogtreecommitdiffstats
path: root/src/tools/rustfmt/src/release_channel.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/tools/rustfmt/src/release_channel.rs')
-rw-r--r--src/tools/rustfmt/src/release_channel.rs16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/tools/rustfmt/src/release_channel.rs b/src/tools/rustfmt/src/release_channel.rs
new file mode 100644
index 000000000..948247b3c
--- /dev/null
+++ b/src/tools/rustfmt/src/release_channel.rs
@@ -0,0 +1,16 @@
+/// Checks if we're in a nightly build.
+///
+/// The environment variable `CFG_RELEASE_CHANNEL` is set during the rustc bootstrap
+/// to "stable", "beta", or "nightly" depending on what toolchain is being built.
+/// If we are being built as part of the stable or beta toolchains, we want
+/// to disable unstable configuration options.
+///
+/// If we're being built by cargo (e.g., `cargo +nightly install rustfmt-nightly`),
+/// `CFG_RELEASE_CHANNEL` is not set. As we only support being built against the
+/// nightly compiler when installed from crates.io, default to nightly mode.
+#[macro_export]
+macro_rules! is_nightly_channel {
+ () => {
+ option_env!("CFG_RELEASE_CHANNEL").map_or(true, |c| c == "nightly" || c == "dev")
+ };
+}