aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_hir/src/db.rs
Commit message (Collapse)AuthorAgeFilesLines
* Unify `normalize` and `implements` to simplify codeFlorian Diebold2019-07-081-10/+3
|
* Use environment for associated type normalization as wellFlorian Diebold2019-07-081-1/+1
|
* Refactor a bit & introduce Environment structFlorian Diebold2019-07-081-1/+1
|
* Add trait obligations for where clauses when calling functions/methodsFlorian Diebold2019-07-061-2/+2
| | | | | E.g. if we call `foo<T: Into<u32>>(x)`, that adds an obligation that `x: Into<u32>`, etc.
* allow rustfmt to reorder importsAleksey Kladov2019-07-041-13/+15
| | | | | | This wasn't a right decision in the first place, the feature flag was broken in the last rustfmt release, and syntax highlighting of imports is more important anyway
* put source maps first for better statsAleksey Kladov2019-06-301-6/+6
|
* print memory usage for queriesAleksey Kladov2019-06-301-0/+4
|
* make sure that CrateDefMap is independent from syntaxAleksey Kladov2019-06-261-27/+33
|
* cache chalk queriesAleksey Kladov2019-06-261-0/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | This gives a significant speedup, because chalk will call these functions several times even withing a single revision. The only significant one here is `impl_data`, but I figured it might be good to cache others just for consistency. The results I get are: Before: from scratch: 16.081457952s no change: 15.846493ms trivial change: 352.95592ms comment change: 361.998408ms const change: 457.629212ms After: from scratch: 14.910610278s no change: 14.934647ms trivial change: 85.633023ms comment change: 96.433023ms const change: 171.543296ms Seems like a nice win!
* Add firewall query to lang itemsAleksey Kladov2019-06-191-0/+3
| | | | | With an intermediate query, changing one module won't cause reparsing of all modules
* rename XSignature -> XDataAleksey Kladov2019-06-181-8/+8
|
* Simplifications / cleanup from reviewFlorian Diebold2019-06-161-2/+2
|
* Add basic infrastructure for assoc type projectionFlorian Diebold2019-06-151-4/+10
|
* move docs under code modelAleksey Kladov2019-06-111-2/+2
|
* make documenation a queryAleksey Kladov2019-06-081-0/+3
|
* don't cache parses twiceAleksey Kladov2019-06-021-0/+3
| | | | | | | | | Before this commit, `Parse`s for original file ended up two times in salsa's db: first, when we parse original file, and second, when we parse macro or a file. Given that parse trees are the worst ofenders in terms of memory, it makes sense to make sure we store them only once.
* add AstDatabaseAleksey Kladov2019-06-021-22/+28
|
* collect impl source mapsAleksey Kladov2019-06-011-3/+0
|
* don't cache ast_id_to_nodeAleksey Kladov2019-06-011-0/+1
|
* don't poison mutex around chalkAleksey Kladov2019-06-011-1/+2
| | | | | | | | | We use panics for cancellation, so we could trigger panic while holding the solver. std::sync::Mutex will be poisoned as a result, which and all further attempts to use solver (from other threads) will panic as well. This commit switches to parking_lot::Mutex which just unlocks on panic.
* profile type inferenceAleksey Kladov2019-05-211-1/+1
|
* add _query to query functionsAleksey Kladov2019-05-211-3/+3
|
* Add infer for generic default typeEdwin Cheng2019-05-191-1/+4
|
* expand to syntax nodeAleksey Kladov2019-05-141-3/+3
|
* Handle where clauses in trait solvingFlorian Diebold2019-05-111-1/+4
|
* Turn `implements` into a query againFlorian Diebold2019-05-071-0/+7
|
* Document the peculiarity of the solver query a bitFlorian Diebold2019-05-041-1/+6
| | | | | Also remove the only remaining mention of chalk outside of the ty::traits module.
* Chalk integrationFlorian Diebold2019-05-041-8/+18
| | | | | - add proper canonicalization logic - add conversions from/to Chalk IR
* make macro expansion into a proper queryAleksey Kladov2019-05-041-0/+3
|
* introduce macro_arg intermediate queryAleksey Kladov2019-05-041-1/+4
| | | | | | | | | | | | Currently, when expanding macros, we look at the source code directly (we invoke ast_id_to_node query via to_node method). This is less then ideal, because it make us re-expand macros after every source change. This commit establishes a salsa-firewall: a query to get macro call's token tree. Unlike the syntax tree, token tree changes only if we actually modify the macro itself.
* Revert "eagarly clean astd maps"Aleksey Kladov2019-05-041-1/+1
| | | | | | This reverts commit 6c63a59425e256ce46d058807b64149297231982. This causes massive slowdowns: looks like we accidentally have some source-depndent
* eagarly clean astd mapsAleksey Kladov2019-05-041-1/+1
|
* lang_item_lookup is now a salsa query.Marco Groppo2019-04-191-2/+5
|
* Initial support for lang items.Marco Groppo2019-04-191-0/+4
|
* More trait infrastructureFlorian Diebold2019-04-141-2/+5
| | | | | | | | | | - make it possible to get parent trait from method - add 'obligation' machinery for checking that a type implements a trait (and inferring facts about type variables from that) - handle type parameters of traits (to a certain degree) - improve the hacky implements check to cover enough cases to exercise the handling of traits with type parameters - basic canonicalization (will probably also be done by Chalk)
* migrate to salsas interningAleksey Kladov2019-04-091-4/+22
|
* Added const bodies and static body to the astLenard Pratt2019-04-021-1/+1
| | | | | | and added inference the inference test reduce code duplication
* Added defWithBodyLenard Pratt2019-03-301-4/+5
|
* renameAleksey Kladov2019-03-261-5/+5
|
* simplifyAleksey Kladov2019-03-261-1/+1
|
* move source_id to a separate fileAleksey Kladov2019-03-261-2/+2
|
* make macro parsing a queryAleksey Kladov2019-03-261-1/+4
|
* store macro def inside macro idAleksey Kladov2019-03-261-3/+6
| | | | | | | | This solves the problem of "macro expansion can't call into name resolution, because name resolution calls back into macro expansion" Because we store macro def as a part of call id, macro expansion just knows the def!
* Implement a very naive implements checkFlorian Diebold2019-03-251-1/+4
| | | | ... to make the infer_trait_method_simple test have the correct result.
* Basics for trait method resolutionFlorian Diebold2019-03-251-0/+4
|
* rename persistent hir database -> def databaseAleksey Kladov2019-03-231-3/+3
|
* remove old macro supportAleksey Kladov2019-03-171-6/+1
|
* Reorganize name resolutionAleksey Kladov2019-03-171-1/+1
|
* remove lower moduleAleksey Kladov2019-03-171-10/+4
|
* remove ItemMapAleksey Kladov2019-03-171-4/+1
|