aboutsummaryrefslogtreecommitdiff
path: root/crates/mbe
Commit message (Collapse)AuthorAgeFilesLines
* Merge #8560bors[bot]2021-04-182-3/+23
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 8560: Escape characters in doc comments in macros correctly r=jonas-schievink a=ChayimFriedman2 Previously they were escaped twice, both by `.escape_default()` and the debug view of strings (`{:?}`). This leads to things like newlines or tabs in documentation comments being `\\n`, but we unescape literals only once, ending up with `\n`. This was hard to spot because CMark unescaped them (at least for `'` and `"`), but it did not do so in code blocks. This also was the root cause of #7781. This issue was solved by using `.escape_debug()` instead of `.escape_default()`, but the real issue remained. We can bring the `.escape_default()` back by now, however I didn't do it because it is probably slower than `.escape_debug()` (more work to do), and also in order to change the code the least. Example (the keyword and primitive docs are `include!()`d at https://doc.rust-lang.org/src/std/lib.rs.html#570-578, and thus originate from macro): Before: ![image](https://user-images.githubusercontent.com/24700207/115130096-40544300-9ff5-11eb-847b-969e7034e8a4.png) After: ![image](https://user-images.githubusercontent.com/24700207/115130143-9cb76280-9ff5-11eb-9281-323746089440.png) Co-authored-by: Chayim Refael Friedman <[email protected]>
| * Escape characters in doc comments in macros correctlyChayim Refael Friedman2021-04-182-3/+23
| | | | | | | | | | | | | | | | | | Previously they were escaped twice, both by `.escape_default()` and the debug view of strings (`{:?}`). This leads to things like newlines or tabs in documentation comments being `\\n`, but we unescape literals only once, ending up with `\n`. This was hard to spot because CMark unescaped them (at least for `'` and `"`), but it did not do so in code blocks. This also was the root cause of #7781. This issue was solved by using `.escape_debug()` instead of `.escape_default()`, but the real issue remained. We can bring the `.escape_default()` back by now, however I didn't do it because it is probably slower than `.escape_debug()` (more work to do), and also in order to change the code the least.
* | Handle extended key value attr in mbeEdwin Cheng2021-04-171-0/+18
| |
* | Make `ast_to_token_tree` infallibleJonas Schievink2021-04-045-22/+19
| | | | | | | | It could never return `None`, so reflect that in the return type
* | Allow include! an empty content fileEdwin Cheng2021-04-031-3/+0
| |
* | Allow `,` to delimit macro 2.0 rulesJonas Schievink2021-04-033-2/+30
|/
* a lot of clippy::style fixesMatthias Krüger2021-03-214-8/+7
|
* clippy::complexity simplifications related to IteratorsMatthias Krüger2021-03-211-2/+1
|
* Fix and test edge cases of `_` as identKevin Mehall2021-03-203-3/+13
|
* Make bare underscore token an Ident rather than Punct in proc-macroKevin Mehall2021-03-205-12/+15
|
* Reorganize mbe testsEdwin Cheng2021-03-183-1959/+1952
|
* don't clone types that are copy (clippy::clone_on_copy)Matthias Krüger2021-03-172-4/+3
|
* use if let Some(x) instead of if x.is_some() and x.unwrap() ↵Matthias Krüger2021-03-171-6/+6
| | | | (clippy::unnecessary-unwrap)
* avoid converting types into themselves via .into() (clippy::useless-conversion)Matthias Krüger2021-03-174-14/+12
| | | | example: let x: String = String::from("hello world").into();
* Fix macro expansion for statements w/o semicolonEdwin Cheng2021-03-161-6/+5
|
* Enable thread-local coverage marksLaurențiu Nicola2021-03-151-1/+1
|
* some clippy::performance fixesMatthias Krüger2021-03-151-6/+2
| | | | | | | use vec![] instead of Vec::new() + push() avoid redundant clones use chars instead of &str for single char patterns in ends_with() and starts_with() allocate some Vecs with capacity to avoid unneccessary resizing
* Simpify mbe bindings builderEdwin Cheng2021-03-141-63/+57
|
* Make sure ill-form macro handle propelyEdwin Cheng2021-03-141-2/+5
|
* Merge #7994bors[bot]2021-03-133-67/+221
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7994: Speed up mbe matching in heavy recursive cases r=edwin0cheng a=edwin0cheng In some cases (e.g. #4186), mbe matching is very slow due to a lot of copy and allocation for bindings, this PR try to solve this problem by introduce a semi "link-list" approach for bindings building. I used this [test case](https://github.com/weiznich/minimal_example_for_rust_81262) (for `features(32-column-tables)`) to run following command to benchmark: ``` time rust-analyzer analysis-stats --load-output-dirs ./ ``` Before this PR : 2 mins After this PR: 3 seconds. However, for 64-column-tables cases, we still need 4 mins to complete. I will try to investigate in the following weeks. bors r+ Co-authored-by: Edwin Cheng <[email protected]>
| * Add bindings builder for speed up matchingEdwin Cheng2021-03-133-67/+221
| |
* | Compilation speedAleksey Kladov2021-03-091-1/+1
| |
* | Use upstream cov-markLaurențiu Nicola2021-03-083-6/+6
|/
* Fix fail to parse :: for meta in mbeEdwin Cheng2021-03-051-1/+2
|
* Merge #7513bors[bot]2021-03-028-163/+579
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7513: NFA parser for mbe matcher r=matklad a=edwin0cheng Almost straight porting from rustc one, but a little bit slow :( ``` rust-analyzer analysis-stats -q . ``` From: ```log Database loaded: 636.11ms, 277minstr crates: 36, mods: 594, decls: 11527, fns: 9017 Item Collection: 10.99s, 60ginstr exprs: 249618, ??ty: 2699 (1%), ?ty: 2101 (0%), !ty: 932 Inference: 28.94s, 123ginstr Total: 39.93s, 184ginstr ``` To: ```log Database loaded: 630.90ms, 277minstr crates: 36, mods: 594, decls: 11528, fns: 9018 Item Collection: 13.70s, 77ginstr exprs: 249482, ??ty: 2699 (1%), ?ty: 2101 (0%), !ty: 932 Inference: 30.27s, 133ginstr Total: 43.97s, 211ginstr ``` Fixes #4777 Co-authored-by: Edwin Cheng <[email protected]>
| * NFA parser for mbe matcherEdwin Cheng2021-02-288-163/+579
| |
* | Use an unversioned profile dependency in mbeLaurențiu Nicola2021-03-011-5/+2
| |
* | Merge #7822bors[bot]2021-03-011-1/+3
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | 7822: Paperover a bug in cargo-workspace for publish RA r=lnicola a=edwin0cheng r? @lnicola See also https://github.com/pksunkara/cargo-workspaces/issues/39 Co-authored-by: Edwin Cheng <[email protected]>
| * | Paperover a bug in cargo-workspace for publish RAEdwin Cheng2021-03-011-1/+3
| |/
* / Remove redundant semicolonDániel Buga2021-03-011-1/+1
|/
* Fix non-latin characters doc comment for mbeEdwin Cheng2021-02-282-1/+24
|
* Fix builtin macros split exprs on commaEdwin Cheng2021-02-284-69/+119
|
* Add benchmark test for mbeEdwin Cheng2021-02-243-0/+217
|
* Make sure normal dependencies always have versionPavan Kumar Sunkara2021-02-031-1/+1
|
* Simpilfy mbe parsingEdwin Cheng2021-01-304-74/+71
|
* Simplify mbe match error.Edwin Cheng2021-01-296-210/+180
| | | | Handle parse error in rule parsing instead of match in mbe
* Rename mbe_expander for consistencyEdwin Cheng2021-01-294-5/+5
|
* Support Macro v2 in mbeEdwin Cheng2021-01-254-89/+228
|
* :arrow_up: rowanAleksey Kladov2021-01-201-3/+1
| | | | It now stores text inline with tokens
* .Aleksey Kladov2021-01-191-1/+1
|
* Reduce TokenMap sizeEdwin Cheng2021-01-191-10/+16
|
* shrink_to_fit `TokenMap`'s backing storageJonas Schievink2021-01-181-1/+3
|
* Swap assert_eq_text\!(expected, actual)yugo-horie2021-01-161-5/+5
|
* Merge #7211bors[bot]2021-01-141-1/+22
|\ | | | | | | | | | | | | | | | | | | | | | | 7211: Fixed expr meta var after path colons in mbe r=matklad a=edwin0cheng Fixes #7207 Added `L_DOLLAR` in `ITEM_RECOVERY_SET` , but I don't know whether it is a good idea. r? @matklad Co-authored-by: Edwin Cheng <[email protected]>
| * Fixed expr meta var after path colons in mbeEdwin Cheng2021-01-101-1/+22
| |
* | Fixed typos in public type namesVincent Esche2021-01-091-2/+2
| |
* | Fixed typos in private type namesVincent Esche2021-01-091-5/+5
| |
* | Fixed typos in testsVincent Esche2021-01-091-1/+1
| |
* | Fixed typos in `log::warn!` messageVincent Esche2021-01-091-5/+1
| |
* | Fixed typos in code commentsVincent Esche2021-01-093-3/+3
|/