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

Rollup of 7 pull requests #107046

Closed
wants to merge 23 commits into from

Conversation

matthiaskrgr
Copy link
Member

Successful merges:

Failed merges:

r? @ghost
@rustbot modify labels: rollup

Create a similar rollup

compiler-errors and others added 23 commits January 12, 2023 04:20
Since the sorting function accounts for an `index` field, there's not much
reason to also be applying changes to the levenshtein distance. Instead,
we can just not treat `lev` as a filter if there's already a non-sentinel
value for `index`.

This change gives slightly more weight to the index and path part, as
search criteria, than it used to. This changes some of the test cases,
but not in any obviously-"worse" way, and, in particular, substring matches
are a bigger deal than levenshtein distances (we're assuming that a typo
is less likely than someone just not typing the entire name).

Based on
rust-lang#103710 (comment)
- Eliminates all the `get_context` calls that async lowering created.
- Replace all `Local` `ResumeTy` types with `&mut Context<'_>`.

The `Local`s that have their types replaced are:
- The `resume` argument itself.
- The argument to `get_context`.
- The yielded value of a `yield`.

The `ResumeTy` hides a `&mut Context<'_>` behind an unsafe raw pointer, and the
`get_context` function is being used to convert that back to a `&mut Context<'_>`.

Ideally the async lowering would not use the `ResumeTy`/`get_context` indirection,
but rather directly use `&mut Context<'_>`, however that would currently
lead to higher-kinded lifetime errors.
See <rust-lang#105501>.

The async lowering step and the type / lifetime inference / checking are
still using the `ResumeTy` indirection for the time being, and that indirection
is removed here. After this transform, the generator body only knows about `&mut Context<'_>`.
Switching them to `Break(())` and `Continue(())` instead.

libs-api would like to remove these constants, so stop using them in compiler to make the removal PR later smaller.
This prevents some strange blur-event-related bugs with the "?" command
by ensuring that the focus remains in the same spot when the settings
area closes.
This extends the special case with checkbox settings to also cover radios.
…-stop-doing-demerits, r=GuillaumeGomez

rustdoc: simplify JS search routine by not messing with lev distance

Since the sorting function accounts for an `index` field, there's not much reason to also be applying changes to the levenshtein distance. Instead, we can just not treat `lev` as a filter if there's already a non-sentinel value for `index`.

<details>

This change gives slightly more weight to the index and path part, as search criteria, than it used to. This changes some of the test cases, but not in any obviously-"worse" way, and, in particular, substring matches are a bigger deal than levenshtein distances (we're assuming that a typo is less likely than someone just not typing the entire name).

The biggest change is the addition of a `path_lev` field to result items. It's always zero if the search query has no parent path part and for type queries, making the check in the `sortResults` function a no-op. When it's present, it is used to implement different precedence for the parent path and the tail.

Consider the query `hashset::insert`, a test case [that already exists and can be found here](https://github.com/rust-lang/rust/blob/5c6a1681a9a7b815febdd9de2f840da338984e68/src/test/rustdoc-js-std/path-ordering.js). We want the ordering shown in the test case:

```
        { 'path': 'std::collections::hash_set::HashSet', 'name': 'insert' },
        { 'path': 'std::collections::hash_set::HashSet', 'name': 'get_or_insert' },
        { 'path': 'std::collections::hash_set::HashSet', 'name': 'get_or_insert_with' },
        { 'path': 'std::collections::hash_set::HashSet', 'name': 'get_or_insert_owned' },
        { 'path': 'std::collections::hash_map::HashMap', 'name': 'insert' },
```

We do not want this ordering, which is the ordering that would occur if substring position took priority over `path_lev`:

```
        { 'path': 'std::collections::hash_set::HashSet', 'name': 'insert' },
        { 'path': 'std::collections::hash_map::HashMap', 'name': 'insert' }, // BAD
        { 'path': 'std::collections::hash_set::HashSet', 'name': 'get_or_insert' },
        { 'path': 'std::collections::hash_set::HashSet', 'name': 'get_or_insert_with' },
        { 'path': 'std::collections::hash_set::HashSet', 'name': 'get_or_insert_owned' },
```

We also do not want `HashSet::iter` to appear before `HashMap::insert`, which is what would happen if `path_lev` took priority over the appearance of any substring match. This is why the `sortResults` function has `path_lev` sandwiched between a `index < 0` check and a `index` comparison check:

```
        { 'path': 'std::collections::hash_set::HashSet', 'name': 'insert' },
        { 'path': 'std::collections::hash_set::HashSet', 'name': 'get_or_insert' },
        { 'path': 'std::collections::hash_set::HashSet', 'name': 'get_or_insert_with' },
        { 'path': 'std::collections::hash_set::HashSet', 'name': 'get_or_insert_owned' },
        { 'path': 'std::collections::hash_set::HashSet', 'name': 'iter' }, // BAD
        { 'path': 'std::collections::hash_map::HashMap', 'name': 'insert' },
```

The old code implemented a similar feature by manipulating the `lev` member based on whether a substring match was found and averaging in the path distance (`item.lev = name_lev + path_lev / 10`), so the path lev wound up acting like a tie breaker, but it gives slightly different results for `Vec::new`, [changing the test case](https://github.com/rust-lang/rust/pull/105796/files#diff-b346e2ef72a407915f438063c8c2c04f7a621df98923d441b41c0312211a5b21) because of the slight changes to ordering priority.

</details>

Based on rust-lang#103710 (comment)

Previews:

* https://notriddle.com/notriddle-rustdoc-demos/rustdoc-search-stop-doing-demerits/std/index.html
* https://notriddle.com/notriddle-rustdoc-demos/rustdoc-search-stop-doing-demerits-compiler/index.html
Transform async `ResumeTy` in generator transform

- Eliminates all the `get_context` calls that async lowering created.
- Replace all `Local` `ResumeTy` types with `&mut Context<'_>`.

The `Local`s that have their types replaced are:
- The `resume` argument itself.
- The argument to `get_context`.
- The yielded value of a `yield`.

The `ResumeTy` hides a `&mut Context<'_>` behind an unsafe raw pointer, and the `get_context` function is being used to convert that back to a `&mut Context<'_>`.

Ideally the async lowering would not use the `ResumeTy`/`get_context` indirection, but rather directly use `&mut Context<'_>`, however that would currently lead to higher-kinded lifetime errors.
See <rust-lang#105501>.

The async lowering step and the type / lifetime inference / checking are still using the `ResumeTy` indirection for the time being, and that indirection is removed here. After this transform, the generator body only knows about `&mut Context<'_>`.

---

Fixes https://github.com/bjorn3/rustc_codegen_cranelift/issues/1330 CC `@bjorn3`

r? `@compiler-errors`
…able, r=spastorino

Make sure that RPITITs are not considered suggestable

Makes no sense to suggest `where impl Future<Output = ()>: Send`, for example.
…didates-2, r=lcnr

Implement some candidates for the new solver (redux)

Based on rust-lang#106718, so the diff is hard to read without it. See [here](rust-lang/rust@98700cf...compiler-errors:rust:new-solver-new-candidates-2) for an easier view until that one lands.

Of note:
* 44af916020fb43c12070125c45b6dee4ec303bbc fixes a bug where we need to make the query response *inside* of a probe, or else we make no inference progress (I think)
* 50daad5acd2f163d03e7ffab942534f09bc36e2e implements `consider_assumption` for traits and predicates. I'm not sure if using `sup` here is necessary or if `eq` is fine.
* We decided that all of the `instantiate_constituent_tys_for_*` functions are verbose but ok, since they need to be exhaustive and the logic between each of them is not similar enough, right?

r? `@lcnr`
Stop using `BREAK` & `CONTINUE` in compiler

Switching them to `Break(())` and `Continue(())` instead.

Entirely search-and-replace, though there's one spot where rustfmt insisted on a reformatting too.

libs-api would like to remove these constants (rust-lang#102697 (comment)), so stop using them in compiler to make the removal PR later smaller.
…stion, r=GuillaumeGomez

rustdoc: fix corner cases with "?" JS keyboard command
@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. T-libs Relevant to the library team, which will review and decide on the PR/issue. T-rustdoc Relevant to the rustdoc team, which will review and decide on the PR/issue. WG-trait-system-refactor The Rustc Trait System Refactor Initiative rollup A PR which is a rollup labels Jan 18, 2023
@matthiaskrgr
Copy link
Member Author

@bors r+ rollup=never p=7

@bors
Copy link
Contributor

bors commented Jan 18, 2023

📌 Commit e466eb2 has been approved by matthiaskrgr

It is now in the queue for this repository.

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Jan 18, 2023
@bors
Copy link
Contributor

bors commented Jan 18, 2023

⌛ Testing commit e466eb2 with merge bcfe78470938c96a98c3a4b41855c4c61bda1ecf...

@bors
Copy link
Contributor

bors commented Jan 18, 2023

💔 Test failed - checks-actions

@bors bors added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. and removed S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. labels Jan 18, 2023
@rust-log-analyzer
Copy link
Collaborator

The job test-various failed! Check out the build log: (web) (plain)

Click to see the possible cause of the failure (guessed by this bot)
Some tests failed in compiletest suite=mir-opt mode=mir-opt host=x86_64-unknown-linux-gnu target=wasm32-unknown-unknown

failures:

---- [mir-opt] checkout/tests/mir-opt/building/async_await.rs stdout ----
77     bb0: {
77     bb0: {
78         _39 = discriminant((*(_1.0: &mut [async fn body@$DIR/async_await.rs:13:18: 16:2]))); // scope 0 at $DIR/async_await.rs:+0:18: +3:2
-         switchInt(move _39) -> [0: bb1, 1: bb47, 2: bb46, 3: bb44, 4: bb45, otherwise: bb48]; // scope 0 at $DIR/async_await.rs:+0:18: +3:2
+         switchInt(move _39) -> [0: bb1, 1: bb29, 3: bb27, 4: bb28, otherwise: bb30]; // scope 0 at $DIR/async_await.rs:+0:18: +3:2
81 
82     bb1: {


84         StorageLive(_3);                 // scope 0 at $DIR/async_await.rs:+1:5: +1:14
85         StorageLive(_4);                 // scope 0 at $DIR/async_await.rs:+1:8: +1:14
86         StorageLive(_5);                 // scope 0 at $DIR/async_await.rs:+1:5: +1:8
-         _5 = a() -> [return: bb2, unwind: bb39]; // scope 0 at $DIR/async_await.rs:+1:5: +1:8
+         _5 = a() -> bb2;                 // scope 0 at $DIR/async_await.rs:+1:5: +1:8
88                                          // mir::Constant
89                                          // + span: $DIR/async_await.rs:14:5: 14:6
90                                          // + literal: Const { ty: fn() -> impl Future<Output = ()> {a}, val: Value(<ZST>) }
91     }
92 
93     bb2: {
93     bb2: {
-         _4 = <impl Future<Output = ()> as IntoFuture>::into_future(move _5) -> [return: bb3, unwind: bb38]; // scope 0 at $DIR/async_await.rs:+1:8: +1:14
+         _4 = <impl Future<Output = ()> as IntoFuture>::into_future(move _5) -> bb3; // scope 0 at $DIR/async_await.rs:+1:8: +1:14
95                                          // mir::Constant
96                                          // + span: $DIR/async_await.rs:14:8: 14:14
97                                          // + literal: Const { ty: fn(impl Future<Output = ()>) -> <impl Future<Output = ()> as IntoFuture>::IntoFuture {<impl Future<Output = ()> as IntoFuture>::into_future}, val: Value(<ZST>) }

112         StorageLive(_12);                // scope 2 at $DIR/async_await.rs:+1:8: +1:14
113         _12 = &mut (((*(_1.0: &mut [async fn body@$DIR/async_await.rs:13:18: 16:2])) as variant#3).0: impl std::future::Future<Output = ()>); // scope 2 at $DIR/async_await.rs:+1:8: +1:14
114         _11 = &mut (*_12);               // scope 2 at $DIR/async_await.rs:+1:8: +1:14
-         _10 = Pin::<&mut impl Future<Output = ()>>::new_unchecked(move _11) -> [return: bb5, unwind: bb35]; // scope 2 at $DIR/async_await.rs:+1:8: +1:14
+         _10 = Pin::<&mut impl Future<Output = ()>>::new_unchecked(move _11) -> bb5; // scope 2 at $DIR/async_await.rs:+1:8: +1:14
116                                          // mir::Constant
117                                          // + span: $DIR/async_await.rs:14:8: 14:14
118                                          // + literal: Const { ty: unsafe fn(&mut impl Future<Output = ()>) -> Pin<&mut impl Future<Output = ()>> {Pin::<&mut impl Future<Output = ()>>::new_unchecked}, val: Value(<ZST>) }
131     bb6: {
131     bb6: {
132         _13 = &mut (*_14);               // scope 2 at $DIR/async_await.rs:+1:5: +1:14
133         StorageDead(_15);                // scope 2 at $DIR/async_await.rs:+1:13: +1:14
-         _9 = <impl Future<Output = ()> as Future>::poll(move _10, move _13) -> [return: bb7, unwind: bb34]; // scope 2 at $DIR/async_await.rs:+1:8: +1:14
+         _9 = <impl Future<Output = ()> as Future>::poll(move _10, move _13) -> bb7; // scope 2 at $DIR/async_await.rs:+1:8: +1:14
135                                          // mir::Constant
136                                          // + span: $DIR/async_await.rs:14:8: 14:14
137                                          // + literal: Const { ty: for<'a, 'b, 'c> fn(Pin<&'a mut impl Future<Output = ()>>, &'b mut Context<'c>) -> Poll<<impl Future<Output = ()> as Future>::Output> {<impl Future<Output = ()> as Future>::poll}, val: Value(<ZST>) }

193         StorageDead(_3);                 // scope 0 at $DIR/async_await.rs:+1:14: +1:15
194         StorageLive(_21);                // scope 0 at $DIR/async_await.rs:+2:8: +2:14
195         StorageLive(_22);                // scope 0 at $DIR/async_await.rs:+2:5: +2:8
-         _22 = a() -> [return: bb14, unwind: bb32]; // scope 0 at $DIR/async_await.rs:+2:5: +2:8
+         _22 = a() -> bb14;               // scope 0 at $DIR/async_await.rs:+2:5: +2:8
197                                          // mir::Constant
198                                          // + span: $DIR/async_await.rs:15:5: 15:6
199                                          // + literal: Const { ty: fn() -> impl Future<Output = ()> {a}, val: Value(<ZST>) }
200     }
201 
202     bb14: {
202     bb14: {
-         _21 = <impl Future<Output = ()> as IntoFuture>::into_future(move _22) -> [return: bb15, unwind: bb31]; // scope 0 at $DIR/async_await.rs:+2:8: +2:14
+         _21 = <impl Future<Output = ()> as IntoFuture>::into_future(move _22) -> bb15; // scope 0 at $DIR/async_await.rs:+2:8: +2:14
204                                          // mir::Constant
205                                          // + span: $DIR/async_await.rs:15:8: 15:14
206                                          // + literal: Const { ty: fn(impl Future<Output = ()>) -> <impl Future<Output = ()> as IntoFuture>::IntoFuture {<impl Future<Output = ()> as IntoFuture>::into_future}, val: Value(<ZST>) }

221         StorageLive(_28);                // scope 5 at $DIR/async_await.rs:+2:8: +2:14
222         _28 = &mut (((*(_1.0: &mut [async fn body@$DIR/async_await.rs:13:18: 16:2])) as variant#4).0: impl std::future::Future<Output = ()>); // scope 5 at $DIR/async_await.rs:+2:8: +2:14
223         _27 = &mut (*_28);               // scope 5 at $DIR/async_await.rs:+2:8: +2:14
-         _26 = Pin::<&mut impl Future<Output = ()>>::new_unchecked(move _27) -> [return: bb17, unwind: bb28]; // scope 5 at $DIR/async_await.rs:+2:8: +2:14
+         _26 = Pin::<&mut impl Future<Output = ()>>::new_unchecked(move _27) -> bb17; // scope 5 at $DIR/async_await.rs:+2:8: +2:14
225                                          // mir::Constant
226                                          // + span: $DIR/async_await.rs:15:8: 15:14
227                                          // + literal: Const { ty: unsafe fn(&mut impl Future<Output = ()>) -> Pin<&mut impl Future<Output = ()>> {Pin::<&mut impl Future<Output = ()>>::new_unchecked}, val: Value(<ZST>) }
240     bb18: {
240     bb18: {
241         _29 = &mut (*_30);               // scope 5 at $DIR/async_await.rs:+2:5: +2:14
242         StorageDead(_31);                // scope 5 at $DIR/async_await.rs:+2:13: +2:14
-         _25 = <impl Future<Output = ()> as Future>::poll(move _26, move _29) -> [return: bb19, unwind: bb27]; // scope 5 at $DIR/async_await.rs:+2:8: +2:14
+         _25 = <impl Future<Output = ()> as Future>::poll(move _26, move _29) -> bb19; // scope 5 at $DIR/async_await.rs:+2:8: +2:14
244                                          // mir::Constant
245                                          // + span: $DIR/async_await.rs:15:8: 15:14
246                                          // + literal: Const { ty: for<'a, 'b, 'c> fn(Pin<&'a mut impl Future<Output = ()>>, &'b mut Context<'c>) -> Poll<<impl Future<Output = ()> as Future>::Output> {<impl Future<Output = ()> as Future>::poll}, val: Value(<ZST>) }

310         return;                          // scope 0 at $DIR/async_await.rs:+3:2: +3:2
312 
312 
-     bb27 (cleanup): {
-         StorageDead(_29);                // scope 5 at $DIR/async_await.rs:+2:13: +2:14
-         StorageDead(_26);                // scope 5 at $DIR/async_await.rs:+2:13: +2:14
-         StorageDead(_30);                // scope 4 at $DIR/async_await.rs:+2:13: +2:14
-         goto -> bb29;                    // scope 4 at no-location
- 
- 
-     bb28 (cleanup): {
-         StorageDead(_27);                // scope 5 at $DIR/async_await.rs:+2:13: +2:14
-         StorageDead(_26);                // scope 5 at $DIR/async_await.rs:+2:13: +2:14
-         goto -> bb29;                    // scope 5 at no-location
- 
- 
-     bb29 (cleanup): {
-         StorageDead(_28);                // scope 4 at $DIR/async_await.rs:+2:13: +2:14
-         StorageDead(_25);                // scope 4 at $DIR/async_await.rs:+2:13: +2:14
-         StorageDead(_24);                // scope 4 at $DIR/async_await.rs:+2:13: +2:14
-         goto -> bb30;                    // scope 0 at $DIR/async_await.rs:+2:13: +2:14
- 
- 
-     bb30 (cleanup): {
-         nop;                             // scope 0 at $DIR/async_await.rs:+2:13: +2:14
-         goto -> bb33;                    // scope 0 at $DIR/async_await.rs:+3:1: +3:2
- 
- 
-     bb31 (cleanup): {
-         goto -> bb32;                    // scope 0 at $DIR/async_await.rs:+2:13: +2:14
- 
- 
-     bb32 (cleanup): {
-         StorageDead(_22);                // scope 0 at $DIR/async_await.rs:+2:13: +2:14
-         goto -> bb33;                    // scope 0 at no-location
- 
- 
-     bb33 (cleanup): {
-         StorageDead(_21);                // scope 0 at $DIR/async_await.rs:+3:1: +3:2
-         goto -> bb41;                    // scope 0 at no-location
- 
- 
-     bb34 (cleanup): {
-         StorageDead(_13);                // scope 2 at $DIR/async_await.rs:+1:13: +1:14
-         StorageDead(_10);                // scope 2 at $DIR/async_await.rs:+1:13: +1:14
-         StorageDead(_14);                // scope 1 at $DIR/async_await.rs:+1:13: +1:14
-         goto -> bb36;                    // scope 1 at no-location
- 
- 
-     bb35 (cleanup): {
-         StorageDead(_11);                // scope 2 at $DIR/async_await.rs:+1:13: +1:14
-         StorageDead(_10);                // scope 2 at $DIR/async_await.rs:+1:13: +1:14
-         goto -> bb36;                    // scope 2 at no-location
- 
- 
-     bb36 (cleanup): {
-         StorageDead(_12);                // scope 1 at $DIR/async_await.rs:+1:13: +1:14
-         StorageDead(_9);                 // scope 1 at $DIR/async_await.rs:+1:13: +1:14
-         StorageDead(_8);                 // scope 1 at $DIR/async_await.rs:+1:13: +1:14
-         goto -> bb37;                    // scope 0 at $DIR/async_await.rs:+1:13: +1:14
- 
- 
-     bb37 (cleanup): {
-         nop;                             // scope 0 at $DIR/async_await.rs:+1:13: +1:14
-         goto -> bb40;                    // scope 0 at $DIR/async_await.rs:+1:14: +1:15
- 
- 
-     bb38 (cleanup): {
-         goto -> bb39;                    // scope 0 at $DIR/async_await.rs:+1:13: +1:14
- 
- 
-     bb39 (cleanup): {
-         StorageDead(_5);                 // scope 0 at $DIR/async_await.rs:+1:13: +1:14
-         goto -> bb40;                    // scope 0 at no-location
- 
- 
-     bb40 (cleanup): {
-         StorageDead(_4);                 // scope 0 at $DIR/async_await.rs:+1:14: +1:15
-         StorageDead(_3);                 // scope 0 at $DIR/async_await.rs:+1:14: +1:15
-         goto -> bb41;                    // scope 0 at no-location
- 
- 
-     bb41 (cleanup): {
-         goto -> bb42;                    // scope 0 at $DIR/async_await.rs:+3:1: +3:2
- 
- 
-     bb42 (cleanup): {
-         goto -> bb43;                    // scope 0 at $DIR/async_await.rs:+0:18: +3:2
- 
- 
-     bb43 (cleanup): {
-         discriminant((*(_1.0: &mut [async fn body@$DIR/async_await.rs:13:18: 16:2]))) = 2; // scope 0 at $DIR/async_await.rs:+0:18: +3:2
-         resume;                          // scope 0 at $DIR/async_await.rs:+0:18: +3:2
- 
-     bb44: {
+     bb27: {
+     bb27: {
406         StorageLive(_3);                 // scope 0 at $DIR/async_await.rs:+0:18: +3:2
407         StorageLive(_4);                 // scope 0 at $DIR/async_await.rs:+0:18: +3:2
408         StorageLive(_19);                // scope 0 at $DIR/async_await.rs:+0:18: +3:2

411         goto -> bb11;                    // scope 0 at $DIR/async_await.rs:+0:18: +3:2
413 
-     bb45: {
+     bb28: {
+     bb28: {
415         StorageLive(_21);                // scope 0 at $DIR/async_await.rs:+0:18: +3:2
416         StorageLive(_35);                // scope 0 at $DIR/async_await.rs:+0:18: +3:2
417         StorageLive(_36);                // scope 0 at $DIR/async_await.rs:+0:18: +3:2

419         goto -> bb23;                    // scope 0 at $DIR/async_await.rs:+0:18: +3:2
421 
-     bb46: {
-     bb46: {
-         assert(const false, "`async fn` resumed after panicking") -> bb46; // scope 0 at $DIR/async_await.rs:+0:18: +3:2
+     bb29: {
+         assert(const false, "`async fn` resumed after completion") -> bb29; // scope 0 at $DIR/async_await.rs:+0:18: +3:2
425 
-     bb47: {
-     bb47: {
-         assert(const false, "`async fn` resumed after completion") -> bb47; // scope 0 at $DIR/async_await.rs:+0:18: +3:2
- 
-     bb48: {
+     bb30: {
+     bb30: {
431         unreachable;                     // scope 0 at $DIR/async_await.rs:+0:18: +3:2
433 }


thread '[mir-opt] checkout/tests/mir-opt/building/async_await.rs' panicked at 'Actual MIR output differs from expected MIR output /checkout/tests/mir-opt/building/async_await.b-{closure#0}.generator_resume.0.mir', src/tools/compiletest/src/runtest.rs:3463:21


failures:
failures:
    [mir-opt] checkout/tests/mir-opt/building/async_await.rs
test result: FAILED. 184 passed; 1 failed; 34 ignored; 0 measured; 0 filtered out; finished in 9.13s

Build completed unsuccessfully in 0:13:14

@compiler-errors
Copy link
Member

@bors r-

@bors bors added S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Jan 18, 2023
@matthiaskrgr matthiaskrgr deleted the rollup-3n0wejz branch March 16, 2024 18:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
rollup A PR which is a rollup S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. T-libs Relevant to the library team, which will review and decide on the PR/issue. T-rustdoc Relevant to the rustdoc team, which will review and decide on the PR/issue. WG-trait-system-refactor The Rustc Trait System Refactor Initiative
Projects
None yet
Development

Successfully merging this pull request may close these issues.

9 participants