Description
So @Manishearth added -Zepoch=2018
. It's time to make it your One Stop Shop for turning on all the feature gates and things. This issue is tracking the feature gates and lints that should be enable by -Zepoch=2018
.
This issue is meant to serve as a master issue for tracking the full set of feature gates and language changes as well. It somewhat duplicates #46889 in that respect, but it's more targeted.
Key
🚧 Still needs work
🆘 The code is on nightly, but we need to link it to the -Zepoch
flag. Help wanted!
💛 Good to go, waiting for us to pull the trigger
❓ Something needs to be resolved.
✅ Done
Feature gates
- 🆘
match_default_bindings
(tracking issue for default binding modes in match (RFC 2005, match_default_bindings) #42640) - 🆘
nll
(non-lexical lifetimes (NLL) tracking issue #43234) - 🆘
underscore_lifetime
(Tracking issue for'_
#48469) - 🆘
in_band_lifetimes
(Tracking issue for RFC 2115: In-band lifetime bindings #44524) - 🆘
universal_impl_trait
(Tracking issue forimpl Trait
(RFC 1522, RFC 1951, RFC 2071) #34511)) - 🆘
conservative_impl_trait
(Tracking issue forimpl Trait
(RFC 1522, RFC 1951, RFC 2071) #34511) - 🆘
dyn_trait
(Tracking issue for RFC 2113:dyn Trait
Syntax for Trait Objects: Take 2 #44662) - 🆘
copy_closures
(Tracking issue for RFC 2132: copy_closures/clone_closures #44490) - 🆘
clone_closures
(Tracking issue for RFC 2132: copy_closures/clone_closures #44490) - 🆘
termination_trait
(Tracking issue for RFC 1937:?
inmain
#43301) - 🚧 module system feature gates not yet decided
- 🚧 tying feature gates to epochs: (Make it possible to gate features on epochs #48794)
Lints
These lints cover cases where the preferred syntax is changing. Per the epoch RFC, all such changes must have a lint that starts to warn in the old epoch. The preference is for this lint to move to deny-by-default in the new epoch, though in some cases we may choose to create a hard error (not configurable) instead.
We are not ready, I think, to start warning by default yet; therefore, the warn-by-default on master for most lints is marked 💛.
tyvar_behind_raw_pointer
Tracking issue for future-incompatibility linttyvar_behind_raw_pointer
#46906- 💛 warn by default on master (not yet!)
- ❓hard error in the new epoch, I believe
- this is to make way for the newer features
bare_trait_object
- 💛 warn by default on master (not yet!)
- 🆘 deny by default in new epoch
elided_lifetime_in_path
- 🚧 warn by default on master (blocked:
elided_lifetime_in_path
triggers for theformat!
macro #48385) - 🚧 deny by default in new epoch
- 🚧 warn by default on master (blocked:
single_use_lifetime
(In-band lifetimes: Lint against single-use lifetime names #44752)- 🚧 warn by default on master (blocked: not fully implemented, see issue above)
- 🚧 deny by default in new epoch (blocked: still has bugs)
dyn
keyword lint- 🚧 warn by default on master (blocked: not implemented)
- 🚧 deny by default on master (blocked: not implemented)
catch
keyword lint (lint forcatch
used as identifier #48791)- 🚧 warn by default on master (blocked: not implemented)
- 🚧 deny by default on master (blocked: not implemented)
unusued_pub
??