Skip to content

Commit

Permalink
Document how to modify feature gates
Browse files Browse the repository at this point in the history
How to remove them and how to rename them.

cc <rust-lang/rust#79336 (comment)>
cc @varkor
  • Loading branch information
camelid authored and Joshua Nelson committed Nov 27, 2020
1 parent 5f7bd57 commit 72eca8f
Show file tree
Hide file tree
Showing 2 changed files with 66 additions and 0 deletions.
1 change: 1 addition & 0 deletions src/SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@
- [Implementing new features](./implementing_new_features.md)
- [Stability attributes](./stability.md)
- [Stabilizing Features](./stabilization_guide.md)
- [Feature Gates](./feature-gates.md)
- [Coding conventions](./conventions.md)
- [Notification groups](notification-groups/about.md)
- [ARM](notification-groups/arm.md)
Expand Down
65 changes: 65 additions & 0 deletions src/feature-gates.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
# Feature Gates

This chapter is intended to provide basic help for modifying feature gates. See
["Stability in code"][stability-section] for help with *adding* feature gates.

[stability-section]: ./implementing_new_features.md#stability-in-code


## Removing a feature gate

[removing]: #removing-a-feature-gate

To remove a feature gate, follow these steps:

1. Remove the feature gate declaration in `rustc_feature/src/active.rs`.
It will look like this:

```rust,ignore
/// description of feature
(active, $feature_name, "$version", Some($tracking_issue_number), $edition)
```

2. Add a modified version of the feature gate declaration that you just
removed to `rustc_feature/src/removed.rs`:

```rust,ignore
/// description of feature
(removed, $old_feature_name, "$version", Some($tracking_issue_number), $edition,
Some("$why_it_was_removed"))
```


## Renaming a feature gate

[renaming]: #renaming-a-feature-gate

To rename a feature gate, follow these steps (the first two are the same steps
to follow when [removing a feature gate][removing]):

1. Remove the old feature gate declaration in `rustc_feature/src/active.rs`.
It will look like this:

```rust,ignore
/// description of feature
(active, $old_feature_name, "$version", Some($tracking_issue_number), $edition)
```

2. Add a modified version of the old feature gate declaration that you just
removed to `rustc_feature/src/removed.rs`:

```rust,ignore
/// description of feature
/// Renamed to `$new_feature_name`
(removed, $old_feature_name, "$version", Some($tracking_issue_number), $edition,
Some("renamed to `$new_feature_name`"))
```

3. Add a feature gate declaration with the new name to
`rustc_feature/src/active.rs`. It should look very similar to the old
declaration:

```rust,ignore
/// description of feature
(active, $new_feature_name, "$version", Some($tracking_issue_number), $edition)
```

0 comments on commit 72eca8f

Please sign in to comment.