aboutsummaryrefslogtreecommitdiff
path: root/crates/mbe
Commit message (Collapse)AuthorAgeFilesLines
...
* Merge #7145bors[bot]2021-01-083-19/+14
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7145: Proper handling $crate Take 2 [DO NOT MERGE] r=edwin0cheng a=edwin0cheng Similar to previous PR (#7133) , but improved the following things : 1. Instead of storing the whole `ExpansionInfo`, we store a similar but stripped version `HygieneInfo`. 2. Instread of storing the `SyntaxNode` (because every token we are interested are IDENT), we store the `TextRange` only. 3. Because of 2, we now can put it in Salsa. 4. And most important improvement: Instead of computing the whole frames every single time, we compute it recursively through salsa: (Such that in the best scenario, we only need to compute the first layer of frame) ```rust let def_site = db.hygiene_frame(info.def.file_id); let call_site = db.hygiene_frame(info.arg.file_id); HygieneFrame { expansion: Some(info), local_inner, krate, call_site, def_site } ``` The overall speed compared to previous PR is much faster (65s vs 45s) : ``` [WITH old PR] Database loaded 644.86ms, 284mi Crates in this dir: 36 Total modules found: 576 Total declarations: 11153 Total functions: 8715 Item Collection: 15.78s, 91562mi Total expressions: 240721 Expressions of unknown type: 2635 (1%) Expressions of partially unknown type: 2064 (0%) Type mismatches: 865 Inference: 49.84s, 250747mi Total: 65.62s, 342310mi rust-analyzer -q analysis-stats . 66.72s user 0.57s system 99% cpu 1:07.40 total [WITH this PR] Database loaded 665.83ms, 284mi Crates in this dir: 36 Total modules found: 577 Total declarations: 11188 Total functions: 8743 Item Collection: 15.28s, 84919mi Total expressions: 241229 Expressions of unknown type: 2637 (1%) Expressions of partially unknown type: 2064 (0%) Type mismatches: 868 Inference: 30.15s, 135293mi Total: 45.43s, 220213mi rust-analyzer -q analysis-stats . 46.26s user 0.74s system 99% cpu 47.294 total ``` *HOWEVER*, it is still a perf regression (35s vs 45s): ``` [WITHOUT this PR] Database loaded 657.42ms, 284mi Crates in this dir: 36 Total modules found: 577 Total declarations: 11177 Total functions: 8735 Item Collection: 12.87s, 72407mi Total expressions: 239380 Expressions of unknown type: 2643 (1%) Expressions of partially unknown type: 2064 (0%) Type mismatches: 868 Inference: 22.88s, 97889mi Total: 35.74s, 170297mi rust-analyzer -q analysis-stats . 36.71s user 0.63s system 99% cpu 37.498 total ``` Co-authored-by: Edwin Cheng <[email protected]>
| * Proper handling $crate Take 2Edwin Cheng2021-01-073-19/+14
| |
* | Simplify SubtreeTokenSourceEdwin Cheng2021-01-041-88/+60
| |
* | Refactor TokenBuffer for reduc cloningEdwin Cheng2021-01-043-19/+18
| |
* | Reduce string copyingEdwin Cheng2021-01-041-14/+16
|/
* Revert "Proper handling $crate and local_inner_macros"Jonas Schievink2021-01-033-14/+19
|
* Introduce HygieneFrames for proper token hygineeEdwin Cheng2021-01-023-19/+14
|
* Remove unused clones in mbeEdwin Cheng2020-12-301-8/+4
|
* Refactor mbe parsing codeEdwin Cheng2020-12-294-76/+99
|
* Merge #7060bors[bot]2020-12-281-0/+12
|\ | | | | | | | | | | | | | | | | | | 7060: Fix mbe fail to pass expr with attr r=edwin0cheng a=edwin0cheng bors r+ Fixes #5896 Co-authored-by: Edwin Cheng <[email protected]>
| * Fix mbe fail to pass expr with attrEdwin Cheng2020-12-281-0/+12
| |
* | Special case underscore in mbe meta opEdwin Cheng2020-12-282-2/+45
| |
* | Rollback 6929Edwin Cheng2020-12-281-2/+1
|/
* Ignore third punct in 2-composite punctEdwin Cheng2020-12-272-20/+36
|
* Use pattern_single instead of pattern in mbe patEdwin Cheng2020-12-201-0/+12
|
* mbe: treat _ as identLaurențiu Nicola2020-12-204-3/+18
|
* Node-ify lifetimesLukas Wirth2020-12-163-5/+9
|
* Move to upstream `macro_rules!` modelJonas Schievink2020-12-152-3/+3
|
* Add missing arg for eat_charEdwin Cheng2020-12-111-3/+3
|
* negative sign matching in mbe matching for literalEdwin Cheng2020-12-112-6/+39
|
* Add dedicated error for "proc macro not found"Jonas Schievink2020-11-271-0/+2
|
* Simplify error formattingLaurențiu Nicola2020-11-261-1/+1
|
* Implement `Display` for macro expansion errorsJonas Schievink2020-11-261-0/+16
|
* Use `ExpandResult` instead of `MacroResult`Jonas Schievink2020-11-261-0/+8
| | | | `MacroResult` is redundant
* Use named fields in `ExpandResult`Jonas Schievink2020-11-264-28/+38
|
* Remove more unreachable pubsAleksey Kladov2020-11-021-1/+1
|
* Deny unreachable-pubAleksey Kladov2020-11-022-9/+9
| | | | | | | | It's very useful when `pub` is equivalent to "this is crate's public API", let's enforce this! Ideally, we should enforce it for local `cargo test`, and only during CI, but that needs https://github.com/rust-lang/cargo/issues/5034.
* CleanupAleksey Kladov2020-10-071-12/+10
|
* Added unit test for negative number literals in macros.Tim2020-10-061-0/+21
|
* Fixed parsing of negative number literals in macros.Tim2020-10-061-5/+12
|
* Bump smol_str from 0.1.16 to 0.1.17Jean SIMARD2020-09-241-1/+4
|
* Add description for crates that will be publishedPavan Kumar Sunkara2020-08-241-0/+1
|
* Add version to deps in cargo.tomlPavan Kumar Sunkara2020-08-241-3/+3
|
* Rename ra_mbe -> mbeAleksey Kladov2020-08-1310-0/+4396