Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | Upgrade Chalk | Florian Diebold | 2019-09-14 | 1 | -45/+0 |
| | | | | ... and remove Ty::UnselectedProjection. It'll be handled differently. | ||||
* | rename AdtDef -> Adt | Aleksey Kladov | 2019-09-12 | 1 | -6/+6 |
| | |||||
* | Make type walking infrastructure a bit nicer | Florian Diebold | 2019-09-03 | 1 | -113/+120 |
| | | | | | 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 | -19/+93 |
| | | | | | | 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 | 1 | -0/+33 |
| | |||||
* | Handle impl/dyn Trait in method resolution | Florian Diebold | 2019-08-22 | 1 | -0/+13 |
| | | | | | | | | | | | | | 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 | 1 | -10/+110 |
| | | | | | | | - 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 | ||||
* | Improve debug logging a bit | Florian Diebold | 2019-08-12 | 1 | -0/+14 |
| | |||||
* | Add representations of associated types | Florian Diebold | 2019-08-12 | 1 | -0/+86 |
| | | | | | | | | | | | | 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`. | ||||
* | provide completion in struct patterns | Ekaterina Babshukova | 2019-07-21 | 1 | -1/+1 |
| | |||||
* | Some renamings for clarity | Florian Diebold | 2019-07-14 | 1 | -1/+1 |
| | |||||
* | Unify `normalize` and `implements` to simplify code | Florian Diebold | 2019-07-08 | 1 | -1/+1 |
| | |||||
* | Refactor a bit & introduce Environment struct | Florian Diebold | 2019-07-08 | 1 | -1/+1 |
| | |||||
* | Add trait obligations for where clauses when calling functions/methods | Florian Diebold | 2019-07-06 | 1 | -2/+2 |
| | | | | | E.g. if we call `foo<T: Into<u32>>(x)`, that adds an obligation that `x: Into<u32>`, etc. | ||||
* | allow rustfmt to reorder imports | Aleksey Kladov | 2019-07-04 | 1 | -5/+8 |
| | | | | | | This wasn't a right decision in the first place, the feature flag was broken in the last rustfmt release, and syntax highlighting of imports is more important anyway | ||||
* | Simplifications / cleanup from review | Florian Diebold | 2019-06-16 | 1 | -0/+1 |
| | |||||
* | Somewhat handle variables in the derefed type, and add another test | Florian Diebold | 2019-06-15 | 1 | -0/+11 |
| | |||||
* | Implement autoderef using the Deref trait | Florian Diebold | 2019-06-15 | 1 | -2/+3 |
| | | | | - add support for other lang item targets, since we need the Deref lang item | ||||
* | Add basic infrastructure for assoc type projection | Florian Diebold | 2019-06-15 | 1 | -1/+10 |
| | |||||
* | Fix clippy::or_fun_call | Alan Du | 2019-06-04 | 1 | -1/+1 |
| | |||||
* | add union to code_model | Aleksey Kladov | 2019-05-23 | 1 | -0/+1 |
| | |||||
* | profile type inference | Aleksey Kladov | 2019-05-21 | 1 | -1/+1 |
| | |||||
* | Add infer for generic default type | Edwin Cheng | 2019-05-19 | 1 | -1/+1 |
| | |||||
* | Handle where clauses in trait solving | Florian Diebold | 2019-05-11 | 1 | -1/+30 |
| | |||||
* | Add a HirDisplay implementation for TraitRef | Florian Diebold | 2019-05-07 | 1 | -0/+17 |
| | |||||
* | Turn `implements` into a query again | Florian Diebold | 2019-05-07 | 1 | -1/+1 |
| | |||||
* | Differentiate Tuple / FnPtr type constructors by cardinality | Florian Diebold | 2019-05-04 | 1 | -7/+9 |
| | | | | | This is necessary because Chalk (reasonably) expects each 'struct' to know how many type parameters it takes. | ||||
* | Simplify subst / subst_bound_vars a bit | Florian Diebold | 2019-05-04 | 1 | -12/+2 |
| | |||||
* | Canonicalize before doing method resolution | Florian Diebold | 2019-05-04 | 1 | -0/+11 |
| | |||||
* | Implement Deref<Target=[Ty]> for Substs | Florian Diebold | 2019-05-04 | 1 | -17/+18 |
| | |||||
* | Chalk integration | Florian Diebold | 2019-05-04 | 1 | -1/+48 |
| | | | | | - add proper canonicalization logic - add conversions from/to Chalk IR | ||||
* | Add Ty::Bound variant for use in Chalk integration | Florian Diebold | 2019-05-04 | 1 | -2/+7 |
| | |||||
* | Make callable signature handling a bit nicer | Florian Diebold | 2019-04-14 | 1 | -0/+22 |
| | |||||
* | More trait infrastructure | Florian Diebold | 2019-04-14 | 1 | -0/+11 |
| | | | | | | | | | | - make it possible to get parent trait from method - add 'obligation' machinery for checking that a type implements a trait (and inferring facts about type variables from that) - handle type parameters of traits (to a certain degree) - improve the hacky implements check to cover enough cases to exercise the handling of traits with type parameters - basic canonicalization (will probably also be done by Chalk) | ||||
* | Make call info to use real name resolution | Aleksey Kladov | 2019-04-11 | 1 | -2/+12 |
| | |||||
* | Added ArrayExprKind, | Lenard Pratt | 2019-04-07 | 1 | -1/+1 |
| | | | | | changed the display for fixed array types, Added Array Enum to ra_hir/expr | ||||
* | Added inference of array length | Lenard Pratt | 2019-04-07 | 1 | -1/+5 |
| | |||||
* | Implement a very naive implements check | Florian Diebold | 2019-03-25 | 1 | -4/+19 |
| | | | | ... to make the infer_trait_method_simple test have the correct result. | ||||
* | Assert in apply_substs that the number of parameters doesn't change | Florian Diebold | 2019-03-21 | 1 | -1/+6 |
| | | | | ... and fix a small bug revealed by that. | ||||
* | Rename name field to ctor as well | Florian Diebold | 2019-03-21 | 1 | -14/+14 |
| | |||||
* | Some more doc comments | Florian Diebold | 2019-03-21 | 1 | -2/+12 |
| | |||||
* | TypeName => TypeCtor | Florian Diebold | 2019-03-21 | 1 | -24/+24 |
| | |||||
* | Remove the old variants replaced by Ty::Apply | Florian Diebold | 2019-03-21 | 1 | -197/+41 |
| | |||||
* | Add Ty::Apply | Florian Diebold | 2019-03-21 | 1 | -1/+177 |
| | |||||
* | Represent FnPtr and Tuple using Substs | Florian Diebold | 2019-03-21 | 1 | -15/+19 |
| | |||||
* | Remove FnSig from FnDef type | Florian Diebold | 2019-03-16 | 1 | -12/+6 |
| | | | | | It doesn't need to be in there since it's just information from the def. Another step towards aligning Ty with Chalk's representation. | ||||
* | Refactor FnSig a bit | Florian Diebold | 2019-03-16 | 1 | -34/+47 |
| | |||||
* | Some more Ty displaying cleanup | Florian Diebold | 2019-03-16 | 1 | -2/+2 |
| | |||||
* | Replace Display by a pretty printing trait for Ty | Florian Diebold | 2019-03-16 | 1 | -34/+60 |
| | | | | | This allows removing the names from Adt and FnDef (and more later), as a first step towards aligning more with chalk's Ty :) | ||||
* | Represent unknown types as {unknown} instead of [unknown] | Florian Diebold | 2019-03-03 | 1 | -1/+1 |
| | | | | Since the latter could actually be a real type... |