Auto merge of #75145 - davidtwco:issue-60607-preallocate-defid-for-lang-items, r=petrochenkov
Reference lang items during AST lowering Fixes #60607 and fixes #61019. This PR introduces `QPath::LangItem` to the HIR and uses it in AST lowering instead of constructing a `hir::Path` from a slice of symbols: - Credit for much of this work goes to @matthewjasper, I basically just [rebased their earlier work](a227c706b7 (diff-c0f791ead38d2d02916faaad0f56f41d)). - ~~Changes to Clippy might not be correct, they compile but attempting to run tests through `./x.py` produced failures which appeared spurious, so I didn't run any clippy tests.~~ - Changes to save analysis might not be correct - tests pass but I don't have a lot of confidence in those changes being correct. - I've used `GenericBounds::LangItemTrait` rather than changing `PolyTraitRef`, as suggested by @matthewjasper [in this comment](a227c706b7 (r40107992)) but I'd prefer that be left for a follow-up. - I've split things into smaller commits fairly arbitrarily to make the diff easier to review, each commit should compile but might not pass tests until the final commit. r? @oli-obk cc @matthewjasper
This commit is contained in:
commit
792c645ca7
61 changed files with 588 additions and 458 deletions
18
src/test/ui/hygiene/hir-res-hygiene.rs
Normal file
18
src/test/ui/hygiene/hir-res-hygiene.rs
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
// check-pass
|
||||
// edition:2018
|
||||
// aux-build:not-libstd.rs
|
||||
|
||||
// Check that paths created in HIR are not affected by in scope names.
|
||||
|
||||
extern crate not_libstd as std;
|
||||
|
||||
async fn the_future() {
|
||||
async {}.await;
|
||||
}
|
||||
|
||||
fn main() -> Result<(), ()> {
|
||||
for i in 0..10 {}
|
||||
for j in 0..=10 {}
|
||||
Ok(())?;
|
||||
Ok(())
|
||||
}
|
||||
|
|
@ -17,9 +17,13 @@ error[E0277]: the size for values of type `[{integer}]` cannot be known at compi
|
|||
|
|
||||
LL | let range = *arr..;
|
||||
| ^^^^^^ doesn't have a size known at compile-time
|
||||
|
|
||||
::: $SRC_DIR/core/src/ops/range.rs:LL:COL
|
||||
|
|
||||
LL | pub struct RangeFrom<Idx> {
|
||||
| --- required by this bound in `std::ops::RangeFrom`
|
||||
|
|
||||
= help: the trait `std::marker::Sized` is not implemented for `[{integer}]`
|
||||
= note: required by `std::ops::RangeFrom`
|
||||
|
||||
error: aborting due to 3 previous errors
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue