Rollup of 7 pull requests
Successful merges:
- #62593 (Group all ABI tests.)
- #63173 (Use libunwind from llvm-project submodule for musl targets)
- #63535 (Continue refactoring resolve and hygiene)
- #63539 (Suggest Rust 2018 on `<expr>.await` with no such field)
- #63584 (libcore: more cleanups using `#![feature(associated_type_bounds)]`)
- #63612 (Do not suggest `try_into` for base types inside of macro expansions)
- #63615 (Fix typo in DoubleEndedIterator::nth_back doc)
Failed merges:
r? @ghost
Suggest Rust 2018 on `<expr>.await` with no such field
When type checking a field projection (`fn check_field`) to `<expr>.await` where `<expr>: τ` and `τ` is not a primitive type, suggest switching to Rust 2018. E.g.
```
error[E0609]: no field `await` on type `std::pin::Pin<&mut dyn std::future::Future<Output = ()>>`
--> $DIR/suggest-switching-edition-on-await.rs:31:7
|
LL | x.await;
| ^^^^^ unknown field
|
= note: to `.await` a `Future`, switch to Rust 2018
= help: set `edition = "2018"` in `Cargo.toml`
= note: for more on editions, read https://doc.rust-lang.org/edition-guide
```
Fixes https://github.com/rust-lang/rust/issues/63533
This PR also performs some preparatory cleanups in `fn check_field`; the last 2 commits are where the suggestion is introduced and tested respectively.
r? @varkor
Continue refactoring resolve and hygiene
The general goal is addressing FIXMEs from the previous PRs.
Merging similar data structures (+ prerequisites for such merging), accounting for the fact that all `ExpnId`s have associated data in `HygieneData` now (less `Option`s).
Also, some renaming.
This should be the last renaming session in this area, I think.
r? @matthewjasper
The previous approach was brittle - what would happen if `ParentScope` wasn't created by `invoc_parent_scope`?
That's exactly the case for various uses of `ParentScope` in diagnostics and in built-in attribute validation.
Traces already contain module info without that.
It's easy to forget to call `finalize_*` on a module.
In particular, macros enum and trait modules weren't finalized.
By happy accident macros weren't placed into those modules until now.
cleanup: Remove `Spanned` where possible
It generally only makes sense on enums, otherwise it's more convenient to "flatten" it by adding a span field to the struct it wraps.
Test HRTB issue accepted by compiler
Hi! First Rust PR, so if anything needs changing just let me know and I'll take care of it right away.
Closes#50301 which was marked E-needstest