aboutsummaryrefslogtreecommitdiff
path: root/crates/mbe/src
Commit message (Collapse)AuthorAgeFilesLines
* Rewrite `convert_tokens` to use an explicit stackJonas Schievink2021-06-221-40/+80
|
* Move subtree collection out of `TokenConvertor`Jonas Schievink2021-06-221-124/+124
|
* Apply some clippy suggestionsClemens Wasser2021-06-216-16/+17
|
* Nest all the or-patterns!Lukas Wirth2021-06-171-19/+3
|
* Merge #9260bors[bot]2021-06-141-1/+1
|\ | | | | | | | | | | | | | | 9260: tree-wide: make rustdoc links spiky so they are clickable r=matklad a=lf- Rustdoc was complaining about these while I was running with --document-private-items and I figure they should be fixed. Co-authored-by: Jade <[email protected]>
| * tree-wide: make rustdoc links spiky so they are clickableJade2021-06-141-1/+1
| |
* | clippy::redundant_field_namesMaan20032021-06-131-1/+1
| |
* | clippy::redudant_borrowMaan20032021-06-138-30/+30
| |
* | Update ungrammarJonas Schievink2021-06-111-20/+22
|/
* Apply more clippy suggestions and update generatedClemens Wasser2021-06-036-25/+17
|
* Treat `pat_param` like `pat` fragmentsJonas Schievink2021-05-291-1/+1
|
* FixupJonas Schievink2021-05-242-4/+8
|
* Make `TokenTextRange` privateJonas Schievink2021-05-242-7/+6
|
* Move `TokenMap` to its own fileJonas Schievink2021-05-243-81/+89
|
* Add even more docsAleksey Kladov2021-05-223-3/+6
|
* 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
|
* 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
| |
* | Use upstream cov-markLaurențiu Nicola2021-03-082-6/+5
|/
* Fix fail to parse :: for meta in mbeEdwin Cheng2021-03-051-1/+2
|
* Merge #7513bors[bot]2021-03-027-163/+578
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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-287-163/+578
| |
* | 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-242-0/+214
|
* 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-253-87/+227
|
* :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
|