Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | Merge #897 | bors[bot] | 2019-02-25 | 11 | -20/+206 |
|\ | | | | | | | | | | | | | | | | | | | 897: Add basic const/static type inference r=flodiebold a=vipentti This adds basic const/static type inference discussed in #887. Currently the inference does not work for const/static declared inside a block. In addition the inference does not work inside the bodies of const/static. Co-authored-by: Ville Penttinen <[email protected]> | ||||
| * | Move ConstSignature creation to a single method | Ville Penttinen | 2019-02-25 | 1 | -17/+13 |
| | | |||||
| * | Add static type inference | Ville Penttinen | 2019-02-25 | 6 | -12/+54 |
| | | |||||
| * | Add const type inference | Ville Penttinen | 2019-02-25 | 11 | -20/+168 |
| | | |||||
* | | rename type to type_alias in the AST as well | Aleksey Kladov | 2019-02-25 | 4 | -6/+9 |
|/ | |||||
* | Rename Type => TypeAlias | Florian Diebold | 2019-02-24 | 9 | -40/+54 |
| | |||||
* | Add test for recursive type aliases | Florian Diebold | 2019-02-24 | 1 | -0/+14 |
| | |||||
* | Implement support for type aliases | Florian Diebold | 2019-02-24 | 8 | -11/+102 |
| | |||||
* | introduce completion presentation | Aleksey Kladov | 2019-02-24 | 1 | -1/+1 |
| | | | | | This module should remove completion rendering boilerplate from the "brains" of completion engine. | ||||
* | Clean up imports a bit | Florian Diebold | 2019-02-24 | 2 | -6/+4 |
| | |||||
* | Refactor associated method resolution a bit and make it work with generics | Florian Diebold | 2019-02-23 | 4 | -64/+98 |
| | |||||
* | Split ty.rs into several modules | Florian Diebold | 2019-02-23 | 5 | -1450/+1500 |
| | | | | | | | | | 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 | 3 | -3/+53 |
| | | | | | | 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 | 9 | -31/+410 |
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | 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 | 3 | -34/+36 |
| | | | | | | | | | | | | 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. | ||||
| * | Ignore failing test for now | Ville Penttinen | 2019-02-21 | 1 | -0/+1 |
| | | |||||
| * | Make nameres::ResolvePathResult private and refactor | Ville Penttinen | 2019-02-21 | 1 | -7/+7 |
| | | |||||
| * | Remove Const inference for now, refactor PathResult | Ville Penttinen | 2019-02-21 | 4 | -77/+93 |
| | | |||||
| * | Implement basic support for Associated Methods and Constants | Ville Penttinen | 2019-02-21 | 10 | -48/+408 |
| | | | | | | | | | | | | | | 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 | 5 | -41/+105 |
|/ | | | | | | Also make them display a tiny bit nicer. Fixes #860. | ||||
* | remove ignored macro tests | Aleksey Kladov | 2019-02-19 | 1 | -30/+0 |
| | | | | | we need to significantly reengineer macros, so the tests as they exist are useless | ||||
* | Merge #852 | bors[bot] | 2019-02-18 | 3 | -34/+40 |
|\ | | | | | | | | | | | | | | | 852: Handle != r=flodiebold a=matklad r? @flodiebold Co-authored-by: Aleksey Kladov <[email protected]> | ||||
| * | handle != operator | Aleksey Kladov | 2019-02-18 | 3 | -34/+40 |
| | | |||||
* | | Handle tuple structs / enum variants properly in type inference | Florian Diebold | 2019-02-17 | 5 | -37/+95 |
|/ | |||||
* | Make GenericArgs::from_ast pub(crate) | Florian Diebold | 2019-02-17 | 1 | -1/+1 |
| | |||||
* | Unify with the autorefed/autoderefed receiver type during method resolution | Florian Diebold | 2019-02-17 | 4 | -12/+54 |
| | |||||
* | Handle generic args for method calls | Florian Diebold | 2019-02-16 | 4 | -10/+45 |
| | |||||
* | Handle impl generics in method calls | Florian Diebold | 2019-02-16 | 7 | -77/+122 |
| | |||||
* | Resolve impl generic params | Florian Diebold | 2019-02-16 | 1 | -1/+3 |
| | |||||
* | Add generic params to impl blocks | Florian Diebold | 2019-02-16 | 2 | -8/+14 |
| | |||||
* | Add a test for impl generics | Florian Diebold | 2019-02-16 | 2 | -0/+71 |
| | |||||
* | Turn ImplBlock into a copy type just containing IDs | Florian Diebold | 2019-02-16 | 5 | -66/+48 |
| | | | | | | | This makes it more like the other code model types. Also make Module::definition_source/declaration_source return HirFileIds, to make them more like the other source functions. | ||||
* | Complete names from prelude | Florian Diebold | 2019-02-13 | 2 | -4/+10 |
| | |||||
* | Handle extern crates better, so they work correctly in 2015 edition | Florian Diebold | 2019-02-13 | 3 | -15/+55 |
| | | | | (see the removed comment.) | ||||
* | Make edition handling a bit nicer and allow specifying edition in ↵ | Florian Diebold | 2019-02-13 | 2 | -16/+13 |
| | | | | crate_graph macro | ||||
* | Resolve 2015 style imports | Florian Diebold | 2019-02-13 | 3 | -8/+114 |
| | |||||
* | Keep track of crate edition | Florian Diebold | 2019-02-13 | 1 | -2/+3 |
| | |||||
* | Import the prelude | Florian Diebold | 2019-02-13 | 5 | -11/+96 |
| | |||||
* | Fix another crash | Florian Diebold | 2019-02-12 | 3 | -2/+33 |
| | |||||
* | make token trees eq | Aleksey Kladov | 2019-02-12 | 1 | -1/+1 |
| | |||||
* | Fix some typos | Pascal Hertleif | 2019-02-12 | 6 | -15/+15 |
| | |||||
* | Implement completion for associated items | Laurențiu Nicola | 2019-02-12 | 1 | -0/+20 |
| | |||||
* | replace clone with copy | Aleksey Kladov | 2019-02-12 | 1 | -1/+1 |
| | |||||
* | fix obsolete comment | Aleksey Kladov | 2019-02-12 | 1 | -2/+2 |
| | |||||
* | remove hard-coded query-group macro | Aleksey Kladov | 2019-02-11 | 2 | -24/+3 |
| | |||||
* | remove useless hash | Aleksey Kladov | 2019-02-11 | 2 | -2/+2 |
| | |||||
* | remove query_definitions | Aleksey Kladov | 2019-02-11 | 4 | -34/+20 |
| | |||||
* | rename combine -> or | Aleksey Kladov | 2019-02-11 | 2 | -3/+3 |
| | | | | | | This way we match API of Option https://doc.rust-lang.org/std/option/enum.Option.html#method.or | ||||
* | use extern prelude in Resolver | Aleksey Kladov | 2019-02-11 | 3 | -18/+43 |
| | | | | | | | This fixes two bugs: - completion for paths works again - we handle extern prelude shadowing more correctly |