Commit message (Collapse) | Author | Age | Files | Lines | ||
---|---|---|---|---|---|---|
... | ||||||
* | | Tidy up binary operator type inference; add test file | Marcus Klaas de Vries | 2019-01-07 | 2 | -44/+87 | |
| | | ||||||
* | | Implement type inference for more binary operators | Marcus Klaas de Vries | 2019-01-07 | 3 | -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 AST | Marcus Klaas de Vries | 2019-01-07 | 1 | -0/+1 | |
|/ | ||||||
* | Implement autoderef for field accesses | Florian Diebold | 2019-01-07 | 5 | -24/+147 | |
| | ||||||
* | if let -> match | Florian Diebold | 2019-01-07 | 1 | -8/+6 | |
| | ||||||
* | Improve types for node_expr / node_pat | Florian Diebold | 2019-01-06 | 1 | -5/+5 | |
| | ||||||
* | Introduce ArenaMap | Florian Diebold | 2019-01-06 | 3 | -25/+25 | |
| | ||||||
* | Sort ranges in type inference tests | Florian Diebold | 2019-01-06 | 9 | -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 inference | Florian Diebold | 2019-01-06 | 8 | -336/+291 | |
| | | | | | Now we can reuse the type inference inside a function when typing whitespace etc. :) | |||||
* | Merge #440 | bors[bot] | 2019-01-06 | 3 | -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 operators | Marcus Klaas de Vries | 2019-01-06 | 3 | -17/+67 | |
| | | | | | | | | | | Also try to infer its subexpressions and set type expectations whenever possible. | |||||
| * | Implement type inference for boolean operators | Marcus Klaas de Vries | 2019-01-05 | 3 | -2/+38 | |
| | | ||||||
* | | kill module source | Aleksey Kladov | 2019-01-06 | 7 | -193/+155 | |
| | | ||||||
* | | move submodule computationt to module_tree | Aleksey Kladov | 2019-01-06 | 4 | -53/+39 | |
| | | ||||||
* | | fix the test | Aleksey Kladov | 2019-01-06 | 1 | -2/+2 | |
| | | ||||||
* | | fix after rebase | Aleksey Kladov | 2019-01-06 | 1 | -1/+2 | |
| | | ||||||
* | | flatten module structure | Aleksey Kladov | 2019-01-06 | 13 | -436/+431 | |
| | | ||||||
* | | adjust comments | Aleksey Kladov | 2019-01-06 | 1 | -5/+7 | |
| | | ||||||
* | | split module source into decl/defin | Aleksey Kladov | 2019-01-06 | 4 | -28/+102 | |
| | | ||||||
* | | kill old module | Aleksey Kladov | 2019-01-06 | 7 | -233/+66 | |
| | | ||||||
* | | add parent & resolve_path | Aleksey Kladov | 2019-01-06 | 4 | -5/+67 | |
| | | ||||||
* | | make source cancelable | Aleksey Kladov | 2019-01-06 | 1 | -2/+2 | |
| | | ||||||
* | | make deps cancelable | Aleksey Kladov | 2019-01-06 | 2 | -3/+3 | |
| | | ||||||
* | | fix tests | Aleksey Kladov | 2019-01-06 | 3 | -4/+29 | |
| | | ||||||
* | | switch source-binders to Module | Aleksey Kladov | 2019-01-06 | 2 | -9/+20 | |
| | | ||||||
* | | Start code_model::Module | Aleksey Kladov | 2019-01-06 | 4 | -7/+83 | |
| | | ||||||
* | | move crate to code_model_api | Aleksey Kladov | 2019-01-06 | 3 | -21/+34 | |
| | | ||||||
* | | Add fn signature query | Florian Diebold | 2019-01-06 | 7 | -7/+85 | |
| | | ||||||
* | | Various small code review improvements | Florian Diebold | 2019-01-05 | 3 | -26/+27 | |
| | | ||||||
* | | Make FnScopes use hir::Expr | Florian Diebold | 2019-01-05 | 8 | -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 machinery | Florian Diebold | 2019-01-05 | 5 | -0/+528 | |
| | | ||||||
* | | Add test for invalidation of inferred types when typing inside function | Florian Diebold | 2019-01-05 | 2 | -0/+58 | |
|/ | | | | This currently fails, but should work once we have hir::Expr. | |||||
* | Merge #370 | bors[bot] | 2019-01-04 | 13 | -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 well | Florian Diebold | 2019-01-04 | 2 | -2/+2 | |
| | | ||||||
| * | Do impl collection per module, not per crate | Florian Diebold | 2019-01-04 | 3 | -33/+32 | |
| | | ||||||
| * | Rename ImplBlock::target -> target_type, and add target_trait already | Florian Diebold | 2019-01-04 | 2 | -7/+17 | |
| | | ||||||
| * | Refactor a bit | Florian Diebold | 2019-01-04 | 1 | -58/+62 | |
| | | ||||||
| * | Resolve the Self type | Florian Diebold | 2019-01-04 | 3 | -24/+71 | |
| | | ||||||
| * | Resolve the self parameter during type inference | Florian Diebold | 2019-01-04 | 3 | -4/+19 | |
| | | ||||||
| * | Type the self parameter | Florian Diebold | 2019-01-04 | 3 | -7/+37 | |
| | | ||||||
| * | Add HIR for impl blocks | Florian Diebold | 2019-01-04 | 8 | -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. | |||||
| * | Add test for self type inference | Florian Diebold | 2019-01-04 | 2 | -0/+23 | |
| | | ||||||
* | | :arrow_up: salsa | Aleksey Kladov | 2019-01-04 | 1 | -1/+1 | |
|/ | ||||||
* | Rename ImplItem to ImplBlock | Florian Diebold | 2019-01-04 | 1 | -1/+1 | |
| | | | | | rustc uses the name ImplItem for items in impls, not the impl {} block itself, which could lead to confusion. | |||||
* | remove id arena | Aleksey Kladov | 2019-01-04 | 6 | -86/+24 | |
| | ||||||
* | index stuff produced by macros | Aleksey Kladov | 2019-01-03 | 3 | -5/+49 | |
| | ||||||
* | hardcode vec macro | Aleksey Kladov | 2019-01-03 | 1 | -0/+18 | |
| | ||||||
* | simplify runnables | Aleksey Kladov | 2019-01-02 | 1 | -1/+1 | |
| | ||||||
* | small rename | Aleksey Kladov | 2019-01-02 | 2 | -3/+3 | |
| | ||||||
* | comments | Aleksey Kladov | 2019-01-02 | 3 | -12/+35 | |
| |