| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
This should result in an implicit `-> ()`, not leaving out the binding.
|
| |
|
|
|
|
|
|
| |
MacroStmts should be completely transparent, but it prevented
coercion. (I should maybe give `infer_expr` and `infer_expr_inner`
better names.)
|
|
|
|
|
| |
Lets steal this good naming from Roslyn before I forget about it yet
again.
|
|
|
|
|
| |
Doesn't save much memory (~2 mb), but interning things is generally a
good pattern to follow
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
Chalk's unification can sometimes create lifetime variables, which we
currently don't really deal with, but at least we don't want to leak
them outside of inference.
Should fix #8919.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
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.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Chalk doesn't know about the `diverging` flag, so we need to instead
propagate it before fully resolving the variables.
|
|
|
|
| |
Fixes #7626.
|
|
|
|
| |
Fixes #8604.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
8813: Get some more array lengths! r=lf- a=lf-
This is built on #8799 and thus contains its changes. I'll rebase it onto master when that one gets merged. It adds support for r-a understanding the length of:
* `let a: [u8; 2] = ...`
* `let a = b"aaa"`
* `let a = [0u8; 4]`
I have added support for getting the values of byte strings, which was not previously there. I am least confident in the correctness of this part and it probably needs some more tests, as we currently have only one test that exercised that part (!).
Fixes #2922.
Co-authored-by: Jade <[email protected]>
|
| |
| |
| |
| |
| | |
* 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?
|
|\ \
| |/
|/|
| |
| |
| |
| |
| | |
8398: Fix inference with conditionally compiled tails r=flodiebold a=DJMcNab
Fixes #8378
Co-authored-by: Daniel McNab <[email protected]>
|
| | |
|