| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
|\
| |
| |
| |
| |
| |
| |
| | |
9007: Internal: `clippy::redundant_clone` fixes r=lnicola a=lnicola
bors r+
Co-authored-by: Laurențiu Nicola <[email protected]>
|
| | |
|
|/
|
|
|
|
| |
MacroStmts should be completely transparent, but it prevented
coercion. (I should maybe give `infer_expr` and `infer_expr_inner`
better names.)
|
| |
|
| |
|
|
|
|
| |
So as to not use `TyKind::Error` as "no expectation".
|
|
|
|
| |
Instead use shallow resolving where necessary.
|
|
|
|
|
|
|
|
| |
We can't do the easy hack that we did before anymore, where we kept
track of whether any inference variables changed since the last time we
rechecked obligations. Instead, we store the obligations in
canonicalized form; that way we can easily check the inference variables
to see whether they have changed since the goal was canonicalized.
|
| |
|
| |
|
| |
|
|
|
|
|
| |
* rename ConstExtension->ConstExt
* refactor a manual construction of a Const
|
|
|
|
|
|
|
|
|
|
|
| |
Fix #2922: add unknown length as a condition for a type having unknown.
Incorporate reviews:
* Extract some of the const evaluation workings into functions
* Add fixmes on the hacks
* Add tests for impls on specific array lengths (these work!!! 😁)
* Add tests for const generics (indeed we don't support it yet)
|
|
|
|
| |
Now we will get the type of `[0u8; 4]`.
|
|
|
|
| |
I am not confident that my added byte string parsing is right.
|
|
|
|
|
|
|
|
|
|
|
| |
Now e.g.
```rust
fn a(b: [u8; 2]) {
}
```
will know about the length of b.
|
|\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
8799: Add basic support for array lengths in types r=flodiebold a=lf-
This recognizes `let a = [1u8, 2, 3]` as having type `[u8; 3]` instead
of the previous `[u8; _]`. Byte strings and `[0u8; 2]` kinds of range
array declarations are unsupported as before.
I don't know why a bunch of our rustc tests had single quotes inside
strings un-escaped by `UPDATE_EXPECT=1 cargo t`, but I don't think it's
bad? Maybe something in a nightly?
Co-authored-by: Jade <[email protected]>
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This recognizes `let a = [1u8, 2, 3]` as having type `[u8; 3]` instead
of the previous `[u8; _]`. Byte strings and `[0u8; 2]` kinds of range
array declarations are unsupported as before.
I don't know why a bunch of our rustc tests had single quotes inside
strings un-escaped by `UPDATE_EXPECT=1 cargo t`, but I don't think it's
bad? Maybe something in a nightly?
|
|/
|
|
| |
Fixes #8378
|
| |
|
|
|
|
|
| |
Chalk isn't really a 'traits' thing anymore, so it doesn't make sense to
have all the Chalk-related stuff in submodules of `traits`.
|
| |
|
|
|
|
| |
(Costs a bit of performance, reduces memory usage on RA by ~10%.)
|
| |
|
| |
|
|
|
|
|
|
| |
Almost all uses actually only care about ADT substs, so it's better to
be explicit. The methods were a bad abstraction anyway since they
already didn't include the inner types of e.g. `TyKind::Ref` anymore.
|
|
|
|
|
| |
It stores no useful data, since we can derive all fields from
`variant_resolutions`
|
|\
| |
| |
| |
| |
| |
| |
| |
| |
| | |
8364: Memory usage improvements r=jonas-schievink a=alexmaco
These are mostly focused on splitting up enum variants with large size differences between variants by `Box`-ing things up.
In my testing this reduces the memory usage somewhere in the low percentages, even though the measurements are quite noisy.
Co-authored-by: Alexandru Macovei <[email protected]>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
64bit systems)
Rationale: only a minority of variants used almost half the size.
By keeping large members (especially in Option) behind a box
the memory cost is only payed when the large variants are needed.
This reduces the size Vec<Expr> needs to allocate.
|
| | |
|
| | |
|
| | |
|
|/ |
|
|
|
|
|
|
|
|
|
| |
- don't shift in/out for Chalk mapping (we want to have the same
binders now)
- do shift in when creating the signature for a closure (though it
shouldn't matter much)
- do shift in when lowering a `fn()` type
- correctly deal with the implied binder in TypeWalk
|
| |
|
|
|
|
| |
I probably want to get rid of this function completely later.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
- all the types that will be replaced by Chalk go to `types`
- `TypeWalk` impls go to `walk`
|
| |
|
| |
|
| |
|
| |
|