Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Enforce sorting of accepted and removed features #60531

Merged
merged 3 commits into from
May 7, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion src/liballoc/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,6 @@
#![feature(fundamental)]
#![feature(lang_items)]
#![feature(libc)]
#![feature(needs_allocator)]
#![feature(nll)]
#![feature(optin_builtin_traits)]
#![feature(pattern)]
Expand Down
55 changes: 39 additions & 16 deletions src/libsyntax/feature_gate.rs
Original file line number Diff line number Diff line change
Expand Up @@ -108,8 +108,8 @@ macro_rules! declare_features {
// was set. This is most important for knowing when a particular feature became
// stable (active).
//
// Note that the features should be grouped into internal/user-facing
// and then sorted by version inside those groups. This is inforced with tidy.
// Note that the features are grouped into internal/user-facing and then
// sorted by version inside those groups. This is inforced with tidy.
//
// N.B., `tools/tidy/src/features.rs` parses this information directly out of the
// source, so take care when modifying it.
Expand All @@ -119,7 +119,7 @@ declare_features! (
// feature-group-start: internal feature gates
// -------------------------------------------------------------------------

// no tracking issue START
// no-tracking-issue-start

// Allows using the `rust-intrinsic`'s "ABI".
(active, intrinsics, "1.0.0", None, None),
Expand Down Expand Up @@ -152,7 +152,7 @@ declare_features! (
// lets a function to be `const` when opted into with `#![feature(foo)]`.
(active, rustc_const_unstable, "1.0.0", None, None),

// no tracking issue END
// no-tracking-issue-end

// Allows using `#[link_name="llvm.*"]`.
(active, link_llvm_intrinsics, "1.0.0", Some(29602), None),
Expand Down Expand Up @@ -187,28 +187,25 @@ declare_features! (
// Allows using `box` in patterns (RFC 469).
(active, box_patterns, "1.0.0", Some(29641), None),

// no tracking issue START
// no-tracking-issue-start

// Allows using `#[prelude_import]` on glob `use` items.
(active, prelude_import, "1.2.0", None, None),

// no tracking issue END
// no-tracking-issue-end

// Allows using `#[unsafe_destructor_blind_to_params]` (RFC 1238).
(active, dropck_parametricity, "1.3.0", Some(28498), None),

// FIXME(Centril): Investigate whether this gate actually has any effect.
(active, needs_allocator, "1.4.0", Some(27389), None),

// no tracking issue START
// no-tracking-issue-start

// Allows using `#[omit_gdb_pretty_printer_section]`.
(active, omit_gdb_pretty_printer_section, "1.5.0", None, None),

// Allows using the `vectorcall` ABI.
(active, abi_vectorcall, "1.7.0", None, None),

// no tracking issue END
// no-tracking-issue-end

// Allows using `#[structural_match]` which indicates that a type is structurally matchable.
(active, structural_match, "1.8.0", Some(31434), None),
Expand All @@ -222,7 +219,7 @@ declare_features! (
// Allows declaring with `#![needs_panic_runtime]` that a panic runtime is needed.
(active, needs_panic_runtime, "1.10.0", Some(32837), None),

// no tracking issue START
// no-tracking-issue-start

// Allows identifying the `compiler_builtins` crate.
(active, compiler_builtins, "1.13.0", None, None),
Expand All @@ -245,7 +242,7 @@ declare_features! (
// Allows using the `format_args_nl` macro.
(active, format_args_nl, "1.29.0", None, None),

// no tracking issue END
// no-tracking-issue-end

// Added for testing E0705; perma-unstable.
(active, test_2018_feature, "1.31.0", Some(0), Some(Edition::Edition2018)),
Expand Down Expand Up @@ -567,6 +564,10 @@ const INCOMPLETE_FEATURES: &[&str] = &[
];

declare_features! (
// -------------------------------------------------------------------------
// feature-group-start: removed features
// -------------------------------------------------------------------------

(removed, import_shadowing, "1.0.0", None, None, None),
(removed, managed_boxes, "1.0.0", None, None, None),
// Allows use of unary negate on unsigned integers, e.g., -e for e: u8
Expand All @@ -581,14 +582,16 @@ declare_features! (
(removed, unsafe_no_drop_flag, "1.0.0", None, None, None),
// Allows using items which are missing stability attributes
(removed, unmarked_api, "1.0.0", None, None, None),
(removed, pushpop_unsafe, "1.2.0", None, None, None),
(removed, allocator, "1.0.0", None, None, None),
(removed, simd, "1.0.0", Some(27731), None,
Some("removed in favor of `#[repr(simd)]`")),
(removed, advanced_slice_patterns, "1.0.0", Some(23121), None,
Some("merged into `#![feature(slice_patterns)]`")),
(removed, macro_reexport, "1.0.0", Some(29638), None,
Some("subsumed by `pub use`")),
(removed, pushpop_unsafe, "1.2.0", None, None, None),
(removed, needs_allocator, "1.4.0", Some(27389), None,
Some("subsumed by `#![feature(allocator_internals)]`")),
(removed, proc_macro_mod, "1.27.0", Some(54727), None,
Some("subsumed by `#![feature(proc_macro_hygiene)]`")),
(removed, proc_macro_expr, "1.27.0", Some(54727), None,
Expand All @@ -600,26 +603,42 @@ declare_features! (
(removed, panic_implementation, "1.28.0", Some(44489), None,
Some("subsumed by `#[panic_handler]`")),
// Allows the use of `#[derive(Anything)]` as sugar for `#[derive_Anything]`.
(removed, custom_derive, "1.0.0", Some(29644), None,
(removed, custom_derive, "1.32.0", Some(29644), None,
Some("subsumed by `#[proc_macro_derive]`")),
// Paths of the form: `extern::foo::bar`
(removed, extern_in_paths, "1.33.0", Some(55600), None,
Some("subsumed by `::foo::bar` paths")),
(removed, quote, "1.0.0", Some(29601), None, None),
(removed, quote, "1.33.0", Some(29601), None, None),

// -------------------------------------------------------------------------
// feature-group-end: removed features
// -------------------------------------------------------------------------
);

declare_features! (
(stable_removed, no_stack_check, "1.0.0", None, None),
);

declare_features! (
// -------------------------------------------------------------------------
// feature-group-start: for testing purposes
// -------------------------------------------------------------------------

// A temporary feature gate used to enable parser extensions needed
// to bootstrap fix for #5723.
(accepted, issue_5723_bootstrap, "1.0.0", None, None),
// These are used to test this portion of the compiler,
// they don't actually mean anything.
(accepted, test_accepted_feature, "1.0.0", None, None),

// -------------------------------------------------------------------------
// feature-group-end: for testing purposes
// -------------------------------------------------------------------------

// -------------------------------------------------------------------------
// feature-group-start: accepted features
// -------------------------------------------------------------------------

// Allows using associated `type`s in `trait`s.
(accepted, associated_types, "1.0.0", None, None),
// Allows using assigning a default type to type parameters in algebraic data type definitions.
Expand Down Expand Up @@ -809,6 +828,10 @@ declare_features! (
(accepted, extern_crate_self, "1.34.0", Some(56409), None),
// Allows arbitrary delimited token streams in non-macro attributes.
(accepted, unrestricted_attribute_tokens, "1.34.0", Some(55208), None),

// -------------------------------------------------------------------------
// feature-group-end: accepted features
// -------------------------------------------------------------------------
);

// If you change this, please modify `src/doc/unstable-book` as well. You must
Expand Down
8 changes: 4 additions & 4 deletions src/tools/tidy/src/features.rs
Original file line number Diff line number Diff line change
Expand Up @@ -191,7 +191,7 @@ pub fn collect_lang_features(base_src_path: &Path, bad: &mut bool) -> Features {

// We allow rustc-internal features to omit a tracking issue.
// To make tidy accept omitting a tracking issue, group the list of features
// without one inside `// no tracking issue START` and `// no tracking issue END`.
// without one inside `// no-tracking-issue` and `// no-tracking-issue-end`.
let mut next_feature_omits_tracking_issue = false;

let mut in_feature_group = false;
Expand All @@ -201,13 +201,13 @@ pub fn collect_lang_features(base_src_path: &Path, bad: &mut bool) -> Features {
.filter_map(|(line, line_number)| {
let line = line.trim();

// Within START and END, the tracking issue can be omitted.
// Within -start and -end, the tracking issue can be omitted.
match line {
"// no tracking issue START" => {
"// no-tracking-issue-start" => {
next_feature_omits_tracking_issue = true;
return None;
}
"// no tracking issue END" => {
"// no-tracking-issue-end" => {
next_feature_omits_tracking_issue = false;
return None;
}
Expand Down