| Age | Commit message (Collapse) | Author | Lines |
|
Use a `ParamEnvAnd<Predicate>` for caching in `ObligationForest`
Previously, we used a plain `Predicate` to cache results (e.g. successes
and failures) in ObligationForest. However, fulfillment depends on the
precise `ParamEnv` used, so this is unsound in general.
This commit changes the impl of `ForestObligation` for
`PendingPredicateObligation` to use `ParamEnvAnd<Predicate>` instead of
`Predicate` for the associated type. The associated type and method are
renamed from 'predicate' to 'cache_key' to reflect the fact that type is
no longer just a predicate.
|
|
|
|
|
|
|
|
Move resolve_instance to rustc_ty.
r? @Zoxc
|
|
|
|
Construct query job latches on-demand
r? @michaelwoerister
|
|
Use HirId in TraitCandidate.
I had to duplicate the `TraitMap` type to hold `NodeId`s until AST->HIR lowering is done.
r? @Zoxc
|
|
|
|
|
|
|
|
|
|
remove Panic variant from InterpError
The interpreter engine itself does not raise `Panic` errors any more, so remove them from the error enum. Instead, const-prop and const-eval have to do their own handling of panics.
I used the opportunity to refactor the const-eval error handling a bit to use the `MachineStop` variant.
Also, in const-prop I could do some cleanup as now, no more lints are being reported in `use_ecx`. However, I am quite puzzled by why exactly the linting there works the way it does -- the code can certainly be cleaned up more, but I don't know enough of the intent to do that. I left some questions for the most confusing parts, but for now behavior should be unchanged by this PR (so, all that weirdness I am asking about is pre-existing and merely maintained here). Cc @wesleywiser
Fixes https://github.com/rust-lang/rust/issues/66902
r? @oli-obk
|
|
|
|
- comment for special handling of Shl/Shr
- reference a PR
|
|
|
|
|
|
|
|
|
|
Same idea for `Unsafety` & use new span for better diagnostics.
|
|
When expecting `BoxFuture` and using `async {}`, suggest `Box::pin`
Fix #68197, cc #69083.
|
|
|
|
|
|
Improve `ty.needs_drop`
* Handle cycles in `needs_drop` correctly
* Normalize types when computing `needs_drop`
* Move queries from rustc to rustc_ty
* Avoid query in simple cases
reopens #65918
|
|
|
|
Remove a few unused objects
As far as I can tell, these won't be missed:
- `infer::region_constraints::ConstraintInfo`
- `driver::DefaultCallbacks`
- ~~`hir::intravisit::ParDeepVisitor`~~
|
|
|
|
|
|
Fix outdated doc comment.
r? @RalfJung
|
|
Split lang_items to crates `rustc_hir` and `rustc_passes`.
As discussed in comment https://github.com/rust-lang/rust/pull/67688#discussion_r368289946
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Hide niches under UnsafeCell
Hide any niche of T from type-construction context of `UnsafeCell<T>`.
Fix #68303
Fix #68206
|
|
Rollup of 8 pull requests
Successful merges:
- #66498 (Remove unused feature gates)
- #68816 (Tweak borrow error on `FnMut` when `Fn` is expected)
- #68824 (Enable Control Flow Guard in rustbuild)
- #69022 (traits: preallocate 2 Vecs of known initial size)
- #69031 (Use `dyn Trait` more in tests)
- #69044 (Don't run coherence twice for future-compat lints)
- #69047 (Don't rustfmt check the vendor directory.)
- #69055 (Clean up E0307 explanation)
Failed merges:
r? @ghost
|
|
Don't run coherence twice for future-compat lints
This fixes the regression introduced by https://github.com/rust-lang/rust/pull/65232 (which I mentioned in https://github.com/rust-lang/rust/pull/65232#issuecomment-583739037).
Old algorithm:
* Run coherence with all future-incompatible checks off, reporting errors on any overlap.
* If there's no overlap (common case), run it *again*, with the future-incompatible checks on. Report warnings for any overlap found.
New algorithm:
* Run coherence with all additional future-incompatible checks *on*, which means that we'll find *all* potentially overlapping impls immediately.
* If this found overlap, run coherence again, with the future-incompatible checks off. If that *still* gives an error, we report it. If not, it ought to be a warning.
This reduces time spent in coherence checking for the nrf52810-pac by roughly 50% relative to current master.
|
|
traits: preallocate 2 Vecs of known initial size
The 2 preallocations are pretty obvious; both vectors will be as big as or larger than the collections they are created from.
In `WfPredicates::normalize` the change from a functional style improves readability and should be perf-friendly, too.
|
|
Remove unused feature gates
I think many of the remaining unstable things can be easily be replaced with stable things. I have kept the `#![feature(nll)]` even though it is only necessary in `libstd`, to make regressions of it harder.
|
|
|
|
|