Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | 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... | ||||
* | A bit of cleanup in ty.rs | Florian Diebold | 2019-03-02 | 1 | -28/+1 |
| | |||||
* | Split ty.rs into several modules | Florian Diebold | 2019-02-23 | 1 | -1450/+18 |
| | | | | | | | | | It was just getting too big. We now have: - ty: the `Ty` enum and helpers - ty::infer: actual type inference - ty::lower: lowering from HIR to `Ty` - ty::op: helpers for binary operations, currently | ||||
* | Fix resolution of associated method calls across crates | Florian Diebold | 2019-02-23 | 1 | -0/+9 |
| | | | | | | I think it'll be better to make the path resolution the number of unresolved segments, not the first unresolved index; then this error could simply not have happened. But I'll do that separately. | ||||
* | Merge #866 | bors[bot] | 2019-02-22 | 1 | -6/+46 |
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | 866: Implement basic support for Associated Methods r=flodiebold a=vipentti This is my attempt at learning to understand how the type inference works by adding basic support for associated methods. Currently it does not resolve associated types or constants. The basic idea is that `Resolver::resolve_path` returns a new `PathResult` type, which has two variants, `FullyResolved` and `PartiallyResolved`, fully resolved matches the previous behavior, where as `PartiallyResolved` contains the `PerNs<Resolution` in addition to a `segment_index` which contains the index of the segment which we failed to resolve. This index can then be used to continue inference in `infer_path_expr` using the `Type` we managed to resolve. This changes some of the previous apis, so looking for feedback and suggestions. This should enable fixing #832 Co-authored-by: Ville Penttinen <[email protected]> | ||||
| * | Change resolve_path to return the fully resolved path or PerNs::none | Ville Penttinen | 2019-02-22 | 1 | -20/+19 |
| | | | | | | | | | | | | This also adds new pub(crate) resolve_path_segments which returns the PathResult, which may or may not be fully resolved. PathResult is also now pub(crate) since it is an implementation detail. | ||||
| * | Remove Const inference for now, refactor PathResult | Ville Penttinen | 2019-02-21 | 1 | -36/+19 |
| | | |||||
| * | Implement basic support for Associated Methods and Constants | Ville Penttinen | 2019-02-21 | 1 | -25/+83 |
| | | | | | | | | | | | | | | This is done in `infer_path_expr`. When `Resolver::resolve_path` returns `PartiallyResolved`, we use the returned `Resolution` together with the given `segment_index` to check if we can find something matching the segment at segment_index in the impls for that particular type. | ||||
* | | Add an assert (and fix the other) | Florian Diebold | 2019-02-21 | 1 | -1/+2 |
| | | |||||
* | | Fix handling of generics in tuple variants and refactor a bit | Florian Diebold | 2019-02-20 | 1 | -38/+45 |
|/ | | | | | | Also make them display a tiny bit nicer. Fixes #860. | ||||
* | Merge #852 | bors[bot] | 2019-02-18 | 1 | -0/+1 |
|\ | | | | | | | | | | | | | | | 852: Handle != r=flodiebold a=matklad r? @flodiebold Co-authored-by: Aleksey Kladov <[email protected]> | ||||
| * | handle != operator | Aleksey Kladov | 2019-02-18 | 1 | -0/+1 |
| | |