Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | Use traits from where clauses for method resolution | Florian Diebold | 2019-09-07 | 3 | -12/+32 |
| | | | | | E.g. if we have `T: some::Trait`, we can call methods from that trait without it needing to be in scope. | ||||
* | Lower `Fn(X, Y) -> Z` paths | Florian Diebold | 2019-09-07 | 1 | -8/+8 |
| | |||||
* | Lower bounds on trait definition, and resolve assoc types from super traits | Florian Diebold | 2019-09-07 | 5 | -23/+26 |
| | |||||
* | Add some more tests | Florian Diebold | 2019-09-07 | 1 | -0/+205 |
| | |||||
* | Make type walking infrastructure a bit nicer | Florian Diebold | 2019-09-03 | 6 | -19/+9 |
| | | | | | If/when we switch to using Chalk's Ty, we'll need to replace this by its `Fold` trait, but I didn't want to import the whole thing just yet. | ||||
* | Properly format `impl Trait<Type = Foo>` types | Florian Diebold | 2019-09-03 | 1 | -4/+4 |
| | | | | | | It's a bit complicated because we basically have to 'undo' the desugaring, and the result is very dependent on the specifics of the desugaring and will probably produce weird results otherwise. | ||||
* | Add support for associated type bindings (`where Trait<Type = X>`) | Florian Diebold | 2019-09-03 | 4 | -46/+135 |
| | |||||
* | Add test for assoc type bindings | Florian Diebold | 2019-09-03 | 1 | -0/+65 |
| | |||||
* | Correctly build BodySourceMap for macro-expanded expressions | Aleksey Kladov | 2019-09-03 | 1 | -8/+25 |
| | |||||
* | clearer ignore | Aleksey Kladov | 2019-09-03 | 1 | -1/+1 |
| | |||||
* | remove needless refs | Aleksey Kladov | 2019-09-03 | 1 | -2/+2 |
| | |||||
* | use recrod terminology for hir::Pat | Aleksey Kladov | 2019-09-03 | 1 | -2/+2 |
| | |||||
* | fix hir for new block syntax | Aleksey Kladov | 2019-09-02 | 1 | -1/+1 |
| | |||||
* | Add an expr_source method analogous to the source methods in the code model | Florian Diebold | 2019-09-02 | 1 | -2/+2 |
| | | | | ... and use that instead of exposing the source map. | ||||
* | :arrow_up: insta | Aleksey Kladov | 2019-08-29 | 1 | -1167/+1265 |
| | |||||
* | Small fixes | Kirill Bulatov | 2019-08-26 | 1 | -12/+9 |
| | |||||
* | Remove redundant tests | Kirill Bulatov | 2019-08-26 | 1 | -63/+5 |
| | |||||
* | Make infer_block not unify; add back calculate_least_upper_bound | Florian Diebold | 2019-08-26 | 2 | -30/+66 |
| | |||||
* | An attempt to add the coercion logic for Never | Kirill Bulatov | 2019-08-26 | 2 | -51/+98 |
| | |||||
* | Properly coerce never types | Kirill Bulatov | 2019-08-26 | 2 | -51/+46 |
| | |||||
* | Remove extra inference test | Kirill Bulatov | 2019-08-26 | 2 | -25/+0 |
| | |||||
* | Fix never in if expressions | Kirill Bulatov | 2019-08-26 | 2 | -4/+51 |
| | |||||
* | 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 |
| |