| Age | Commit message (Collapse) | Author | Lines |
|
Fix drop handling for `if let` expressions
MIR lowering for `if let` expressions is now more complicated now that
`if let` exists in HIR. This PR adds a scope for the variables bound in
an `if let` expression and then uses an approach similar to how we
handle loops to ensure that we reliably drop the correct variables.
Closes #88307
cc `@flip1995` `@richkadel` `@c410-f3r`
|
|
MIR lowering for `if let` expressions is now more complicated now that
`if let` exists in HIR. This PR adds a scope for the variables bound in
an `if let` expression and then uses an approach similar to how we
handle loops to ensure that we reliably drop the correct variables.
|
|
|
|
|
|
The definition order is already close to the span order, and only differs
in corner cases.
|
|
Remove unused arena macro args
|
|
|
|
|
|
|
|
|
|
Make spans for tuple patterns in E0023 more precise
As suggested in #86307. Closes #86307.
r? ````@estebank````
|
|
Refactor `named_asm_labels` to a HIR lint
As discussed on #88169, the `named_asm_labels` lint could be moved to a HIR lint. That allows future lints or custom plugins or clippy lints to more easily access the `asm!` macro's data and create better error messages with the lints.
|
|
Improve detection of generics on lang items
Adds detection for the required generics for all lang items. Many lang items require an exact or minimum amount of generic arguments and if they don't exist, the compiler will ICE. This does not add any additional validation about bounds on generics or any other lang item restrictions.
Fixes one of the ICEs in #87573
cc `@FabianWolff`
|
|
|
|
|
|
same search
|
|
|
|
This should cause a compiler error in the future if more variants are
added without `Node::ident()` being updated.
|
|
|
|
|
|
|
|
|
|
r=Mark-Simulacrum
Ignore comments in tidy-filelength
Ref https://github.com/rust-lang/rust/issues/60302#issuecomment-652402127
|
|
more clippy::complexity fixes
(also a couple of clippy::perf fixes)
|
|
|
|
During const eval, this replaces calls to core::panicking::panic_fmt and
std::panicking::being_panic_fmt with a call to a new const fn:
core::panicking::const_panic_fmt. That function uses
fmt::Arguments::as_str() to get the str and calls panic_str with that
instead.
panic!() invocations with formatting arguments are still not accepted,
as the creation of such a fmt::Arguments cannot be done in constant
functions right now.
|
|
Add hir::GenericArg::Infer
In order to extend inference to consts, make an Infer type on hir::GenericArg.
|
|
|
|
|
|
Store all HIR owners in the same container
This replaces the previous storage in a BTreeMap for each of Item/ImplItem/TraitItem/ForeignItem.
This should allow for a more compact storage.
Based on https://github.com/rust-lang/rust/pull/83114
|
|
|
|
|
|
|
|
|
|
|
|
dont provide fwd declared params to cg defaults
Fixes #83938
```rust
#![feature(const_evaluatable_checked, const_generics, const_generics_defaults)]
#![allow(incomplete_features)]
pub struct Bar<const N: usize, const M: usize = { N + 1 }>;
pub fn foo<const N1: usize>() -> Bar<N1> { loop {} }
fn main() {}
```
This PR makes this code no longer ICE, it was ICE'ing previously because when building substs for `Bar<N1>` we would subst the anon ct: `ConstKind::Unevaluated({N + 1}, substs: [N, M])` with substs of `[N1]`. the anon const has forward declared params supplied though so we end up trying to substitute the provided `M` param which causes the ICE.
This PR doesn't handle the predicates of the const so
```rust
trait Foo<const N: usize> { const Assoc: usize; }
pub struct Bar<const N: usize = { <()>::Assoc }> where (): Foo<N>;
```
Resolves to `<() as Foo<N>>::Assoc` which can allow for using fwd declared params indirectly.
```rust
trait Foo<const N: usize> {}
struct Bar<const N: usize = { 2 + 3 }> where (): Foo<N>;
```
This code also ICEs under this PR because instantiating the default's predicates causes an ICE as predicates_of contains predicates with fwd declared params
PR was briefly discussed [in this zulip thread](https://rust-lang.zulipchat.com/#narrow/stream/260443-project-const-generics/topic/evil.20preds.20in.20param.20env.20.2386580)
|
|
|
|
Recognize bounds on impls as const bounds
r? ```@oli-obk```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Reduce the amount of untracked state in TyCtxt -- Take 2
Main part of #85153
The offending line (https://github.com/rust-lang/rust/pull/85153#discussion_r642866298) is replaced by a FIXME until the possible bug and the perf concern are both resolved.
r? `@Aaron1011`
|
|
sexxi-goose:use-diagnostic-item-for-rfc2229-migration, r=nikomatsakis
Use diagnostic items instead of lang items for rfc2229 migrations
This PR removes the `Send`, `UnwindSafe` and `RefUnwindSafe` lang items introduced in https://github.com/rust-lang/rust/pull/84730, and uses diagnostic items instead to check for `Send`, `UnwindSafe` and `RefUnwindSafe` traits for RFC2229 migrations.
r? ```@nikomatsakis```
|
|
|
|
r=michaelwoerister
Reland "Merge CrateDisambiguator into StableCrateId"
Reverts https://github.com/rust-lang/rust/pull/85891 as this revert of #85804 made perf even worse.
r? `@Mark-Simulacrum`
|
|
This reverts commit 6c5b6985fdce0921fe4ac0247fd026355953c1ea.
|
|
This reverts commit 8176ab8bc18fdd7d3c2cf7f720c51166364c33a3.
|