aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir/src/ty/infer.rs
Commit message (Collapse)AuthorAgeFilesLines
* Split off path expression inference code into submoduleFlorian Diebold2019-09-231-172/+4
|
* Remove TraitItem and ImplItem in favor of AssocItemFlorian Diebold2019-09-171-14/+12
|
* Refactor some moreFlorian Diebold2019-09-171-39/+61
| | | | | | Type-relative paths (`<T>::foo`) also need to work in type context, for example `<T>::Item` is legal. So rather than returning the type ref from the resolver function, just check it before.
* Refactor associated item resolution moreFlorian Diebold2019-09-171-71/+54
| | | | | When resolving an associated item in value namespace, use the `Ty` lowering code for the segments before the last instead of replicating it.
* Refactor a bit to prepare for resolving trait assoc itemsFlorian Diebold2019-09-171-30/+27
|
* Merge #1817bors[bot]2019-09-161-75/+52
|\ | | | | | | | | | | | | | | 1817: Support path starting with a type r=matklad a=uHOOCCOOHu The path syntax `<Ty>::foo` Co-authored-by: uHOOCCOOHu <[email protected]>
| * Define known paths and group namesuHOOCCOOHu2019-09-151-25/+12
| |
| * Support path starting with a typeuHOOCCOOHu2019-09-151-65/+55
| |
* | Gracefully handle `const _` items in `ConstData`Dylan MacKenzie2019-09-161-1/+1
|/
* Upgrade ChalkFlorian Diebold2019-09-141-4/+0
| | | | ... and remove Ty::UnselectedProjection. It'll be handled differently.
* Specify desirable namespace when calling resolveAleksey Kladov2019-09-131-133/+123
| | | | That way, we are able to get rid of a number of unreachable statements
* rename AdtDef -> AdtAleksey Kladov2019-09-121-7/+7
|
* make various enums "inherit" from AdtDefAleksey Kladov2019-09-121-3/+3
|
* start cleaning up the resolutionAleksey Kladov2019-09-121-35/+11
| | | | | | | Nameres related types, like `PerNs<Resolution>`, can represent unreasonable situations, like a local in a type namespace. We should clean this up, by requiring that call-site specifies the kind of resolution it expects.
* Infer box expressionuHOOCCOOHu2019-09-111-0/+26
|
* cleanup hir db importsAleksey Kladov2019-09-081-3/+5
|
* Lower bounds on trait definition, and resolve assoc types from super traitsFlorian Diebold2019-09-071-3/+3
|
* Make type walking infrastructure a bit nicerFlorian Diebold2019-09-031-1/+1
| | | | | 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.
* clearer ignoreAleksey Kladov2019-09-031-1/+1
|
* remove needless refsAleksey Kladov2019-09-031-2/+2
|
* use recrod terminology for hir::PatAleksey Kladov2019-09-031-2/+2
|
* Add an expr_source method analogous to the source methods in the code modelFlorian Diebold2019-09-021-2/+2
| | | | ... and use that instead of exposing the source map.
* Small fixesKirill Bulatov2019-08-261-12/+9
|
* Make infer_block not unify; add back calculate_least_upper_boundFlorian Diebold2019-08-261-20/+54
|
* An attempt to add the coercion logic for NeverKirill Bulatov2019-08-261-51/+40
|
* Properly coerce never typesKirill Bulatov2019-08-261-44/+46
|
* Remove extra inference testKirill Bulatov2019-08-261-1/+0
|
* Fix never in if expressionsKirill Bulatov2019-08-261-3/+10
|
* Add test marksKirill Bulatov2019-08-261-0/+5
|
* Fix match type inference for Never match armsKirill Bulatov2019-08-261-5/+31
|
* Add type_mismatches to InferenceResult and use this in ok-wrapping code fixPhil Ellison2019-08-251-1/+18
|
* rename struct -> record, pos -> tupleAleksey Kladov2019-08-231-6/+6
|
* implement initial type inference for index expressionsAleksey Kladov2019-08-171-0/+6
|
* Introduce separate hir::BinaryOpAleksey Kladov2019-08-171-3/+1
| | | | | Unlike ast::BinOp, it has significantly more structure to it, so it's easier to, say, handle all assignment-like operations in the same way.
* Normalize assoc types in more placesFlorian Diebold2019-08-121-6/+21
|
* Normalize associated types during inferenceFlorian Diebold2019-08-121-1/+21
|
* provide completion in struct patternsEkaterina Babshukova2019-07-211-7/+15
|
* infer type for awaitUnreal Hoang2019-07-201-2/+40
| | | | by projecting inner_ty to Future::Output alias
* add await expr to astUnreal Hoang2019-07-201-0/+3
|
* Have InferenceContext contain an InferenceResult instead of duplicating all ↵Florian Diebold2019-07-141-36/+19
| | | | fields
* Some renamings for clarityFlorian Diebold2019-07-141-4/+4
|
* complete fields in enum variantsEkaterina Babshukova2019-07-121-0/+15
|
* Merge #1515bors[bot]2019-07-091-46/+23
|\ | | | | | | | | | | | | | | | | | | | | | | 1515: Trait environment r=matklad a=flodiebold This adds the environment, i.e. the set of `where` clauses in scope, when solving trait goals. That means that e.g. in ```rust fn foo<T: SomeTrait>(t: T) {} ``` , we are able to complete methods of `SomeTrait` on the `t`. This affects the trait APIs quite a bit (since every method that needs to be able to solve for some trait needs to get this environment somehow), so I thought I'd do it rather sooner than later ;) Co-authored-by: Florian Diebold <[email protected]>
| * Unify `normalize` and `implements` to simplify codeFlorian Diebold2019-07-081-46/+18
| |
| * Use environment for associated type normalization as wellFlorian Diebold2019-07-081-1/+2
| |
| * Start handling environment in trait resolutionFlorian Diebold2019-07-081-5/+6
| | | | | | | | | | I.e. if we are inside a function with some where clauses, we assume these where clauses hold.
| * Refactor a bit & introduce Environment structFlorian Diebold2019-07-081-2/+5
| |
* | use namespaced consts for KnownNameUnreal Hoang2019-07-081-12/+10
| |
* | projection over std::ops::Try::Ok to infer try/?Unreal Hoang2019-07-081-2/+37
|/
* cargo formatMuhammad Mominul Huque2019-07-071-3/+3
|