aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir/src/ty/infer.rs
Commit message (Collapse)AuthorAgeFilesLines
* Address comments: fix docs, add completion test for `Self`.ice10002019-10-081-3/+1
|
* Support inferring `Self` type in enum definitionsice10002019-10-081-0/+3
| | | | Signed-off-by: ice1000 <[email protected]>
* Handle divergence in type inference for blocksLaurențiu Nicola2019-10-021-2/+10
|
* Merge #1815bors[bot]2019-09-271-5/+4
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1815: Support correct `$crate` expansion in macros r=uHOOCCOOHu a=uHOOCCOOHu This PR makes normal use cases of `$crate` from macros work as expected. It makes more macros from `std` work. Type inference works well with `panic`, `unimplemented`, `format`, and maybe more. Sadly that `vec![1, 2, 3]` still not works, but it is not longer an issue about macro. Screenshot: ![Screenshot_20190927_022136](https://user-images.githubusercontent.com/14816024/65714465-b4568f80-e0cd-11e9-8043-dd44c2ae8040.png) Co-authored-by: uHOOCCOOHu <[email protected]>
| * Refactor `Name` ready for hygienic macrouHOOCCOOHu2019-09-261-5/+4
| |
* | Add SubstsBuilderFlorian Diebold2019-09-261-8/+7
|/ | | | + further refactoring.
* Support all coercion placesuHOOCCOOHu2019-09-251-25/+57
|
* Support custom `CoerceUnsized`uHOOCCOOHu2019-09-251-26/+181
| | | | Split out tests about coercion
* Better handle never type and branch merginguHOOCCOOHu2019-09-251-60/+92
| | | | Split out tests for never type to another file
* Support basic implicit type coerceuHOOCCOOHu2019-09-251-86/+168
|
* Support auto-deref in argument positionuHOOCCOOHu2019-09-251-1/+43
|
* Remove redundant clone()Shotaro Yamada2019-09-251-2/+2
|
* Implement the call argument checking order hack for closuresFlorian Diebold2019-09-241-10/+26
|
* Make the closure_1 test workFlorian Diebold2019-09-241-0/+5
|
* Give closures typesFlorian Diebold2019-09-241-4/+18
|
* 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
|