Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | Resolve `Self::AssocTy` in impls | Florian Diebold | 2020-03-06 | 1 | -2/+2 |
| | | | | | | | | | | To do this we need to carry around the original resolution a bit, because `Self` gets resolved to the actual type immediately, but you're not allowed to write the equivalent type in a projection. (I tried just comparing the projection base type with the impl self type, but that seemed too dirty.) This is basically how rustc does it as well. Fixes #3249. | ||||
*-. | Merge #3397 #3398 | bors[bot] | 2020-03-02 | 1 | -6/+2 |
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 3397: Minimal viable meta r=matklad a=matklad bors r+ 🤖 3398: Reformat? r=matklad a=matklad bors r+ 🤖 Co-authored-by: Aleksey Kladov <[email protected]> | ||||
| | * | Reformat? | Aleksey Kladov | 2020-03-02 | 1 | -6/+2 |
| |/ | |||||
* | | Merge #3385 | bors[bot] | 2020-03-02 | 1 | -3/+12 |
|\ \ | |/ |/| | | | | | | | | | | | | | | | | | 3385: Fix #3373 r=matklad a=flodiebold Basically, we need to allow variables in the caller self type to unify with the impl's declared self type. That requires some more contortions in the variable handling. I'm looking forward to (hopefully) handling this in a cleaner way when we switch to Chalk's types and unification code. Co-authored-by: Florian Diebold <[email protected]> | ||||
| * | Fix #3373 | Florian Diebold | 2020-03-01 | 1 | -3/+12 |
| | | | | | | | | | | | | | | Basically, we need to allow variables in the caller self type to unify with the impl's declared self type. That requires some more contortions in the variable handling. I'm looking forward to (hopefully) handling this in a cleaner way when we switch to Chalk's types and unification code. | ||||
* | | handle array pattern matching type inference | Josh Mcguigan | 2020-03-01 | 1 | -10/+14 |
| | | |||||
* | | remove match statement, handle suffix | Josh Mcguigan | 2020-03-01 | 1 | -12/+9 |
| | | |||||
* | | handle arbitrary length slices | Josh Mcguigan | 2020-03-01 | 1 | -3/+5 |
| | | |||||
* | | match single prefix slice | Josh Mcguigan | 2020-03-01 | 1 | -1/+15 |
|/ | |||||
* | Do autoderef for indexing | Florian Diebold | 2020-02-29 | 1 | -5/+21 |
| | |||||
* | Fix a common false-positive type mismatch | Florian Diebold | 2020-02-29 | 1 | -4/+4 |
| | | | | | | | | | E.g. for `&{ some_string() }` in a context where a `&str` is expected, we reported a mismatch inside the block. The problem is that we're passing an expectation of `str` down, but the expectation is more of a hint in this case. There's a long comment in rustc about this, which I just copied. Also, fix reported location for type mismatches in macros. | ||||
* | Fix handling of binders in canonicalization | Florian Diebold | 2020-02-22 | 1 | -64/+35 |
| | | | | I'm looking forward to getting rid of this in favor of Chalk's implementation. | ||||
* | Implement unsize coercion using proper trait solving | Florian Diebold | 2020-02-22 | 1 | -179/+26 |
| | |||||
* | Fix handling of const patterns | Florian Diebold | 2020-02-21 | 1 | -1/+3 |
| | | | | | | | | | E.g. in `match x { None => ... }`, `None` is a path pattern (resolving to the option variant), not a binding. To determine this, we need to try to resolve the name during lowering. This isn't too hard since we already need to resolve names for macro expansion anyway (though maybe a bit hacky). Fixes #1618. | ||||
* | Normalize associated types in types coming from Chalk | Florian Diebold | 2020-02-21 | 1 | -1/+4 |
| | | | | Fixes #3232. | ||||
* | More manual clippy fixes | Kirill Bulatov | 2020-02-18 | 3 | -18/+10 |
| | |||||
* | Run cargo +nightly fix --clippy -Z unstable-options | Kirill Bulatov | 2020-02-18 | 4 | -42/+35 |
| | |||||
* | Fix coercion of &T to itself | Florian Diebold | 2020-02-16 | 1 | -0/+2 |
| | | | | | The autoderef coercion logic did not handle matching placeholders. This led to some type mismatches. | ||||
* | Don't let unknown match arms fall back to ! | Florian Diebold | 2020-02-11 | 1 | -1/+5 |
| | |||||
* | Add or- and parenthesized-patterns | Matthew Jasper | 2020-02-09 | 2 | -3/+13 |
| | |||||
* | Fix some TODOs | Florian Diebold | 2020-02-07 | 1 | -1/+0 |
| | |||||
* | Deal better with implicit type parameters and argument lists | Florian Diebold | 2020-02-07 | 1 | -3/+5 |
| | |||||
* | Formatting | Florian Diebold | 2020-02-07 | 3 | -12/+5 |
| | |||||
* | Clean up RPIT a bit | Florian Diebold | 2020-02-07 | 1 | -1/+0 |
| | |||||
* | Use variables in predicates as well | Florian Diebold | 2020-02-07 | 1 | -2/+2 |
| | |||||
* | Comment fixes / todos | Florian Diebold | 2020-02-07 | 1 | -0/+1 |
| | |||||
* | Change Ty::Param to contain param ID | Florian Diebold | 2020-02-07 | 3 | -15/+13 |
| | |||||
* | Fix another test | Florian Diebold | 2020-02-07 | 1 | -5/+1 |
| | |||||
* | Lower impl trait to variables, move away from using placeholders where they ↵ | Florian Diebold | 2020-02-07 | 2 | -41/+20 |
| | | | | don't belong | ||||
* | wip lower impl trait to type args | Florian Diebold | 2020-02-07 | 1 | -2/+2 |
| | |||||
* | Add impl trait lowering mode | Florian Diebold | 2020-02-07 | 1 | -5/+24 |
| | |||||
* | Introduce TyLoweringContext | Florian Diebold | 2020-02-07 | 1 | -14/+11 |
| | |||||
* | Fix inference for shift operators | Florian Diebold | 2020-01-17 | 1 | -2/+2 |
| | | | | Fixes #2602. | ||||
* | Push resolver further up | Aleksey Kladov | 2020-01-14 | 2 | -8/+20 |
| | |||||
* | Coerce closures to fn pointers | Florian Diebold | 2019-12-20 | 1 | -0/+4 |
| | | | | E.g. `let x: fn(A) -> B = |x| { y };` | ||||
* | Fix coercion of last expression in function body | Florian Diebold | 2019-12-20 | 1 | -1/+1 |
| | |||||
* | Handle closure return types | Florian Diebold | 2019-12-20 | 1 | -3/+14 |
| | | | | Fixes #2547. | ||||
* | Merge #2592 | bors[bot] | 2019-12-20 | 1 | -4/+8 |
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2592: Add std::ops::Index support for infering r=edwin0cheng a=edwin0cheng see also #2534 Seem like this can't fix #2534 for this case: ```rust fn foo3(bar: [usize; 2]) { let baz = bar[1]; // <--- baz is still unknown ? println!("{}", baz); } ``` Co-authored-by: Edwin Cheng <[email protected]> | ||||
| * | Add std::ops::Index support for infering | Edwin Cheng | 2019-12-19 | 1 | -4/+8 |
| | | |||||
* | | Introduce `ContainerId` | Aleksey Kladov | 2019-12-20 | 1 | -1/+1 |
| | | |||||
* | | Rename ContainerId -> AssocContainerId | Aleksey Kladov | 2019-12-20 | 2 | -6/+6 |
| | | |||||
* | | Add body as a possible container for items | Aleksey Kladov | 2019-12-19 | 1 | -1/+1 |
| | | |||||
* | | Forbid <T>::foo syntax in mod paths | Aleksey Kladov | 2019-12-18 | 1 | -2/+2 |
|/ | |||||
* | Handle impl Trait more correctly | Florian Diebold | 2019-12-15 | 1 | -0/+1 |
| | | | | | | | When calling a function, argument-position impl Trait is transparent; same for return-position impl Trait when inside the function. So in these cases, we need to represent that type not by `Ty::Opaque`, but by a type variable that can be unified with whatever flows into there. | ||||
* | Use different types for path with and without generics | Aleksey Kladov | 2019-12-14 | 1 | -12/+13 |
| | |||||
* | Rename N! to name! | Florian Diebold | 2019-12-13 | 1 | -2/+2 |
| | |||||
* | Add macros for known names and paths | Florian Diebold | 2019-12-13 | 1 | -2/+2 |
| | |||||
* | Correctly infer - and ! using std::ops::{Neg,Not} | Emil Lauridsen | 2019-12-13 | 1 | -21/+26 |
| | |||||
* | Add helper for resolving associated type of trait in infer | Emil Lauridsen | 2019-12-13 | 1 | -47/+7 |
| | |||||
* | Fix coercion from &Foo to an inference variable in a reference | Florian Diebold | 2019-12-08 | 1 | -1/+5 |
| | | | | We didn't try to unify within the reference, but we should. |