cargo-miri: better error message when RUSTC is not set
Currently, when running `cargo-miri` instead of `cargo miri` you get a very confusing.
```
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: NotPresent', src/tools/miri/cargo-miri/src/main.rs:83:41
```
error. This replaces that with a message telling them to use `cargo miri`
Make associated type bounds in supertrait position implied
`trait A: B<Assoc: C> {}` should be able to imply both `Self: B` and `<Self as B>::Assoc: C`. Adjust the way that we collect implied predicates to do so.
Fixes#112573Fixes#112568
Refactor metadata emission to avoid visiting HIR
This PR refactors metadata emission to be based on tables and iteration over definitions.
In a first part, this PR moves information from the `EntryKind` enum to tables, until removing the `EntryKind` enum.
In a second part, the iteration scheme is refactored to avoid fetching HIR unless strictly necessary.
r? `@ghost`
Rollup of 6 pull requests
Successful merges:
- #111571 (Implement proposed API for `proc_macro_span`)
- #112236 (Simplify computation of killed borrows)
- #112867 (More `ImplSource` nits)
- #113019 (add note for non-exhaustive matches with guards)
- #113094 (Fix invalid HTML DIV tag used in HEAD)
- #113111 (add myself to review for t-types stuff)
r? `@ghost`
`@rustbot` modify labels: rollup
Try running a sync automatically
absolutely no clue if this works, but it happens after the zulip message, so worst case we'll see the failure after the cron job did everything it currently does.
add note for non-exhaustive matches with guards
Associated issue: #92197
When a match statement includes guards on every match arm (and is therefore necessarily non-exhaustive), add a note to the error E0004 diagnostic noting this.
Validate fluent variable references in tests
Closes#101109
Under `cfg(test)`, the `fluent_messages` macro will emit a list of variables referenced by each message and its attributes. The derive attribute will now emit a `#[test]` that checks that each referenced variable exists in the structure it's applied to.
mir opt + codegen: handle subtyping
fixes#107205
the same issue was caused in multiple places:
- mir opts: both copy and destination propagation
- codegen: assigning operands to locals (which also propagates values)
I changed codegen to always update the type in the operands used for locals which should guard against any new occurrences of this bug going forward. I don't know how to make mir optimizations more resilient here. Hopefully the added tests will be enough to detect any trivially wrong optimizations going forward.