Nilstrieb
414135d522
Make rustc_onunimplemented export path agnostic
...
This makes it so that all the matchers that match against paths use the
definition path instead of the export path. This removes all duplication
around `std`/`alloc`/`core`.
This is not necessarily optimal because we now depend on internal
implementation details like `core::ops::control_flow::ControlFlow`,
which is not very nice and probably not acceptable for a stable
`on_unimplemented`.
An alternative would be to just string-replace normalize away
`alloc`/`core` to `std` as a special case, keeping the export paths but
making it so that we're still fully standard library flavor agnostic.
2023-10-16 19:37:12 +02:00
Rageking8
48544c1b12
Make rustc_on_unimplemented std-agnostic
2023-06-27 18:13:24 +08:00
Deadbeef
63e0ddbf1d
core is now compilable
2023-04-16 07:20:26 +00:00
Deadbeef
76dbe29104
rm const traits in libcore
2023-04-16 06:49:27 +00:00
Mark Rousskov
bb8a0ffa23
Bump to latest beta
2023-03-15 08:55:22 -04:00
Scott McMurray
5bc328fdef
Allow canonicalizing the array::map loop in trusted cases
2023-02-04 16:44:51 -08:00
Deadbeef
b886a4de15
Replace ConstFnMutClosure with const closures
2023-02-03 14:43:13 +00:00
onestacked
9a641a533c
Fixed Documentation for wrap_mut_2_imp
2022-09-30 17:16:59 +02:00
Pietro Albini
3975d55d98
remove cfg(bootstrap)
2022-09-26 10:14:45 +02:00
onestacked
8e0ea60a04
Constifed Try trait
2022-09-23 13:43:34 +02:00
Deadbeef
be65e03676
Add const_traits
2022-09-16 11:48:42 +08:00
Michael Goulet
edba0c92de
Address nits, rename enclosing_scope => parent_label
2022-09-04 02:10:31 +00:00
Mark Rousskov
b454991ac4
Finish bumping stage0
...
It looks like the last time had left some remaining cfg's -- which made me think
that the stage0 bump was actually successful. This brings us to a released 1.62
beta though.
2022-05-27 07:36:17 -04:00
Scott McMurray
e094ee5f10
Add do yeet expressions to allow experimentation in nightly
...
Using an obviously-placeholder syntax. An RFC would still be needed before this could have any chance at stabilization, and it might be removed at any point.
But I'd really like to have it in nightly at least to ensure it works well with try_trait_v2, especially as we refactor the traits.
2022-04-30 17:40:27 -07:00
Deadbeef
f7f0f843b7
Improve error messages even more
2022-02-12 19:24:08 +11:00
Scott McMurray
413945ecc5
Change ResultShunt to be generic over Try
...
Just a refactor (and rename) for now, so it's not `Result`-specific.
This could be used for a future `Iterator::try_collect`, or similar, but anything like that is left for a future PR.
2022-02-07 12:57:25 -08:00
Esteban Kuber
caf0c1bb1c
Reduce verbosity for ? on non-Try expressions
2021-12-13 17:09:15 +00:00
Scott McMurray
b96b9b4093
Make array::{try_from_fn, try_map} and Iterator::try_find generic over Try
...
Fixes 85115
This only updates unstable functions.
`array::try_map` didn't actually exist before, despite the tracking issue 79711 still being open from the old PR 79713.
2021-12-02 11:23:50 -08:00
Ali Malik
e43254aad1
Fix may not to appropriate might not or must not
2021-07-29 01:15:20 -04:00
Mark Rousskov
06661ba759
Update to new bootstrap compiler
2021-06-28 11:30:49 -04:00
Yuki Okushi
5936ecc24f
Rollup merge of #85608 - scottmcm:stabilize-control-flow-enum-basics, r=m-ou-se
...
Stabilize `ops::ControlFlow` (just the type)
Tracking issue: https://github.com/rust-lang/rust/issues/75744 (which also tracks items *not* closed by this PR).
With the new `?` desugar implemented, [it's no longer possible to mix `Result` and `ControlFlow`](https://play.rust-lang.org/?version=nightly&mode=debug&edition=2018&gist=13feec97f5c96a9d791d97f7de2d49a6 ). (At the time of making this PR, godbolt was still on the 2021-05-01 nightly, where you can see that [the mixing example compiled](https://rust.godbolt.org/z/13Ke54j16 ).) That resolves the only blocker I know of, so I'd like to propose that `ControlFlow` be considered for stabilization.
Its basic existence was part of https://github.com/rust-lang/rfcs/pull/3058 , where it got a bunch of positive comments (examples [1](https://github.com/rust-lang/rfcs/pull/3058#issuecomment-758277325 ) [2](https://github.com/rust-lang/rfcs/pull/3058#pullrequestreview-592106494 ) [3](https://github.com/rust-lang/rfcs/pull/3058#issuecomment-784444155 ) [4](https://github.com/rust-lang/rfcs/pull/3058#issuecomment-797031584 )). Its use in the compiler has been well received (https://github.com/rust-lang/rust/pull/78182#issuecomment-713695594 ), and there are ecosystem updates interested in using it (https://github.com/rust-itertools/itertools/issues/469#issuecomment-677729589 , https://github.com/jonhoo/rust-imap/issues/194 ).
As this will need an FCP, picking a libs member manually:
r? `@m-ou-se`
## Stabilized APIs
```rust
#[derive(Debug, Clone, Copy, PartialEq)]
pub enum ControlFlow<B, C = ()> {
/// Exit the operation without running subsequent phases.
Break(B),
/// Move on to the next phase of the operation as normal.
Continue(C),
}
```
As well as using `?` on a `ControlFlow<B, _>` in a function returning `ControlFlow<B, _>`. (Note, in particular, that there's no `From::from`-conversion on the `Break` value, the way there is for `Err`s.)
## Existing APIs *not* stabilized here
All the associated methods and constants: `break_value`, `is_continue`, `map_break`, [`CONTINUE`](https://doc.rust-lang.org/nightly/std/ops/enum.ControlFlow.html#associatedconstant.CONTINUE ), etc.
Some of the existing methods in nightly seem reasonable, some seem like they should be removed, and some need more discussion to decide. But none of them are *essential*, so [as in the RFC](https://rust-lang.github.io/rfcs/3058-try-trait-v2.html#methods-on-controlflow ), they're all omitted from this PR.
They can be considered separately later, as further usage demonstrates which are important.
2021-06-15 17:40:08 +09:00
Scott McMurray
65a0a8b386
Stabilize ops::ControlFlow (just the type)
2021-05-23 13:20:05 -07:00
Scott McMurray
8be67998a1
Extend rustc_on_implemented to improve a ?-on-ControlFlow error message
2021-05-23 07:18:02 -07:00
Scott McMurray
3d9660111c
Fix rustdoc::private-intra-doc-links errors in the docs
2021-05-06 11:37:46 -07:00
Scott McMurray
4a7ceea930
Better rustc_on_unimplemented, and UI test fixes
2021-05-06 11:37:45 -07:00
Scott McMurray
266a72637a
Simple library test updates
2021-05-06 11:37:45 -07:00
Scott McMurray
ca92b5a23a
Actually implement the feature in the compiler
...
Including all the bootstrapping tweaks in the library.
2021-05-06 11:37:45 -07:00
Scott McMurray
5671647902
Documentation improvements (hopefully)
2021-04-25 10:04:23 -07:00
Scott McMurray
1864970430
Add the try_trait_v2 library basics
...
No compiler changes as part of this -- just new unstable traits and impls thereof.
The goal here is to add the things that aren't going to break anything, to keep the feature implementation simpler in the next PR.
2021-04-17 11:58:18 -07:00