Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | 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 |
| | | |||||
* | | Handle tuple structs / enum variants properly in type inference | Florian Diebold | 2019-02-17 | 1 | -21/+75 |
|/ | |||||
* | Unify with the autorefed/autoderefed receiver type during method resolution | Florian Diebold | 2019-02-17 | 1 | -7/+11 |
| | |||||
* | Handle generic args for method calls | Florian Diebold | 2019-02-16 | 1 | -4/+34 |
| | |||||
* | Handle impl generics in method calls | Florian Diebold | 2019-02-16 | 1 | -5/+10 |
| | |||||
* | Fix another crash | Florian Diebold | 2019-02-12 | 1 | -2/+2 |
| | |||||
* | Spell cases explicitly in Ty::walk{_mut} | Florian Diebold | 2019-02-10 | 1 | -2/+18 |
| | |||||
* | Add an ra_cli command that analyses all crates in the current workspace | Florian Diebold | 2019-02-10 | 1 | -0/+35 |
| | | | | ... and prints various stats about how many expressions have a type etc. | ||||
* | Add comment and mark | Florian Diebold | 2019-02-09 | 1 | -2/+8 |
| | |||||
* | Fix another crash, and try harder to prevent stack overflows | Florian Diebold | 2019-02-09 | 1 | -7/+20 |
| | |||||
* | Fix two crashes found by running inference on all of rustc | Florian Diebold | 2019-02-09 | 1 | -15/+24 |
| | |||||
* | reformat the world | Aleksey Kladov | 2019-02-08 | 1 | -187/+62 |
| | |||||
* | Some clippy cleanups | kjeremy | 2019-02-06 | 1 | -4/+4 |
| | |||||
* | Make the Resolution variants tuple variants | Florian Diebold | 2019-02-01 | 1 | -9/+9 |
| | |||||
* | Use new Resolver API in type inference | Florian Diebold | 2019-02-01 | 1 | -157/+113 |
| | |||||
* | split HirDatabase api | csmoe | 2019-02-01 | 1 | -1/+1 |
| | |||||
* | Merge #701 | bors[bot] | 2019-01-30 | 1 | -3/+13 |
|\ | | | | | | | | | | | | | | | | | | | 701: Minor type inference tweaks r=flodiebold a=marcusklaas Pass down expectation for reference expressions and type the guard in match expressions. I wasn't able to add a test for the former addition because the type variable previously introduced would always resolve to the right type in the things I tried! Co-authored-by: Marcus Klaas de Vries <[email protected]> | ||||
| * | Infer type of match guard | Marcus Klaas de Vries | 2019-01-28 | 1 | -3/+13 |
| | | |||||
* | | Rename FnScopes -> ExprScopes | Florian Diebold | 2019-01-30 | 1 | -4/+4 |
| | | | | | | | | | | The reason for this is that it describes scopes for any body expression, not just that of a function. It did not actually refer to functions at all anymore. | ||||
* | | Use match-all instead of individual branches | WizardOfMenlo | 2019-01-28 | 1 | -5/+1 |
| | | |||||
* | | Added support for primitive types type inference when using std::ops::Not | WizardOfMenlo | 2019-01-28 | 1 | -3/+11 |
| | | |||||
* | | Process second review | Marcus Klaas de Vries | 2019-01-27 | 1 | -35/+28 |
| | | |||||
* | | Use type information from the turbofish | Marcus Klaas de Vries | 2019-01-27 | 1 | -6/+28 |
| | | |||||
* | | Add a FnSig to Ty::FnDef | Marcus Klaas de Vries | 2019-01-27 | 1 | -38/+64 |
| | | |||||
* | | Address some issues flagged in review | Marcus Klaas de Vries | 2019-01-27 | 1 | -25/+18 |
| | | |||||
* | | Add type params to FnSignature | Marcus Klaas de Vries | 2019-01-27 | 1 | -81/+45 |
| | | |||||
* | | Initial implementation of generics for method calls | Marcus Klaas de Vries | 2019-01-27 | 1 | -13/+68 |
| | | |||||
* | | First attempt at generic type inference for fns | Marcus Klaas de Vries | 2019-01-27 | 1 | -12/+49 |
|/ | |||||
* | Add marks | Florian Diebold | 2019-01-26 | 1 | -0/+4 |
| | |||||
* | Handle cycles in type vars | Florian Diebold | 2019-01-26 | 1 | -9/+24 |
| | | | | This might be the cause of #587. | ||||
* | Fix type inference of binops on int/float variables | Florian Diebold | 2019-01-25 | 1 | -1/+4 |
| | | | | Fixes #651. | ||||
* | add ability to get strcut field source | Aleksey Kladov | 2019-01-25 | 1 | -23/+4 |
| | |||||
* | remember where fields resolve to during inference | Aleksey Kladov | 2019-01-25 | 1 | -9/+19 |
| | |||||
* | use positional ids for fields | Aleksey Kladov | 2019-01-25 | 1 | -52/+38 |
| | |||||
* | move adt to adt | Aleksey Kladov | 2019-01-24 | 1 | -18/+1 |
| | |||||
* | ModuleDef is Def-free | Aleksey Kladov | 2019-01-24 | 1 | -1/+0 |
| | |||||
* | Migrate trait & type to new ids | Aleksey Kladov | 2019-01-24 | 1 | -1/+3 |
| | |||||
* | move consts&statics to new id | Aleksey Kladov | 2019-01-24 | 1 | -1/+4 |
| | |||||
* | removed untyped typabledef | Aleksey Kladov | 2019-01-24 | 1 | -26/+3 |
| | |||||
* | move enum variant to the new API | Aleksey Kladov | 2019-01-24 | 1 | -73/+48 |
| | |||||
* | macro-generate froms | Aleksey Kladov | 2019-01-24 | 1 | -36/+3 |
| | |||||
* | kill unused defs | Aleksey Kladov | 2019-01-24 | 1 | -5/+0 |
| | |||||
* | migrate enums to new id | Aleksey Kladov | 2019-01-24 | 1 | -31/+59 |
| |