Commit message (Collapse) | Author | Age | Files | Lines | ||
---|---|---|---|---|---|---|
... | ||||||
* | Add test marks | Kirill Bulatov | 2019-08-26 | 2 | -1/+11 | |
| | ||||||
* | Fix match type inference for Never match arms | Kirill Bulatov | 2019-08-26 | 2 | -6/+32 | |
| | ||||||
* | Tests | Kirill Bulatov | 2019-08-26 | 1 | -0/+104 | |
| | ||||||
* | Add type_mismatches to InferenceResult and use this in ok-wrapping code fix | Phil Ellison | 2019-08-25 | 1 | -1/+18 | |
| | ||||||
* | rename struct -> record, pos -> tuple | Aleksey Kladov | 2019-08-23 | 1 | -6/+6 | |
| | ||||||
* | Improve/fix type bound lowering | Florian Diebold | 2019-08-22 | 1 | -0/+33 | |
| | ||||||
* | Handle impl/dyn Trait in method resolution | Florian Diebold | 2019-08-22 | 2 | -32/+66 | |
| | | | | | | | | | | | | | When we have one of these, the `Trait` doesn't need to be in scope to call its methods. So we need to consider this when looking for method candidates. (Actually I think the same is true when we have a bound `T: some::Trait`, but we don't handle that yet). At the same time, since Chalk doesn't handle these types yet, add a small hack to skip Chalk in method resolution and just consider `impl Trait: Trait` always true. This is enough to e.g. get completions for `impl Trait`, but since we don't do any unification we won't infer the return type of e.g. `impl Into<i64>::into()`. | |||||
* | Add `impl Trait` and `dyn Trait` types | Florian Diebold | 2019-08-22 | 3 | -12/+177 | |
| | | | | | | | - refactor bounds handling in the AST a bit - add HIR for bounds - add `Ty::Dyn` and `Ty::Opaque` variants and lower `dyn Trait` / `impl Trait` syntax to them | |||||
* | Don't add `?` bounds as real bounds | Aleksey Kladov | 2019-08-22 | 1 | -0/+29 | |
| | | | | closes #1709 | |||||
* | implement initial type inference for index expressions | Aleksey Kladov | 2019-08-17 | 2 | -0/+20 | |
| | ||||||
* | normalize ordering ops | Aleksey Kladov | 2019-08-17 | 1 | -16/+16 | |
| | ||||||
* | Introduce separate hir::BinaryOp | Aleksey Kladov | 2019-08-17 | 2 | -67/+21 | |
| | | | | | Unlike ast::BinOp, it has significantly more structure to it, so it's easier to, say, handle all assignment-like operations in the same way. | |||||
* | Merge #1691 | bors[bot] | 2019-08-16 | 1 | -0/+9 | |
|\ | | | | | | | | | | | | | | | 1691: Show inherent and trait impls of structs and enums r=viorina a=viorina Co-authored-by: Ekaterina Babshukova <[email protected]> | |||||
| * | show inherent and trait impls of structs and enums | Ekaterina Babshukova | 2019-08-16 | 1 | -0/+9 | |
| | | ||||||
* | | implement durability | Aleksey Kladov | 2019-08-15 | 1 | -1/+1 | |
| | | ||||||
* | | switch from volatile to untracked read | Aleksey Kladov | 2019-08-15 | 1 | -17/+37 | |
|/ | ||||||
* | Handle placeholder assoc types when Chalk produces them | Florian Diebold | 2019-08-12 | 2 | -3/+67 | |
| | ||||||
* | Normalize assoc types in more places | Florian Diebold | 2019-08-12 | 2 | -12/+27 | |
| | ||||||
* | Improve debug logging a bit | Florian Diebold | 2019-08-12 | 1 | -4/+4 | |
| | ||||||
* | Normalize associated types during inference | Florian Diebold | 2019-08-12 | 3 | -9/+25 | |
| | ||||||
* | Lower fully qualified associated type paths | Florian Diebold | 2019-08-12 | 2 | -22/+80 | |
| | | | | I.e. `<T as Trait>::Foo`. | |||||
* | Add representations of associated types | Florian Diebold | 2019-08-12 | 1 | -0/+23 | |
| | | | | | | | | | | | | This adds three different representations, copied from the Chalk model: - `Ty::Projection` is an associated type projection written somewhere in the code, like `<Foo as Trait>::Bar`. - `Ty::UnselectedProjection` is similar, but we don't know the trait yet (`Foo::Bar`). - The above representations are normalized to their actual types during type inference. When that isn't possible, for example for `T::Item` inside an `fn foo<T: Iterator>`, the type is normalized to an application type with `TypeCtor::AssociatedType`. | |||||
* | Add another test for assoc type resolution | Florian Diebold | 2019-08-12 | 1 | -6/+46 | |
| | ||||||
* | implement while let desugaring | Aleksey Kladov | 2019-08-07 | 1 | -0/+20 | |
| | ||||||
* | do fixup: remove unused import | Evgenii P | 2019-08-02 | 1 | -1/+1 | |
| | ||||||
* | Relax trait solving more for completion | Evgenii P | 2019-08-02 | 1 | -7/+1 | |
| | ||||||
* | rustfmt | Evgenii P | 2019-08-02 | 1 | -3/+9 | |
| | ||||||
* | Implement completion for the .await syntax | Evgenii P | 2019-08-02 | 1 | -1/+15 | |
| | ||||||
* | Move assist test, add literal type inference test | Phil Ellison | 2019-07-29 | 1 | -11/+15 | |
| | ||||||
* | Merge #1570 | bors[bot] | 2019-07-21 | 1 | -4/+2 | |
|\ | | | | | | | | | | | | | | | 1570: switch to upstream rowan's API r=matklad a=matklad Co-authored-by: Aleksey Kladov <[email protected]> | |||||
| * | streamline API | Aleksey Kladov | 2019-07-21 | 1 | -4/+2 | |
| | | ||||||
* | | provide completion in struct patterns | Ekaterina Babshukova | 2019-07-21 | 1 | -7/+15 | |
|/ | ||||||
* | Merge #1562 | bors[bot] | 2019-07-20 | 2 | -0/+76 | |
|\ | | | | | | | | | | | | | | | | | 1562: Continue support for .await r=matklad a=unrealhoang - add await expr to ast and HIR Expr - infer type for `.await` Co-authored-by: Unreal Hoang <[email protected]> | |||||
| * | infer type for await | Unreal Hoang | 2019-07-20 | 2 | -2/+75 | |
| | | | | | | | | by projecting inner_ty to Future::Output alias | |||||
| * | add await expr to ast | Unreal Hoang | 2019-07-20 | 1 | -0/+3 | |
| | | ||||||
* | | rename range -> text_range | Aleksey Kladov | 2019-07-20 | 1 | -1/+1 | |
|/ | ||||||
* | migrate ra_hir to the new rowan | Aleksey Kladov | 2019-07-19 | 1 | -5/+5 | |
| | ||||||
* | Switch to Chalk master, without fuel | Florian Diebold | 2019-07-15 | 1 | -1/+1 | |
| | ||||||
* | Remove blacklist, instead mark `Sized` as non-enumerable | Florian Diebold | 2019-07-15 | 1 | -17/+3 | |
| | | | | | This seems to be enough to prevent hanging in rust-analyzer, Chalk and the rustc repo. | |||||
* | Cargo update, including updating Chalk | Florian Diebold | 2019-07-14 | 1 | -0/+2 | |
| | ||||||
* | Have InferenceContext contain an InferenceResult instead of duplicating all ↵ | Florian Diebold | 2019-07-14 | 1 | -36/+19 | |
| | | | | fields | |||||
* | Some renamings for clarity | Florian Diebold | 2019-07-14 | 6 | -19/+22 | |
| | ||||||
* | complete fields in enum variants | Ekaterina Babshukova | 2019-07-12 | 1 | -0/+15 | |
| | ||||||
* | fix profile name | Aleksey Kladov | 2019-07-09 | 1 | -1/+1 | |
| | ||||||
* | Merge #1515 | bors[bot] | 2019-07-09 | 8 | -106/+281 | |
|\ | | | | | | | | | | | | | | | | | | | | | | | 1515: Trait environment r=matklad a=flodiebold This adds the environment, i.e. the set of `where` clauses in scope, when solving trait goals. That means that e.g. in ```rust fn foo<T: SomeTrait>(t: T) {} ``` , we are able to complete methods of `SomeTrait` on the `t`. This affects the trait APIs quite a bit (since every method that needs to be able to solve for some trait needs to get this environment somehow), so I thought I'd do it rather sooner than later ;) Co-authored-by: Florian Diebold <[email protected]> | |||||
| * | Unify `normalize` and `implements` to simplify code | Florian Diebold | 2019-07-08 | 6 | -94/+62 | |
| | | ||||||
| * | Use environment for associated type normalization as well | Florian Diebold | 2019-07-08 | 6 | -19/+51 | |
| | | ||||||
| * | Start handling environment in trait resolution | Florian Diebold | 2019-07-08 | 6 | -14/+103 | |
| | | | | | | | | | | I.e. if we are inside a function with some where clauses, we assume these where clauses hold. | |||||
| * | Refactor a bit & introduce Environment struct | Florian Diebold | 2019-07-08 | 5 | -19/+105 | |
| | | ||||||
* | | Merge #1512 | bors[bot] | 2019-07-09 | 2 | -17/+103 | |
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1512: Infer ? operator r=unrealhoang a=unrealhoang Logical continuation of https://github.com/rust-analyzer/rust-analyzer/pull/1501 cc https://github.com/rust-analyzer/rust-analyzer/issues/1426 Co-authored-by: Unreal Hoang <[email protected]> |