Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | Merge #982 | bors[bot] | 2019-03-17 | 1 | -0/+54 |
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 982: Implement BindingMode for pattern matching. r=flodiebold a=mjkillough Implement `BindingMode` for pattern matching, so that types can be correctly inferred using match ergonomics. The binding mode defaults to `Move` (referred to as 'BindingMode::BindByValue` in rustc), and is updated by automatic dereferencing of the value being matched. Fixes #888. - [Binding modes in The Reference](https://doc.rust-lang.org/reference/patterns.html#binding-modes) - [`rustc` implementation](https://github.com/rust-lang/rust/blob/e17c48e2f21eefd59748e364234efc7037a3ec96/src/librustc_typeck/check/_match.rs#L77) (and [definition of `BindingMode`](https://github.com/rust-lang/rust/blob/e957ed9d10ec589bdd523b88b4b44c41b1ecf763/src/librustc/ty/binding.rs)) - [Match Ergonomics RFC](https://github.com/rust-lang/rfcs/blob/master/text/2005-match-ergonomics.md#binding-mode-rules) Co-authored-by: Michael Killough <[email protected]> | ||||
| * | Split test case and use tested_by!. | Michael Killough | 2019-03-17 | 1 | -76/+99 |
| | | |||||
| * | Implement BindingMode for pattern matching. | Michael Killough | 2019-03-16 | 1 | -45/+76 |
| | | | | | | | | | | | | | | Implement `BindingMode` for pattern matching, so that types can be correctly inferred using match ergonomics. The binding mode defaults to `Move` (referred to as 'BindingMode::BindByValue` in rustc), and is updated by automatic dereferencing of the value being matched. | ||||
* | | Replace Display by a pretty printing trait for Ty | Florian Diebold | 2019-03-16 | 1 | -2/+3 |
|/ | | | | | This allows removing the names from Adt and FnDef (and more later), as a first step towards aligning more with chalk's Ty :) | ||||
* | Inline type inference test snapshots | Florian Diebold | 2019-03-03 | 1 | -244/+1096 |
| | |||||
* | Add a bunch of tests for type inference involving traits | Florian Diebold | 2019-03-02 | 1 | -0/+235 |
| | | | | None of them works correctly yet, of course. | ||||
* | rename syntax-mapping -> source-map | Aleksey Kladov | 2019-03-02 | 1 | -5/+5 |
| | |||||
* | Add const type inference | Ville Penttinen | 2019-02-25 | 1 | -0/+37 |
| | |||||
* | Add test for recursive type aliases | Florian Diebold | 2019-02-24 | 1 | -0/+14 |
| | |||||
* | Implement support for type aliases | Florian Diebold | 2019-02-24 | 1 | -0/+21 |
| | |||||
* | Refactor associated method resolution a bit and make it work with generics | Florian Diebold | 2019-02-23 | 1 | -1/+0 |
| | |||||
* | Fix resolution of associated method calls across crates | Florian Diebold | 2019-02-23 | 1 | -2/+39 |
| | | | | | | 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 | -0/+134 |
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | 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]> | ||||
| * | Ignore failing test for now | Ville Penttinen | 2019-02-21 | 1 | -0/+1 |
| | | |||||
| * | Implement basic support for Associated Methods and Constants | Ville Penttinen | 2019-02-21 | 1 | -0/+133 |
| | | | | | | | | | | | | | | 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. | ||||
* | | Fix handling of generics in tuple variants and refactor a bit | Florian Diebold | 2019-02-20 | 1 | -0/+21 |
|/ | | | | | | Also make them display a tiny bit nicer. Fixes #860. | ||||
* | handle != operator | Aleksey Kladov | 2019-02-18 | 1 | -0/+1 |
| | |||||
* | Unify with the autorefed/autoderefed receiver type during method resolution | Florian Diebold | 2019-02-17 | 1 | -0/+20 |
| | |||||
* | Add a test for impl generics | Florian Diebold | 2019-02-16 | 1 | -0/+32 |
| | |||||
* | Fix another crash | Florian Diebold | 2019-02-12 | 1 | -0/+19 |
| | |||||
* | Add comment and mark | Florian Diebold | 2019-02-09 | 1 | -0/+1 |
| | |||||
* | Fix another crash, and try harder to prevent stack overflows | Florian Diebold | 2019-02-09 | 1 | -0/+25 |
| | |||||
* | Fix another crash found when analyzing rustc | Florian Diebold | 2019-02-09 | 1 | -0/+15 |
| | |||||
* | Fix handling of literal patterns | Florian Diebold | 2019-02-09 | 1 | -0/+15 |
| | | | | | Wrap them in a LiteralPat node so they can be distinguished from literal expressions. | ||||
* | Fix two crashes found by running inference on all of rustc | Florian Diebold | 2019-02-09 | 1 | -0/+33 |
| | |||||
* | reformat the world | Aleksey Kladov | 2019-02-08 | 1 | -7/+2 |
| | |||||
* | Test more Self inference | kjeremy | 2019-02-04 | 1 | -0/+6 |
| | |||||
* | Merge #701 | bors[bot] | 2019-01-30 | 1 | -1/+3 |
|\ | | | | | | | | | | | | | | | | | | | 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]> | ||||
| * | Add test for passing on ref expectations | Marcus Klaas de Vries | 2019-01-30 | 1 | -0/+1 |
| | | |||||
| * | Infer type of match guard | Marcus Klaas de Vries | 2019-01-28 | 1 | -1/+2 |
| | | |||||
* | | Added support for primitive types type inference when using std::ops::Not | WizardOfMenlo | 2019-01-28 | 1 | -0/+5 |
| | | |||||
* | | Process second review | Marcus Klaas de Vries | 2019-01-27 | 1 | -4/+2 |
| | | |||||
* | | Use type information from the turbofish | Marcus Klaas de Vries | 2019-01-27 | 1 | -0/+3 |
| | | |||||
* | | First attempt at generic type inference for fns | Marcus Klaas de Vries | 2019-01-27 | 1 | -0/+22 |
|/ | |||||
* | Add marks | Florian Diebold | 2019-01-26 | 1 | -0/+5 |
| | |||||
* | Handle cycles in type vars | Florian Diebold | 2019-01-26 | 1 | -0/+27 |
| | | | | This might be the cause of #587. | ||||
* | fix AST for if expressions | Aleksey Kladov | 2019-01-26 | 1 | -0/+17 |
| | | | | then is not always a block... | ||||
* | rename source_file -> parse | Aleksey Kladov | 2019-01-26 | 1 | -1/+1 |
| | |||||
* | rename FilesDatabase -> SourceDatabase | Aleksey Kladov | 2019-01-26 | 1 | -1/+1 |
| | |||||
* | fold syntax database into files database | Aleksey Kladov | 2019-01-26 | 1 | -1/+1 |
| | |||||
* | Fix type inference of binops on int/float variables | Florian Diebold | 2019-01-25 | 1 | -0/+13 |
| | | | | Fixes #651. | ||||
* | move SyntaxPtr to ra_syntax | Aleksey Kladov | 2019-01-23 | 1 | -1/+1 |
| | |||||
* | Use insta for ty tests | Florian Diebold | 2019-01-21 | 1 | -47/+29 |
| | |||||
* | Fix panic trying to get substs on unknown type | Florian Diebold | 2019-01-21 | 1 | -0/+16 |
| | | | | Fixes #585. | ||||
* | Fix panic on inferring field access on an enum | Florian Diebold | 2019-01-20 | 1 | -0/+14 |
| | |||||
* | Make generics work in struct patterns | Florian Diebold | 2019-01-19 | 1 | -0/+26 |
| | |||||
* | Add some tests | Florian Diebold | 2019-01-19 | 1 | -0/+63 |
| | |||||
* | Fixup annotated bindings | Marcus Klaas de Vries | 2019-01-19 | 1 | -1/+5 |
| | |||||
* | Add initial (flawed) implementation of binding annotations | Marcus Klaas de Vries | 2019-01-19 | 1 | -0/+4 |
| | |||||
* | Infer pattern types for lambdas and loops | Marcus Klaas de Vries | 2019-01-19 | 1 | -0/+10 |
| |