-
Notifications
You must be signed in to change notification settings - Fork 13.3k
Deprecate try!
macro
#62672
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
Deprecate try!
macro
#62672
Conversation
r? @KodrAus (rust_highfive has picked a reviewer for you, use r? to override) |
Implementation LGTM, but this should go through a library team FCP? |
r? @dtolnay |
@rfcbot fcp merge |
Team member @sfackler has proposed to merge this. The next step is review by the rest of the tagged team members: No concerns currently listed. Once a majority of reviewers approve (and at most 2 approvals are outstanding), this will enter its final comment period. If you spot a major issue that hasn't been raised at any point in this process, please speak up! See this document for info about what commands tagged team members can give me. |
Just to make sure folks are aware, |
I am sad about this because of the Not a great situation... 😞 |
🔔 This is now entering its final comment period, as per the review above. 🔔 |
@dtolnay your problems would be solved by providing proper customizability support to |
I suggest anyone who needs the advanced features of try that aren't available for ? to use my try crate: https://crates.io/crates/try I'll have to think about a good name replacement that is edition 2018 compliant. |
RELNOTES: The EDIT: maybe even mention what @est31 said:
|
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
r? @Centril r=me rollup when green + with requested changes. |
8c0ab27
to
a7dd076
Compare
CI is green now. I will push squashed commits after . |
Co-Authored-By: Mazdak Farrokhzad <twingoow@gmail.com> Co-Authored-By: Oliver Middleton <olliemail27@gmail.com>
a7dd076
to
6842316
Compare
Ping @Centril |
@bors r+ rollup |
📌 Commit 6842316 has been approved by |
Deprecate `try!` macro Replaces rust-lang#62077 Fixes rust-lang/rust-clippy#1361 Fixes rust-lang#61000
Rollup of 7 pull requests Successful merges: - #62672 (Deprecate `try!` macro) - #62950 (Check rustbook links on all platforms when running locally) - #63114 (Remove gensym in format_args) - #63397 (Add tests for some ICEs) - #63403 (Improve test output) - #63404 (enable flt2dec tests in Miri) - #63407 (reduce some test sizes in Miri) Failed merges: r? @ghost
@@ -302,6 +302,7 @@ macro_rules! debug_assert_ne { | |||
/// ``` | |||
#[macro_export] | |||
#[stable(feature = "rust1", since = "1.0.0")] | |||
#[rustc_deprecated(since = "1.39.0", reason = "use the `?` operator instead")] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Notice that this means that nightly will start warning in a week -- which is an entire cycle before the deprecation is announced on the release notes.
We usually deprecate 3 releases in the future, so that between the deprecation announcement on a stable release and nightly starting to warn, there is still a full cycle. (Well, "usually" as in, both times I was involved in a future deprecation this is what we did -- in one case after some pushback when we wanted to go faster.) Right now, that would mean deprecating with Rust 1.41.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't think that matters much; try!
has been deprecated for a long time in the docs and since ?
was stabilized -- the change here is only due to a bugfix in the language.
try macro is deprecated now, so Clippy will drop the support for it also
As of 1.39, the ``try!'' macro is deprecated: rust-lang/rust#62672 This changeset contains purely mechanical substitutions, no change in functionality.
Pkgsrc changes: * Remove patch which no longer applies (but what about RPATH?) * Adapt a few patches to changed files upstream. Upstream changes: Version 1.39.0 (2019-11-07) =========================== Language -------- - [You can now create `async` functions and blocks with `async fn`, `async move {}`, and `async {}` respectively, and you can now call `.await` on async expressions.][63209] - [You can now use certain attributes on function, closure, and function pointer parameters.][64010] These attributes include `cfg`, `cfg_attr`, `allow`, `warn`, `deny`, `forbid` as well as inert helper attributes used by procedural macro attributes applied to items. e.g. ```rust fn len( #[cfg(windows)] slice: &[u16], #[cfg(not(windows))] slice: &[u8], ) -> usize { slice.len() } ``` - [You can now take shared references to bind-by-move patterns in the `if` guards of `match` arms.][63118] e.g. ```rust fn main() { let array: Box<[u8; 4]> = Box::new([1, 2, 3, 4]); match array { nums // ---- `nums` is bound by move. if nums.iter().sum::<u8>() == 10 // ^------ `.iter()` implicitly takes a reference to `nums`. => { drop(nums); // ----------- Legal as `nums` was bound by move and so we have ownership. } _ => unreachable!(), } } ``` Compiler -------- - [Added tier 3\* support for the `i686-unknown-uefi` target.][64334] - [Added tier 3 support for the `sparc64-unknown-openbsd` target.][63595] - [rustc will now trim code snippets in diagnostics to fit in your terminal.] [63402] **Note** Cargo currently doesn't use this feature. Refer to [cargo#7315][cargo/7315] to track this feature's progress. - [You can now pass `--show-output` argument to test binaries to print the output of successful tests.][62600] \* Refer to Rust's [platform support page][forge-platform-support] for more information on Rust's tiered platform support. Libraries --------- - [`Vec::new` and `String::new` are now `const` functions.][64028] - [`LinkedList::new` is now a `const` function.][63684] - [`str::len`, `[T]::len` and `str::as_bytes` are now `const` functions.][63770] - [The `abs`, `wrapping_abs`, and `overflowing_abs` numeric functions are now `const`.][63786] Stabilized APIs --------------- - [`Pin::into_inner`] - [`Instant::checked_duration_since`] - [`Instant::saturating_duration_since`] Cargo ----- - [You can now publish git dependencies if supplied with a `version`.] [cargo/7237] - [The `--all` flag has been renamed to `--workspace`.][cargo/7241] Using `--all` is now deprecated. Misc ---- - [You can now pass `-Clinker` to rustdoc to control the linker used for compiling doctests.][63834] Compatibility Notes ------------------- - [Code that was previously accepted by the old borrow checker, but rejected by the NLL borrow checker is now a hard error in Rust 2018.][63565] This was previously a warning, and will also become a hard error in the Rust 2015 edition in the 1.40.0 release. - [`rustdoc` now requires `rustc` to be installed and in the same directory to run tests.][63827] This should improve performance when running a large amount of doctests. - [The `try!` macro will now issue a deprecation warning.][62672] It is recommended to use the `?` operator instead. - [`asinh(-0.0)` now correctly returns `-0.0`.][63698] Previously this returned `0.0`. [62600]: rust-lang/rust#62600 [62672]: rust-lang/rust#62672 [63118]: rust-lang/rust#63118 [63209]: rust-lang/rust#63209 [63402]: rust-lang/rust#63402 [63565]: rust-lang/rust#63565 [63595]: rust-lang/rust#63595 [63684]: rust-lang/rust#63684 [63698]: rust-lang/rust#63698 [63770]: rust-lang/rust#63770 [63786]: rust-lang/rust#63786 [63827]: rust-lang/rust#63827 [63834]: rust-lang/rust#63834 [63927]: rust-lang/rust#63927 [63933]: rust-lang/rust#63933 [63934]: rust-lang/rust#63934 [63938]: rust-lang/rust#63938 [63940]: rust-lang/rust#63940 [63941]: rust-lang/rust#63941 [63945]: rust-lang/rust#63945 [64010]: rust-lang/rust#64010 [64028]: rust-lang/rust#64028 [64334]: rust-lang/rust#64334 [cargo/7237]: rust-lang/cargo#7237 [cargo/7241]: rust-lang/cargo#7241 [cargo/7315]: rust-lang/cargo#7315 [`Pin::into_inner`]: https://doc.rust-lang.org/std/pin/struct.Pin.html#method.into_inner [`Instant::checked_duration_since`]: https://doc.rust-lang.org/std/time/struct.Instant.html#method.checked_duration_since [`Instant::saturating_duration_since`]: https://doc.rust-lang.org/std/time/struct.Instant.html#method.saturating_duration_since
Replaces #62077
Fixes rust-lang/rust-clippy#1361
Fixes #61000