aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir
Commit message (Collapse)AuthorAgeFilesLines
...
* move enum to code_model_apiAleksey Kladov2019-01-083-29/+26
|
* move stuct to code_model_apiAleksey Kladov2019-01-083-22/+27
|
* Merge #455bors[bot]2019-01-082-16/+62
|\ | | | | | | | | | | | | | | 455: Import fixpoint loop for name resolution r=matklad a=flodiebold This implements reexports, so only the glob import part of #231 remains. Co-authored-by: Florian Diebold <[email protected]>
| * Import fixpoint loop for name resolutionFlorian Diebold2019-01-082-16/+62
| |
* | convert some if-lets to matchAleksey Kladov2019-01-081-12/+9
| |
* | itroduce trait for ast tokensAleksey Kladov2019-01-082-3/+3
| |
* | migrate ra_analysis to new rowanAleksey Kladov2019-01-081-2/+2
| |
* | migrate ra_hir to rowan 2.0Aleksey Kladov2019-01-0817-192/+195
| |
* | Process explicit type hints for str, bool and charMarcus Klaas de Vries2019-01-074-5/+18
| |
* | Tidy up binary operator type inference; add test fileMarcus Klaas de Vries2019-01-072-44/+87
| |
* | Implement type inference for more binary operatorsMarcus Klaas de Vries2019-01-073-47/+82
| | | | | | | | | | Mostly just for primitive numeric types such as u32 and f64. Not yet a general solution using trait resolution.
* | Add remaining binary operations to ASTMarcus Klaas de Vries2019-01-071-0/+1
|/
* Implement autoderef for field accessesFlorian Diebold2019-01-075-24/+147
|
* if let -> matchFlorian Diebold2019-01-071-8/+6
|
* Improve types for node_expr / node_patFlorian Diebold2019-01-061-5/+5
|
* Introduce ArenaMapFlorian Diebold2019-01-063-25/+25
|
* Sort ranges in type inference testsFlorian Diebold2019-01-069-92/+93
| | | | | Also rename the files to remove the numbers (they don't serve a purpose now that there are only the data files).
* Use HIR Expr for type inferenceFlorian Diebold2019-01-068-336/+291
| | | | | Now we can reuse the type inference inside a function when typing whitespace etc. :)
* Merge #440bors[bot]2019-01-063-2/+88
|\ | | | | | | | | | | | | | | | | | | 440: Implement type inference for boolean operators r=flodiebold a=marcusklaas Tried implementing the easiest part of https://github.com/rust-analyzer/rust-analyzer/issues/390. Hope this is somewhat close to what the intent of the issue was. Found it surprisingly easy to find my way around the repository - it's well organized! Very grateful for any pointers. Co-authored-by: Marcus Klaas de Vries <[email protected]>
| * Touch up type inference for boolean operatorsMarcus Klaas de Vries2019-01-063-17/+67
| | | | | | | | | | Also try to infer its subexpressions and set type expectations whenever possible.
| * Implement type inference for boolean operatorsMarcus Klaas de Vries2019-01-053-2/+38
| |
* | kill module sourceAleksey Kladov2019-01-067-193/+155
| |
* | move submodule computationt to module_treeAleksey Kladov2019-01-064-53/+39
| |
* | fix the testAleksey Kladov2019-01-061-2/+2
| |
* | fix after rebaseAleksey Kladov2019-01-061-1/+2
| |
* | flatten module structureAleksey Kladov2019-01-0613-436/+431
| |
* | adjust commentsAleksey Kladov2019-01-061-5/+7
| |
* | split module source into decl/definAleksey Kladov2019-01-064-28/+102
| |
* | kill old moduleAleksey Kladov2019-01-067-233/+66
| |
* | add parent & resolve_pathAleksey Kladov2019-01-064-5/+67
| |
* | make source cancelableAleksey Kladov2019-01-061-2/+2
| |
* | make deps cancelableAleksey Kladov2019-01-062-3/+3
| |
* | fix testsAleksey Kladov2019-01-063-4/+29
| |
* | switch source-binders to ModuleAleksey Kladov2019-01-062-9/+20
| |
* | Start code_model::ModuleAleksey Kladov2019-01-064-7/+83
| |
* | move crate to code_model_apiAleksey Kladov2019-01-063-21/+34
| |
* | Add fn signature queryFlorian Diebold2019-01-067-7/+85
| |
* | Various small code review improvementsFlorian Diebold2019-01-053-26/+27
| |
* | Make FnScopes use hir::ExprFlorian Diebold2019-01-058-282/+514
| | | | | | | | | | | | This was a bit complicated. I've added a wrapper type for now that does the LocalSyntaxPtr <-> ExprId translation; we might want to get rid of that or give it a nicer interface.
* | Add HIR Expr machineryFlorian Diebold2019-01-055-0/+528
| |
* | Add test for invalidation of inferred types when typing inside functionFlorian Diebold2019-01-052-0/+58
|/ | | | This currently fails, but should work once we have hir::Expr.
* Merge #370bors[bot]2019-01-0413-48/+396
|\ | | | | | | | | | | | | | | | | | | | | | | | | 370: Self params & type r=matklad a=flodiebold This implements type inference for `self`, so field completion for methods taking `self` works now. - rename `IMPL_ITEM` to `IMPL_BLOCK` -- rustc calls the methods etc. inside an impl `ImplItem`s, and the impl itself doesn't define an item, so I thought this name was clearer. - add HIR for impl blocks -- we collect all impls in a crate at once, so we can go from methods to containing impls, and since we will later also need to find all impls for a certain type (which may be anywhere in the crate, I think?). We could be more lazy here, but I don't know if it's worth the complexity. - resolve `self` and `Self` during type inference - refactor a bit in ty.rs as well Co-authored-by: Florian Diebold <[email protected]>
| * Rename ImplsInCrateQuery as wellFlorian Diebold2019-01-042-2/+2
| |
| * Do impl collection per module, not per crateFlorian Diebold2019-01-043-33/+32
| |
| * Rename ImplBlock::target -> target_type, and add target_trait alreadyFlorian Diebold2019-01-042-7/+17
| |
| * Refactor a bitFlorian Diebold2019-01-041-58/+62
| |
| * Resolve the Self typeFlorian Diebold2019-01-043-24/+71
| |
| * Resolve the self parameter during type inferenceFlorian Diebold2019-01-043-4/+19
| |
| * Type the self parameterFlorian Diebold2019-01-043-7/+37
| |
| * Add HIR for impl blocksFlorian Diebold2019-01-048-5/+225
| | | | | | | | | | | | | | | | | | Since we need to be able to go from def to containing impl block, as well as the other direction, and to find all impls for a certain type, a design similar to the one for modules, where we collect all impls for the whole crate and keep them in an arena, seemed fitting. The ImplBlock type, which provides the public interface, then consists only of an Arc to the arena containing all impls, and the index into it.