aboutsummaryrefslogtreecommitdiff
path: root/crates
Commit message (Collapse)AuthorAgeFilesLines
...
| * | 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
| | |
* | | Fix `$true` and `$false` as $var name errorEdwin Cheng2019-05-041-3/+24
|/ /
* | 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.
* Merge #1213bors[bot]2019-04-289-132/+185
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1213: Make lexer produce only single character puncts r=matklad a=edwin0cheng As discussed in Zulip, this PR change `lexer` to produce only single char punct. * Remove producing `DOTDOTDOT, DOTDOTEQ, DOTDOT, COLONCOLON, EQEQ, FAT_ARROW, NEQ, THIN_ARROW` in lexer. * Add required code in parser to make sure everythings works fine. * Change some tests (Mainly because the `ast::token_tree` is different) Note: i think the use of `COLON` in rust is too overloaded :) Co-authored-by: Edwin Cheng <[email protected]>