未验证 提交 e7b45a0b 编写于 作者: K kennytm 提交者: GitHub

Rollup merge of #54072 - blitzerr:master, r=Mark-Simulacrum

Stabilization change for mod.rs

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.
......@@ -37,7 +37,7 @@
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
......@@ -406,9 +406,6 @@ pub fn walk_feature_fields<F>(&self, mut f: F)
// 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),
......@@ -660,6 +657,8 @@ pub fn walk_feature_fields<F>(&self, mut f: F)
(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`,
......@@ -1498,31 +1497,6 @@ fn check_abi(&self, abi: Abi, span: Span) {
}
}
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() {
......@@ -2092,7 +2066,6 @@ pub fn check_crate(krate: &ast::Crate,
};
let visitor = &mut PostExpansionVisitor { context: &ctx };
visitor.whole_crate_feature_gates(krate);
visit::walk_crate(visitor, krate);
}
......
// 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() {}
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`.
// 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;
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`.
// 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();
}
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`.
// 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();
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册