Commit message (Collapse) | Author | Age | Files | Lines | ||
---|---|---|---|---|---|---|
... | ||||||
* | | | Merge #2623 | bors[bot] | 2019-12-20 | 1 | -0/+19 | |
|\ \ \ | |_|/ |/| | | | | | | | | | | | | | | | | | | | | | | | 2623: Add support macros in impl blocks r=matklad a=edwin0cheng This PR add support for macros in impl blocks, which reuse `Expander` for macro expansion. see also: #2459 Co-authored-by: Edwin Cheng <[email protected]> | |||||
| * | | Add support macros in impl blocks | Edwin Cheng | 2019-12-20 | 1 | -0/+19 | |
| |/ | ||||||
* | | Coerce closures to fn pointers | Florian Diebold | 2019-12-20 | 3 | -5/+48 | |
| | | | | | | | | E.g. `let x: fn(A) -> B = |x| { y };` | |||||
* | | Fix coercion of last expression in function body | Florian Diebold | 2019-12-20 | 3 | -2/+18 | |
| | | ||||||
* | | Handle closure return types | Florian Diebold | 2019-12-20 | 4 | -4/+106 | |
|/ | | | | Fixes #2547. | |||||
* | Merge #2592 | bors[bot] | 2019-12-20 | 3 | -5/+59 | |
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2592: Add std::ops::Index support for infering r=edwin0cheng a=edwin0cheng see also #2534 Seem like this can't fix #2534 for this case: ```rust fn foo3(bar: [usize; 2]) { let baz = bar[1]; // <--- baz is still unknown ? println!("{}", baz); } ``` Co-authored-by: Edwin Cheng <[email protected]> | |||||
| * | Use fill instread of for loop | Edwin Cheng | 2019-12-19 | 1 | -5/+3 | |
| | | ||||||
| * | Use build_for_def | Edwin Cheng | 2019-12-19 | 1 | -1/+1 | |
| | | ||||||
| * | Add std::ops::Index support for infering | Edwin Cheng | 2019-12-19 | 3 | -5/+61 | |
| | | ||||||
* | | Use generic ItemLoc for impls | Aleksey Kladov | 2019-12-20 | 2 | -2/+2 | |
| | | ||||||
* | | Support for nested traits | Aleksey Kladov | 2019-12-20 | 1 | -2/+4 | |
| | | ||||||
* | | Support for nested ADT | Aleksey Kladov | 2019-12-20 | 1 | -2/+2 | |
| | | ||||||
* | | Introduce `ContainerId` | Aleksey Kladov | 2019-12-20 | 3 | -3/+3 | |
| | | ||||||
* | | Rename ContainerId -> AssocContainerId | Aleksey Kladov | 2019-12-20 | 6 | -22/+22 | |
| | | ||||||
* | | Add body as a possible container for items | Aleksey Kladov | 2019-12-19 | 3 | -7/+7 | |
| | | ||||||
* | | Remove TruncateOptions struct | Kirill Bulatov | 2019-12-19 | 1 | -13/+10 | |
| | | ||||||
* | | Omit default parameter types | Kirill Bulatov | 2019-12-19 | 2 | -7/+47 | |
| | | ||||||
* | | Forbid <T>::foo syntax in mod paths | Aleksey Kladov | 2019-12-18 | 2 | -5/+5 | |
|/ | ||||||
* | Add test mark | Florian Diebold | 2019-12-15 | 3 | -2/+9 | |
| | ||||||
* | Handle impl Trait more correctly | Florian Diebold | 2019-12-15 | 3 | -1/+56 | |
| | | | | | | | When calling a function, argument-position impl Trait is transparent; same for return-position impl Trait when inside the function. So in these cases, we need to represent that type not by `Ty::Opaque`, but by a type variable that can be unified with whatever flows into there. | |||||
* | Add test for unifying impl Trait | Florian Diebold | 2019-12-15 | 1 | -1/+27 | |
| | ||||||
* | Use different types for path with and without generics | Aleksey Kladov | 2019-12-14 | 4 | -51/+51 | |
| | ||||||
* | Use path macro | Florian Diebold | 2019-12-13 | 2 | -15/+15 | |
| | ||||||
* | Rename N! to name! | Florian Diebold | 2019-12-13 | 5 | -15/+15 | |
| | ||||||
* | Add macros for known names and paths | Florian Diebold | 2019-12-13 | 5 | -17/+15 | |
| | ||||||
* | Correctly infer - and ! using std::ops::{Neg,Not} | Emil Lauridsen | 2019-12-13 | 3 | -23/+104 | |
| | ||||||
* | Add helper for resolving associated type of trait in infer | Emil Lauridsen | 2019-12-13 | 2 | -47/+25 | |
| | ||||||
* | Move enum&union to new loc | Aleksey Kladov | 2019-12-12 | 1 | -4/+5 | |
| | ||||||
* | Move structs to new loc | Aleksey Kladov | 2019-12-12 | 1 | -1/+1 | |
| | ||||||
* | Move traits to the new loc | Aleksey Kladov | 2019-12-12 | 1 | -4/+2 | |
| | ||||||
* | Switch to the new location for impls | Aleksey Kladov | 2019-12-12 | 2 | -4/+4 | |
| | ||||||
* | Fix coercion from &Foo to an inference variable in a reference | Florian Diebold | 2019-12-08 | 2 | -1/+42 | |
| | | | | We didn't try to unify within the reference, but we should. | |||||
* | Merge #2466 | bors[bot] | 2019-12-08 | 1 | -0/+29 | |
|\ | | | | | | | | | | | | | | | | | | | | | 2466: Handle partial resolve cases r=matklad a=edwin0cheng Another try to fix #2443 : We resolve all imports every time in `DefCollector::collect` loop even it is resolved previously. This is because other unresolved imports and macros will bring in another `PerNs`, so we can only assume that it has been partially resolved. Co-authored-by: Edwin Cheng <[email protected]> | |||||
| * | Add tests | Edwin Cheng | 2019-12-06 | 1 | -0/+29 | |
| | | ||||||
* | | Rename GenericParam -> TypeParam | Aleksey Kladov | 2019-12-07 | 1 | -14/+12 | |
| | | | | | | | | We don't have LifetimeParam yet, but they are planned! | |||||
* | | Reformat | Aleksey Kladov | 2019-12-07 | 1 | -2/+2 | |
| | | ||||||
* | | Refactor parameter count tracking | Aleksey Kladov | 2019-12-07 | 6 | -32/+30 | |
| | | ||||||
* | | Remove idx and parent generics from generics | Aleksey Kladov | 2019-12-07 | 6 | -60/+135 | |
| | | | | | | | | | | This makes `hir_def::GenericParams` flatter. The logic for re-numbering the params is moved to hir instead. | |||||
* | | Store GenericParams in arena | Aleksey Kladov | 2019-12-07 | 1 | -1/+1 | |
| | | ||||||
* | | Merge #2484 | bors[bot] | 2019-12-06 | 1 | -3/+5 | |
|\ \ | |/ |/| | | | | | | | | | | | | | | | 2484: DynMap r=matklad a=matklad Implement a `DynMap` a semi-dynamic, semi-static map, which helps to thread heterogeneously typed info in a uniform way. Totally inspired by https://github.com/JetBrains/kotlin/blob/df3bee30384787d8951ea548a4257c2cb52a16a3/compiler/frontend/src/org/jetbrains/kotlin/resolve/BindingContext.java. @flodiebold wdyt? Seems like a potentially useful pattern for various source-map-like things. Co-authored-by: Aleksey Kladov <[email protected]> | |||||
| * | DynMap | Aleksey Kladov | 2019-12-06 | 1 | -3/+5 | |
| | | | | | | | | | | This might, or might not help us to reduce boilerplate associated with plumbing values from analysis to the IDE layer | |||||
* | | Don't unify within a reference | Florian Diebold | 2019-12-06 | 3 | -11/+72 | |
|/ | | | | | | | If we are expecting a `&Foo` and get a `&something`, when checking the `something`, we are *expecting* a `Foo`, but we shouldn't try to unify whatever we get with that expectation, because it could actually be a `&Foo`, and `&&Foo` coerces to `&Foo`. So this fixes quite a few false type mismatches. | |||||
* | Simplify test | Aleksey Kladov | 2019-12-05 | 1 | -13/+10 | |
| | ||||||
* | Implement derive(Copy, Clone) properly (well, kind of) | Florian Diebold | 2019-12-05 | 1 | -0/+51 | |
| | ||||||
* | Fix test compilation | ice1000 | 2019-12-04 | 1 | -1/+1 | |
| | ||||||
* | Split up ty tests a bit | Florian Diebold | 2019-12-03 | 7 | -4902/+4882 | |
| | ||||||
* | Replace `ra_hir_expand::either` with crate | ice1000 | 2019-12-03 | 1 | -2/+2 | |
| | ||||||
* | Fix #2467 | Florian Diebold | 2019-12-03 | 4 | -7/+65 | |
| | | | | | The stand-alone `unify` requires that the type doesn't contain any type variables. So we can't share the code here for now (without more refactoring)... | |||||
* | Merge #2465 | bors[bot] | 2019-12-03 | 3 | -127/+219 | |
|\ | | | | | | | | | | | | | | | 2465: Extract built-in trait implementations to separate module r=matklad a=flodiebold This untangles the builtin logic from the Chalk translation. Co-authored-by: Florian Diebold <[email protected]> | |||||
| * | Extract built-in trait implementations to separate module | Florian Diebold | 2019-12-03 | 3 | -127/+219 | |
| | | | | | | | | This untangles the builtin logic from the Chalk translation. |