Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | Look up impls by self type | Florian Diebold | 2020-04-11 | 1 | -5/+40 |
| | | | | | This speeds up inference in analysis-stats by ~30% (even more with the recursive solver). | ||||
* | Upgrade Chalk again | Florian Diebold | 2020-04-05 | 1 | -7/+9 |
| | | | | | | | The big change here is counting binders, not variables (https://github.com/rust-lang/chalk/pull/360). We have to adapt to the same scheme for our `Ty::Bound`. It's mostly fine though, even makes some things more clear. | ||||
* | ra_hir_ty: fix formatting | veetaha | 2020-03-22 | 1 | -8/+8 |
| | |||||
* | Use `dyn Trait` for working with databse | Aleksey Kladov | 2020-03-16 | 1 | -23/+20 |
| | | | | | | | It improves compile time in `--release` mode quite a bit, it doesn't really slow things down and, conceptually, it seems closer to what we want the physical architecture to look like (we don't want to monomorphise EVERYTHING in a single leaf crate). | ||||
* | Fix completion with a partially unknown type | Florian Diebold | 2020-03-10 | 1 | -3/+25 |
| | | | | | | | | | | | | | | To test whether the receiver type matches for the impl, we unify the given self type (in this case `HashSet<{unknown}>`) with the self type of the impl (`HashSet<?0>`), but if the given self type contains Unknowns, they won't be unified with the variables in those places. So we got a receiver type that was different from the expected one, and concluded the impl doesn't match. The fix is slightly hacky; if after the unification, our variables are still there, we make them fall back to Unknown. This does make some sense though, since we don't want to 'leak' the variables. Fixes #3547. | ||||
* | Fix #3373 | Florian Diebold | 2020-03-01 | 1 | -3/+10 |
| | | | | | | | Basically, we need to allow variables in the caller self type to unify with the impl's declared self type. That requires some more contortions in the variable handling. I'm looking forward to (hopefully) handling this in a cleaner way when we switch to Chalk's types and unification code. | ||||
* | Do autoderef for indexing | Florian Diebold | 2020-02-29 | 1 | -0/+19 |
| | |||||
* | Do array unsizing for method receivers | Florian Diebold | 2020-02-29 | 1 | -2/+19 |
| | | | | | | | It turns out rustc actually only unsizes array method receivers, so we don't need to do any trait solving for this (at least for now). Fixes #2670. | ||||
* | Rename ast::ImplBlock -> ast::ImplDef | Aleksey Kladov | 2020-02-29 | 1 | -12/+11 |
| | |||||
* | Exclude methods from non-parameter types introduced by generic constraints | Laurențiu Nicola | 2020-02-19 | 1 | -6/+11 |
| | |||||
* | Run cargo +nightly fix --clippy -Z unstable-options | Kirill Bulatov | 2020-02-18 | 1 | -6/+6 |
| | |||||
* | Check that impl self type matches up with expected self type in path mode | Florian Diebold | 2020-02-14 | 1 | -0/+9 |
| | | | | Fixes #3144. | ||||
* | Change Ty::Param to contain param ID | Florian Diebold | 2020-02-07 | 1 | -1/+1 |
| | |||||
* | Lower impl trait to variables, move away from using placeholders where they ↵ | Florian Diebold | 2020-02-07 | 1 | -2/+2 |
| | | | | don't belong | ||||
* | Push resolver further up | Aleksey Kladov | 2020-01-14 | 1 | -17/+24 |
| | |||||
* | Push resolver up | Aleksey Kladov | 2020-01-14 | 1 | -21/+51 |
| | |||||
* | Move impls_future to Type, where it belongs | Aleksey Kladov | 2020-01-14 | 1 | -2/+1 |
| | |||||
* | Move impls to ItemScope | Aleksey Kladov | 2019-12-20 | 1 | -1/+1 |
| | |||||
* | Use generic ItemLoc for impls | Aleksey Kladov | 2019-12-20 | 1 | -1/+1 |
| | |||||
* | Introduce `ContainerId` | Aleksey Kladov | 2019-12-20 | 1 | -1/+1 |
| | |||||
* | Rename ContainerId -> AssocContainerId | Aleksey Kladov | 2019-12-20 | 1 | -5/+5 |
| | |||||
* | Add body as a possible container for items | Aleksey Kladov | 2019-12-19 | 1 | -5/+5 |
| | |||||
* | Switch to the new location for impls | Aleksey Kladov | 2019-12-12 | 1 | -3/+3 |
| | |||||
* | Fix #2467 | Florian Diebold | 2019-12-03 | 1 | -4/+4 |
| | | | | | 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)... | ||||
* | Refactor a bit | Florian Diebold | 2019-12-02 | 1 | -42/+56 |
| | |||||
* | Check receiver type properly | Florian Diebold | 2019-12-02 | 1 | -8/+63 |
| | |||||
* | Change order of calls to get method candidate order correct | Florian Diebold | 2019-12-02 | 1 | -37/+115 |
| | |||||
* | Handle cycles in impl types better | Florian Diebold | 2019-11-30 | 1 | -4/+5 |
| | | | | | | - impl Trait<Self> for S is allowed - impl Trait for S<Self> is an invalid cycle, but we can add cycle recovery for it in Salsa now | ||||
* | Memoize impl resolutions | Aleksey Kladov | 2019-11-27 | 1 | -20/+10 |
| | |||||
* | Move Ty | Aleksey Kladov | 2019-11-27 | 1 | -0/+363 |