Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | Handle impl/dyn Trait in method resolution | Florian Diebold | 2019-08-22 | 3 | -32/+79 |
| | | | | | | | | | | | | | 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 | 6 | -41/+339 |
| | | | | | | | - 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 | 2 | -0/+37 |
| | | | | closes #1709 | ||||
* | remove ast::*Kind from hir | Aleksey Kladov | 2019-08-19 | 6 | -83/+86 |
| | |||||
* | implement initial type inference for index expressions | Aleksey Kladov | 2019-08-17 | 3 | -1/+33 |
| | |||||
* | normalize ordering ops | Aleksey Kladov | 2019-08-17 | 2 | -26/+36 |
| | |||||
* | Introduce separate hir::BinaryOp | Aleksey Kladov | 2019-08-17 | 3 | -69/+96 |
| | | | | | 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 | 2 | -1/+3 |
| | | |||||
* | | switch from volatile to untracked read | Aleksey Kladov | 2019-08-15 | 2 | -22/+41 |
|/ | |||||
* | 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 | 2 | -4/+18 |
| | |||||
* | Normalize associated types during inference | Florian Diebold | 2019-08-12 | 3 | -9/+25 |
| | |||||
* | Lower fully qualified associated type paths | Florian Diebold | 2019-08-12 | 3 | -23/+117 |
| | | | | I.e. `<T as Trait>::Foo`. | ||||
* | Add representations of associated types | Florian Diebold | 2019-08-12 | 3 | -0/+113 |
| | | | | | | | | | | | | 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 |
| | |||||
* | Use Source in Diagnostic and implement | Evgenii P | 2019-08-12 | 1 | -23/+15 |
| | |||||
* | implement while let desugaring | Aleksey Kladov | 2019-08-07 | 3 | -14/+47 |
| | |||||
* | refactor if-let lowering | Aleksey Kladov | 2019-08-07 | 1 | -19/+25 |
| | | | | mainly to get rid of unwraps | ||||
* | refactor if lowering | Aleksey Kladov | 2019-08-07 | 1 | -17/+14 |
| | |||||
* | Merge #1634 | bors[bot] | 2019-08-04 | 2 | -2/+47 |
|\ | | | | | | | | | | | | | | | | | | | 1634: Implement .await completion for futures r=flodiebold a=eupn Closes #1263 with completion for `.await` syntax for types that are implementing `std::future::Future` trait. r? @flodiebold Co-authored-by: Evgenii P <[email protected]> | ||||
| * | rustfmt | Evgenii P | 2019-08-04 | 1 | -3/+1 |
| | | |||||
| * | Idiomatic return | Evgenii P | 2019-08-04 | 1 | -1/+1 |
| | | |||||
| * | Employ early return pattern more | Evgenii P | 2019-08-04 | 1 | -10/+8 |
| | | |||||
| * | source_binder.rs: fix order of imports | Evgenii P | 2019-08-04 | 1 | -9/+10 |
| | | |||||
| * | Use std::future::Future trait from stdlib | Evgenii P | 2019-08-03 | 1 | -21/+36 |
| | | |||||
| * | 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 |
| | | |||||
| * | Use future lang item instead of hardcoded std::future::Future | Evgenii P | 2019-08-02 | 1 | -31/+10 |
| | | |||||
| * | rustfmt | Evgenii P | 2019-08-02 | 2 | -13/+22 |
| | | |||||
| * | Implement completion for the .await syntax | Evgenii P | 2019-08-02 | 2 | -1/+52 |
| | | |||||
* | | Resolve out of line modules inside inline module with attribute path | Alexander Andreev | 2019-08-03 | 3 | -28/+70 |
|/ | | | | | Fixed #1510 Fixed #1529 | ||||
* | Merge #1604 | bors[bot] | 2019-07-29 | 1 | -11/+15 |
|\ | | | | | | | | | | | | | | | 1604: Fix failing type interference for floating point literal r=matklad a=theotherphil Fixes https://github.com/rust-analyzer/rust-analyzer/issues/1592 Co-authored-by: Phil Ellison <[email protected]> | ||||
| * | Move assist test, add literal type inference test | Phil Ellison | 2019-07-29 | 1 | -11/+15 |
| | | |||||
* | | Fixed request changes. | Alexander Andreev | 2019-07-29 | 1 | -9/+19 |
| | | |||||
* | | Added resolve modules inside inline module | Alexander Andreev | 2019-07-29 | 2 | -54/+147 |
|/ | | | | #1510 | ||||
* | show local variable types in completion | Ekaterina Babshukova | 2019-07-23 | 1 | -0/+8 |
| | |||||
* | 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 | 3 | -10/+23 |
|/ | |||||
* | Merge #1562 | bors[bot] | 2019-07-20 | 4 | -0/+87 |
|\ | | | | | | | | | | | | | | | | | 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 | 3 | -2/+78 |
| | | | | | | | | by projecting inner_ty to Future::Output alias | ||||
| * | add await expr to ast | Unreal Hoang | 2019-07-20 | 2 | -0/+11 |
| | | |||||
* | | rename range -> text_range | Aleksey Kladov | 2019-07-20 | 3 | -3/+3 |
| | | |||||
* | | move debug_dump to fmt::Debug | Aleksey Kladov | 2019-07-20 | 1 | -1/+1 |
|/ | |||||
* | flip syntax text to use internal iteration | Aleksey Kladov | 2019-07-19 | 1 | -1/+10 |
| | |||||
* | minor | Aleksey Kladov | 2019-07-19 | 1 | -5/+1 |
| | |||||
* | cleanup casts | Aleksey Kladov | 2019-07-19 | 2 | -9/+11 |
| |