aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir_ty/src/db.rs
Commit message (Collapse)AuthorAgeFilesLines
* Remove TypeCtor interningFlorian Diebold2020-07-151-3/+1
| | | | Our TypeCtor and Chalk's TypeName match now!
* Use Chalk closure supportFlorian Diebold2020-07-151-6/+8
|
* Switch to fully dynamically dispatched salsaAleksey Kladov2020-07-071-1/+0
| | | | This improves compile times quite a bit
* Split `CrateImplDefs` in inherent and trait implsJonas Schievink2020-07-011-5/+8
| | | | | | This makes the intention of inherent vs. trait impls somewhat more clear and also fixes (?) an issue where trait impls with an unresolved trait were added as inherent impls instead (hence the test changes).
* (Partially) fix handling of type params depending on type paramsFlorian Diebold2020-06-291-2/+2
| | | | | | | | If the first type parameter gets inferred, that's still not handled correctly; it'll require some more refactoring: E.g. if we have `Thing<T, F=fn() -> T>` and then instantiate `Thing<_>`, that gets turned into `Thing<_, fn() -> _>` before the `_` is instantiated into a type variable -- so afterwards, we have two type variables without any connection to each other.
* Replace `impls_in_trait` with `CrateImplDefs`Jonas Schievink2020-06-191-10/+5
|
* Implement return position impl trait / opaque type supportFlorian Diebold2020-06-051-4/+16
| | | | | | | | | | | | | This is working, but I'm not that happy with how the lowering works. We might need an additional representation between `TypeRef` and `Ty` where names are resolved and `impl Trait` bounds are separated out, but things like inference variables don't exist and `impl Trait` is always represented the same way. Also note that this doesn't implement correct handling of RPIT *inside* the function (which involves turning the `impl Trait`s into variables and creating obligations for them). That intermediate representation might help there as well.
* Use Chalk's built-in representation of function item typesFlorian Diebold2020-05-221-0/+5
|
* Use TypeCtorId as AdtId directly, and rename the type alias StructId -> AdtIdFlorian Diebold2020-05-221-1/+1
|
* Rename StructField -> FieldAleksey Kladov2020-04-251-2/+2
|
* Update Chalk, and cache Chalk env elaboration through a queryFlorian Diebold2020-04-201-0/+7
| | | | This should fix some of the worst performance problems.
* Look up impls by self typeFlorian Diebold2020-04-111-2/+7
| | | | | This speeds up inference in analysis-stats by ~30% (even more with the recursive solver).
* Cleanup memory usage statsAleksey Kladov2020-03-251-0/+1
|
* Use `dyn Trait` for working with databseAleksey Kladov2020-03-161-2/+2
| | | | | | | 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).
* Normalize waiting queries namesAleksey Kladov2020-03-061-6/+6
|
* Don't reuse the Chalk solverFlorian Diebold2020-03-061-8/+0
| | | | | This slows down analysis-stats a bit (~5% in my measurement), but improves incremental checking a lot because we can reuse trait solve results.
* Allow specifying additional info on call to profileAleksey Kladov2020-03-061-1/+10
|
* Less confusing profile namesAleksey Kladov2020-03-061-1/+1
|
* Rename ast::ImplBlock -> ast::ImplDefAleksey Kladov2020-02-291-3/+3
|
* FormattingFlorian Diebold2020-02-071-3/+4
|
* Use variables in predicates as wellFlorian Diebold2020-02-071-2/+2
|
* Change Ty::Param to contain param IDFlorian Diebold2020-02-071-6/+11
|
* Lower impl trait to variables, move away from using placeholders where they ↵Florian Diebold2020-02-071-6/+6
| | | | don't belong
* Split `infer` query into two for better profilingMichal Terepeta2020-01-031-1/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is the same change as we did with `crate_def_map` and it does seem that we mostly spend time in salsa, without recomputing much on rust-analyzer side. Example output: ``` 233ms - handle_inlay_hints 163ms - get_inlay_hints 163ms - SourceAnalyzer::new 67ms - def_with_body_from_child_node 67ms - analyze_container 67ms - analyze_container 67ms - Module::from_definition 67ms - Module::from_file 67ms - crate_def_map 0ms - parse_macro_query (6 calls) 0ms - raw_items_query (1 calls) 66ms - ??? 0ms - crate_def_map (1 calls) 0ms - crate_def_map (1 calls) 96ms - infer 2ms - trait_solve_query (2 calls) 94ms - ??? 0ms - body_with_source_map_query (1 calls) 0ms - crate_def_map (1 calls) [...] ``` Signed-off-by: Michal Terepeta <[email protected]>
* Update Chalk, clean up Chalk integration a bitFlorian Diebold2019-12-221-25/+10
|
* Add cycle recovery for type aliasesFlorian Diebold2019-11-301-0/+1
|
* Add cycle recovery for generic predicatesFlorian Diebold2019-11-301-0/+1
|
* Handle cycles in impl types betterFlorian Diebold2019-11-301-3/+7
| | | | | | - 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 resolutionsAleksey Kladov2019-11-271-1/+4
|
* Move TyAleksey Kladov2019-11-271-0/+116