This change is in response to https://github.com/rust-lang/rust/issues/53125.
The patch makes the feature accepted and removes the tests that tested the
non-accepted status of the feature.
use parse::ParseSess;
use symbol::{keywords, Symbol};
-use std::{env, path};
+use std::{env};
macro_rules! set {
// The const_fn feature also enables the min_const_fn feature, because `min_const_fn` allows
// Resolve absolute paths as paths from other crates
(active, extern_absolute_paths, "1.24.0", Some(44660), Some(Edition::Edition2018)),
- // `foo.rs` as an alternative to `foo/mod.rs`
- (active, non_modrs_mods, "1.24.0", Some(44660), Some(Edition::Edition2018)),
-
// `extern` in paths
(active, extern_in_paths, "1.23.0", Some(44660), None),
(accepted, repr_transparent, "1.28.0", Some(43036), None),
// Defining procedural macros in `proc-macro` crates
(accepted, proc_macro, "1.29.0", Some(38356), None),
+ // `foo.rs` as an alternative to `foo/mod.rs`
+ (accepted, non_modrs_mods, "1.30.0", Some(44660), None),
// Allows use of the :vis macro fragment specifier
(accepted, macro_vis_matcher, "1.30.0", Some(41022), None),
// Allows importing and reexporting macros with `use`,
}
}
-impl<'a> PostExpansionVisitor<'a> {
- fn whole_crate_feature_gates(&mut self, _krate: &ast::Crate) {
- for &(ident, span) in &*self.context.parse_sess.non_modrs_mods.borrow() {
- if !span.allows_unstable() {
- let cx = &self.context;
- let level = GateStrength::Hard;
- let has_feature = cx.features.non_modrs_mods;
- let name = "non_modrs_mods";
- debug!("gate_feature(feature = {:?}, span = {:?}); has? {}",
- name, span, has_feature);
-
- if !has_feature && !span.allows_unstable() {
- leveled_feature_err(
- cx.parse_sess, name, span, GateIssue::Language,
- "mod statements in non-mod.rs files are unstable", level
- )
- .help(&format!("on stable builds, rename this file to {}{}mod.rs",
- ident, path::MAIN_SEPARATOR))
- .emit();
- }
- }
- }
- }
-}
-
impl<'a> Visitor<'a> for PostExpansionVisitor<'a> {
fn visit_attribute(&mut self, attr: &ast::Attribute) {
if !attr.span.allows_unstable() {
};
let visitor = &mut PostExpansionVisitor { context: &ctx };
- visitor.whole_crate_feature_gates(krate);
visit::walk_crate(visitor, krate);
}
+++ /dev/null
-// Copyright 2014 The Rust Project Developers. See the COPYRIGHT
-// file at the top-level directory of this distribution and at
-// http://rust-lang.org/COPYRIGHT.
-//
-// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
-// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
-// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
-// option. This file may not be copied, modified, or distributed
-// except according to those terms.
-
-// error-pattern: mod statements in non-mod.rs files are unstable
-
-mod mod_file_not_owning_aux1;
-
-fn main() {}
+++ /dev/null
-error[E0658]: mod statements in non-mod.rs files are unstable (see issue #44660)
- --> $DIR/mod_file_not_owning_aux1.rs:14:17
- |
-LL | () => { mod mod_file_not_owning_aux2; }
- | ^^^^^^^^^^^^^^^^^^^^^^^^
-LL | }
-LL | m!();
- | ----- in this macro invocation
- |
- = help: add #![feature(non_modrs_mods)] to the crate attributes to enable
- = help: on stable builds, rename this file to mod_file_not_owning_aux1/mod.rs
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0658`.
+++ /dev/null
-// Copyright 2016 The Rust Project Developers. See the COPYRIGHT
-// file at the top-level directory of this distribution and at
-// http://rust-lang.org/COPYRIGHT.
-//
-// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
-// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
-// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
-// option. This file may not be copied, modified, or distributed
-// except according to those terms.
-
-// error-pattern: mod statements in non-mod.rs files are unstable
-
-// This is not a directory owner since the file name is not "mod.rs".
-#[path = "mod_file_not_owning_aux1.rs"]
-mod foo;
+++ /dev/null
-error[E0658]: mod statements in non-mod.rs files are unstable (see issue #44660)
- --> $DIR/mod_file_not_owning_aux1.rs:14:17
- |
-LL | () => { mod mod_file_not_owning_aux2; }
- | ^^^^^^^^^^^^^^^^^^^^^^^^
-LL | }
-LL | m!();
- | ----- in this macro invocation
- |
- = help: add #![feature(non_modrs_mods)] to the crate attributes to enable
- = help: on stable builds, rename this file to foo/mod.rs
-
-error: aborting due to previous error
-
-For more information about this error, try `rustc --explain E0658`.
+++ /dev/null
-// Copyright 2017 The Rust Project Developers. See the COPYRIGHT
-// file at the top-level directory of this distribution and at
-// http://rust-lang.org/COPYRIGHT.
-//
-// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
-// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
-// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
-// option. This file may not be copied, modified, or distributed
-// except according to those terms.
-//
-// Tests the formatting of the feature-gate errors for non_modrs_mods
-//
-// gate-test-non_modrs_mods
-// ignore-windows
-// ignore-pretty issue #37195
-pub mod modrs_mod;
-pub mod foors_mod;
-
-#[path = "some_crazy_attr_mod_dir/arbitrary_name.rs"]
-pub mod attr_mod;
-
-pub fn main() {
- modrs_mod::inner_modrs_mod::innest::foo();
- modrs_mod::inner_foors_mod::innest::foo();
- foors_mod::inner_modrs_mod::innest::foo();
- foors_mod::inner_foors_mod::innest::foo();
- attr_mod::inner_modrs_mod::innest::foo();
-}
+++ /dev/null
-error[E0658]: mod statements in non-mod.rs files are unstable (see issue #44660)
- --> $DIR/modrs_mod/inner_foors_mod.rs:11:9
- |
-LL | pub mod innest;
- | ^^^^^^
- |
- = help: add #![feature(non_modrs_mods)] to the crate attributes to enable
- = help: on stable builds, rename this file to inner_foors_mod/mod.rs
-
-error[E0658]: mod statements in non-mod.rs files are unstable (see issue #44660)
- --> $DIR/foors_mod.rs:13:9
- |
-LL | pub mod inner_modrs_mod;
- | ^^^^^^^^^^^^^^^
- |
- = help: add #![feature(non_modrs_mods)] to the crate attributes to enable
- = help: on stable builds, rename this file to foors_mod/mod.rs
-
-error[E0658]: mod statements in non-mod.rs files are unstable (see issue #44660)
- --> $DIR/foors_mod.rs:14:9
- |
-LL | pub mod inner_foors_mod;
- | ^^^^^^^^^^^^^^^
- |
- = help: add #![feature(non_modrs_mods)] to the crate attributes to enable
- = help: on stable builds, rename this file to foors_mod/mod.rs
-
-error[E0658]: mod statements in non-mod.rs files are unstable (see issue #44660)
- --> $DIR/foors_mod/inner_foors_mod.rs:11:9
- |
-LL | pub mod innest;
- | ^^^^^^
- |
- = help: add #![feature(non_modrs_mods)] to the crate attributes to enable
- = help: on stable builds, rename this file to inner_foors_mod/mod.rs
-
-error: aborting due to 4 previous errors
-
-For more information about this error, try `rustc --explain E0658`.
+++ /dev/null
-// Copyright 2017 The Rust Project Developers. See the COPYRIGHT
-// file at the top-level directory of this distribution and at
-// http://rust-lang.org/COPYRIGHT.
-//
-// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
-// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
-// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
-// option. This file may not be copied, modified, or distributed
-// except according to those terms.
-
-// run-pass
-//
-// ignore-pretty issue #37195
-#![feature(non_modrs_mods)]
-
-pub mod modrs_mod;
-pub mod foors_mod;
-
-#[path = "some_crazy_attr_mod_dir/arbitrary_name.rs"]
-pub mod attr_mod;
-
-pub fn main() {
- modrs_mod::inner_modrs_mod::innest::foo();
- modrs_mod::inner_foors_mod::innest::foo();
- foors_mod::inner_modrs_mod::innest::foo();
- foors_mod::inner_foors_mod::innest::foo();
- attr_mod::inner_modrs_mod::innest::foo();
-}