aboutsummaryrefslogtreecommitdiff
path: root/crates
Commit message (Collapse)AuthorAgeFilesLines
* Simplify subst / subst_bound_vars a bitFlorian Diebold2019-05-041-12/+2
|
* Handle recursive types in canonicalizationFlorian Diebold2019-05-043-5/+15
|
* Remove ToChalk implementation for ApplicationTyFlorian Diebold2019-05-041-29/+16
|
* Make canonicalization API a bit nicerFlorian Diebold2019-05-042-31/+56
|
* Update ChalkFlorian Diebold2019-05-043-11/+16
|
* Turn eprintln!s into debug!sFlorian Diebold2019-05-042-8/+12
|
* Handle Ty::Unknown in Chalk conversionFlorian Diebold2019-05-041-1/+5
| | | | Badly, but at least it doesn't crash.
* Canonicalize before doing method resolutionFlorian Diebold2019-05-047-133/+165
|
* Document the peculiarity of the solver query a bitFlorian Diebold2019-05-042-3/+10
| | | | | Also remove the only remaining mention of chalk outside of the ty::traits module.
* Move Chalk conversion code to its own moduleFlorian Diebold2019-05-043-321/+339
|
* Implement Deref<Target=[Ty]> for SubstsFlorian Diebold2019-05-042-18/+18
|
* Simplify solution_from_chalkFlorian Diebold2019-05-041-12/+11
|
* Chalk integrationFlorian Diebold2019-05-0413-147/+677
| | | | | - add proper canonicalization logic - add conversions from/to Chalk IR
* Add Ty::Bound variant for use in Chalk integrationFlorian Diebold2019-05-041-2/+7
|
* Merge #1238bors[bot]2019-05-045-69/+64
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1238: Macro queries r=edwin0cheng a=matklad In https://github.com/rust-analyzer/rust-analyzer/pull/1231, I've added aggressive clean up of `ast_id_to_node` query. The result of this query is a `SyntaxTree`, and we don't want to retain syntax trees in memory unless absolutely necessary. Moreover, `SyntaxTree` has identity equality semantics, meaning that we'll get a diffferent syntax tree for a file after every reparse. That means that `ast_id_to_node` query should not genereally be used in HIR, unless it is behind some kind of salsa firewall, like the `raw` module of name resoulution. However, that PR resulted in the abysmal performance: turns out we were using ast_id_to_node quite heavily in hir when expanding macros! So this PR installs the more incremental-friendly query structure: * converting source to token tree is now a query; changing source without affecting token-trees will now preserve macro expansions * expand macro (tt -> tt) is now a query as well, so we cache macro expansions *before* parsing them into item lists or expressions, which is nice: we can cache expansion without knowing the calling context! r? @edwin0cheng Co-authored-by: Aleksey Kladov <[email protected]>
| * make macro expansion into a proper queryAleksey Kladov2019-05-043-35/+28
| |
| * minor, moveAleksey Kladov2019-05-041-19/+19
| |
| * introduce macro_arg intermediate queryAleksey Kladov2019-05-043-25/+27
| | | | | | | | | | | | | | | | | | | | | | | | 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-043-3/+3
| | | | | | | | | | | | This reverts commit 6c63a59425e256ce46d058807b64149297231982. This causes massive slowdowns: looks like we accidentally have some source-depndent
* | Add testEdwin Cheng2019-05-041-0/+2
| |
* | Error out when parse_subtree is not a subtreeEdwin Cheng2019-05-041-3/+6
|/
* Merge #1235bors[bot]2019-05-041-6/+1
|\ | | | | | | | | | | | | | | 1235: revert eagarly clean astd maps r=matklad a=matklad Co-authored-by: Aleksey Kladov <[email protected]>
| * revert eagarly clean astd mapsAleksey Kladov2019-05-041-6/+1
| | | | | | | | This causes massive slowdown :-(
* | Merge #1230bors[bot]2019-05-042-3/+95
|\ \ | |/ |/| | | | | | | | | | | | | | | 1230: Desugar doc comments to `#[doc = "...."]` attributes in `syntax node` to tt conversion r=matklad a=edwin0cheng As discussed in [Zulip](https://rust-lang.zulipchat.com/#narrow/stream/185405-t-compiler.2Fwg-rls-2.2E0/topic/MBE.20discussion/near/164446835), this PR desugar doc comments to `#[doc = "...."]` in `syntax node` to tt conversion. Note that after this PR, all obvious mbe bugs in dogfooding are fixed. (i.e. No parsing or expanding mbe error in `env RUST_LOG=ra_hir=WARN target\release\ra_cli.exe analysis-stats`) 🎉 Co-authored-by: Edwin Cheng <[email protected]>
| * Quote the quoted commentEdwin Cheng2019-05-042-2/+2
| |
| * Use explict `escape_default` instead of dbg printEdwin Cheng2019-05-041-1/+1
| |
| * Convert doc comment to attrEdwin Cheng2019-05-042-3/+95
| |
* | eagarly clean astd mapsAleksey Kladov2019-05-044-3/+9
|/
* Mark unused mbe variable as `Binding::Empty`Edwin Cheng2019-05-032-13/+61
|
* By pass unbind $var while mbe expandingEdwin Cheng2019-05-033-7/+39
|
* Refactor out tests module and remove empty subtreeEdwin Cheng2019-05-033-1137/+1372
|
* Merge #1227bors[bot]2019-05-033-1/+8
|\ | | | | | | | | | | | | | | 1227: Add `default_type` method in `TypeParam` Node r=matklad a=edwin0cheng This PR add a `default_type` method in `TypeParam` Node which allow future PR to handle #1099 case. Co-authored-by: Edwin Cheng <[email protected]>
| * Add default type param in TypeParam NodeEdwin Cheng2019-05-033-1/+8
| |
* | Fixed old incorrect testEdwin Cheng2019-05-021-1/+1
| |
* | Fix typoEdwin Cheng2019-05-021-3/+3
| |
* | Compare text insteadEdwin Cheng2019-05-021-2/+2
| |
* | Add empty bindings and some refactoringEdwin Cheng2019-05-022-22/+41
|/
* Make `vis` matcher optional and fix typoEdwin Cheng2019-05-023-5/+28
|
* Remove unused code in subtree_sourceEdwin Cheng2019-05-021-182/+41
|
* FormatingEdwin Cheng2019-05-021-1/+1
|
* Remove unused code and add space bewteen ttEdwin Cheng2019-05-022-32/+80
|
* Merge #1222bors[bot]2019-05-011-1/+9
|\ | | | | | | | | | | | | | | 1222: Skip Dollars when bump raw token r=matklad a=edwin0cheng This PR fixed a bug while parsing token_tree, it should skip all L_DOLLAR AND R_DOLLAR. Co-authored-by: Edwin Cheng <[email protected]>
| * Skip Dollars when bump raw tokenEdwin Cheng2019-05-011-1/+9
| |
* | Merge #1223bors[bot]2019-05-012-0/+117
|\ \ | |/ |/| | | | | | | | | | | 1223: Move guard to arm body assist r=matklad a=unrealhoang This is my attempt at #1206 Co-authored-by: Unreal Hoang <[email protected]>
| * add complex match case and documentationUnreal Hoang2019-05-011-13/+29
| |
| * move guard to arm body assist.Unreal Hoang2019-05-012-0/+101
| |
* | Merge #1220bors[bot]2019-05-013-1/+49
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1220: Add macro pat parsing r=matklad a=edwin0cheng This PR add support to parsing macro call in pattern , e.g : ``` let m!(x) = 0; ``` Co-authored-by: Edwin Cheng <[email protected]>
| * | Add macro pat parsingEdwin Cheng2019-04-303-1/+49
| | |
* | | Use correct FileId when expanding macros in expressionsAleksey Kladov2019-05-012-33/+44
| |/ |/|
* | Sidestep two-phase borrow violation signaled by ↵Felix S. Klock II2019-04-291-2/+3
|/ | | | | | mutable_borrow_reservation_conflict. See rust-lang/rust#59159 for further information/discussion.