diff options
| author | bors <bors@rust-lang.org> | 2021-04-10 14:00:22 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2021-04-10 14:00:22 +0000 |
| commit | 4029d4d0be03b10edccb65588b522ad541b5ccaf (patch) | |
| tree | d063f66fc99c499405e23b904a811de851028542 | |
| parent | 18c524fbae3ab1bf6ed9196168d8c68fc6aec61a (diff) | |
| parent | 40af086ee448e4a5dad03a66dd3b7e39f7451ac7 (diff) | |
| download | rust-4029d4d0be03b10edccb65588b522ad541b5ccaf.tar.gz rust-4029d4d0be03b10edccb65588b522ad541b5ccaf.zip | |
Auto merge of #84055 - kornelski:z-edition, r=petrochenkov
Don't tell users to use a nightly flag on the stable channel When a crate requires a newer edition, currently rustc tells users to use `-Z unstable-options`. This is not ideal, because: * This flag doesn't work on the stable channel, so solution to one error only causes another error, which is frustrating. * Directs users towards the nightly channel, which is not necessarily the correct solution. Once the next edition is released, this message will be mostly seen by users of out-of-date stable Rust versions who merely need to update their Rust to the latest stable.
| -rw-r--r-- | compiler/rustc_session/src/config.rs | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/compiler/rustc_session/src/config.rs b/compiler/rustc_session/src/config.rs index 75bd8880b34..b6b349e4a80 100644 --- a/compiler/rustc_session/src/config.rs +++ b/compiler/rustc_session/src/config.rs @@ -18,7 +18,7 @@ use rustc_serialize::json; use crate::parse::CrateConfig; use rustc_feature::UnstableFeatures; -use rustc_span::edition::{Edition, DEFAULT_EDITION, EDITION_NAME_LIST}; +use rustc_span::edition::{Edition, DEFAULT_EDITION, EDITION_NAME_LIST, LATEST_STABLE_EDITION}; use rustc_span::source_map::{FileName, FilePathMapping}; use rustc_span::symbol::{sym, Symbol}; use rustc_span::SourceFileHashAlgorithm; @@ -1320,13 +1320,16 @@ pub fn parse_crate_edition(matches: &getopts::Matches) -> Edition { }; if !edition.is_stable() && !nightly_options::is_unstable_enabled(matches) { - early_error( - ErrorOutputType::default(), - &format!( - "edition {} is unstable and only available with -Z unstable-options.", - edition, - ), - ) + let is_nightly = nightly_options::match_is_nightly_build(matches); + let msg = if !is_nightly { + format!( + "the crate requires edition {}, but the latest edition supported by this Rust version is {}", + edition, LATEST_STABLE_EDITION + ) + } else { + format!("edition {} is unstable and only available with -Z unstable-options", edition) + }; + early_error(ErrorOutputType::default(), &msg) } edition |
