aboutsummaryrefslogtreecommitdiff
path: root/crates
Commit message (Collapse)AuthorAgeFilesLines
* Merge #7116bors[bot]2021-01-012-4/+11
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | 7116: Fix deep syntax tree bug generated by proc-macro r=jonas-schievink a=edwin0cheng This PR fixed a bug from `semver-parser` and `pest_derive` crates which generate a very deep syntax tree such that serde reject to de-serialize. To fix this bug, we disabled recursion limit in `serde` (by calling [`Deserializer::disable_recursion_limit`](https://docs.rs/serde_json/1.0.61/serde_json/struct.Deserializer.html#method.disable_recursion_limit)) I have a feeling that we still need some way to protect against bad proc-macro generating huge syntax node, but I have no idea right now. r? @jonas-schievink Fixes #7103 Co-authored-by: Edwin Cheng <[email protected]>
| * Remove serde_stacker which depends on ccEdwin Cheng2021-01-012-3/+1
| |
| * Fix deep syntax tree bug generated by proc-macroEdwin Cheng2021-01-013-4/+13
| |
* | Merge #7102bors[bot]2021-01-011-2/+66
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7102: Fix completion of Default struct update syntax r=Veykril a=nick96 Previously the inserted text was always `..Default::default()` which ends up as `...Default::default()` if `.` was typed. Now checks if the current token is `.` and inserts `.Default::default()` if it is, so `..Default::default()` is correctly completed. I think there's probably a better way to implement this context aware completion because I've seen it in other parts of rust-analyzer as a user but I'm not sure how to do it. Fixes #6969 Co-authored-by: Nick Spain <[email protected]>
| * | Strip completion prefix of what has already been typedNick Spain2021-01-011-5/+4
| | | | | | | | | | | | | | | Per Veykril's suggestion, this removes the need to repeat the completion text twice. It also handles the completion in a more general case.
| * | Add a test for correct completion of ..Default::default()Nick Spain2021-01-011-1/+61
| | |
| * | Fix completion of Default struct update syntaxNick Spain2020-12-311-1/+6
| | | | | | | | | | | | | | | | | | | | | | | | Previously the inserted text was always `..Default::default()` which ends up as `...Default::default()` if `.` was typed. Now checks if the current token is `.` and inserts `.Default::default()` if it is, so `..Default::default()` is correctly completed. Fixes #6969
* | | Merge #7071bors[bot]2020-12-311-0/+5
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7071: Pass --all-targets to "cargo check" when discovering external resources r=matklad a=WasabiFan There is a repro case and background in the linked issue. In short, the goal of this MR is to allow rust-analyzer to discover proc-macros which come from your tests (including, most importantly, dev-dependencies). By default, `cargo check` implies the equivalent of `--lib --bins`, meaning it'll check your libraries and binaries -- but not tests! This means proc-macros (or, I guess, build scripts as well) weren't discovered by rust-analyzer if they came from tests. One solution would be to manually add `--lib --bins --tests` (i.e., just augment the effective options to include tests). However, in this MR, I threw in `--all-targets`, which [according to the docs](https://doc.rust-lang.org/cargo/commands/cargo-check.html#target-selection) implies `--benches --examples` too. I have absolutely no idea what repercussions that will have on rust-analyzer for other projects, nor do I know if it's a problem that build scripts will now be discovered for tests/examples/benches. But I am not aware of a reason you _wouldn't_ want to discover these things in your examples too. I think the main drawback of this change is that it will likely slow down the `cargo check`. At a minimum, it'll now be checking your tests _and_ their dependencies. The `cargo check` docs also say that including `--tests` as I have here may cause your lib crate to be built _twice_, once for the normal target and again for unit tests. My reading of that caveat suggests that "building twice" means it's built once for the tests _inside_ your lib, with a test profile, and again for any consumers of your lib, now using a normal release profile or similar. This doesn't seem surprising. Very minor caveat: `--tests` will not include tests within a binary if it has `test = false` set in `Cargo.toml`. (I discovered this manually by trial-and-error, but hey, it actually says that in the docs!) This is likely not an issue, but _does_ mean that if you are -- for whatever reason -- disabling tests like that and then manually specifying `cargo test --package <...> --bin <...>` to run them, rust-analyzer will remain unaware of proc-macros in your tests. I have confirmed this fixes the original issue in my sandbox example linked in #7034 and in my own project in which I originally discovered this. I've left it configured as my default RA language server and will report back if I notice any unexpected side-effects. Fixes #7034 Co-authored-by: Kaelin Laundry <[email protected]>
| * | | Pass --all-targets to "cargo check"Kaelin Laundry2020-12-291-0/+5
| | | |
* | | | Merge #7106bors[bot]2020-12-315-23/+75
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7106: Split textDocument/formatting TextEdit with diff r=matklad a=Jesse-Bakker #7044 Co-authored-by: Jesse Bakker <[email protected]>
| * | | | Split textDocument/formatting TextEdit with diffJesse Bakker2020-12-315-23/+75
| | | | |
* | | | | add working dir to cargo metadata fail messageslf-2020-12-311-1/+17
| | | | |
* | | | | handle_formatting: Notice if rustfmt is missing and reportDaniel Silverstone2020-12-311-4/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In an attempt to fix #6052 and #4249 this attempts to detect if rustfmt is a rustup proxy which isn't installed, and reports the error message to the user for them to fix. In theory this ought to be memoised but for now it'll do as-is. Future work might be to ask the user if they would like us to trigger the installation (if possible). Signed-off-by: Daniel Silverstone <[email protected]>
* | | | | Merge #7105bors[bot]2020-12-311-1/+2
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7105: Fix `==` in in format causes mismatched-arg-count r=edwin0cheng a=edwin0cheng Fixes #7085 Co-authored-by: Edwin Cheng <[email protected]>
| * | | | | Fix `==` in in format causes mismatched-arg-countEdwin Cheng2020-12-311-1/+2
| | |_|_|/ | |/| | |
* / | | | Remove some unneeded string allocationsLukas Wirth2020-12-313-3/+5
|/ / / /
* | | / Fix spacing in proc-macro tokens to_stringEdwin Cheng2020-12-311-7/+36
| |_|/ |/| |
* | | Merge #7099bors[bot]2020-12-301-8/+4
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7099: Remove unused clones in mbe r=edwin0cheng a=edwin0cheng bors r+ Co-authored-by: Edwin Cheng <[email protected]>
| * | | Remove unused clones in mbeEdwin Cheng2020-12-301-8/+4
| | | |
* | | | Update crateskjeremy2020-12-3011-11/+11
| | | |
* | | | SimplifyAleksey Kladov2020-12-301-2/+4
| | | |
* | | | Merge #7090bors[bot]2020-12-301-0/+2
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7090: Allow spurious warning from rust-lang/rust#80501 r=lnicola a=lnicola bors r+ Co-authored-by: Laurențiu Nicola <[email protected]>
| * | | | Allow spurious warning from rust-lang/rust#80501Laurențiu Nicola2020-12-301-0/+2
| | | | |
* | | | | indentationAdnoC2020-12-301-3/+3
| | | | |
* | | | | test for new behaviorAdnoC2020-12-301-0/+16
| | | | |
* | | | | Smarter bracketed use diagnosticAdnoC2020-12-302-0/+14
| |/ / / |/| | |
* | | | Merge #7083bors[bot]2020-12-304-76/+99
|\ \ \ \ | |/ / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7083: Refactor mbe parsing code r=edwin0cheng a=edwin0cheng Inspire by #5426 , this PR refactor out the parsing code such that it only parsed on `mbe::Rule`, but not on invocations. However, it just improve the overall performance unnoticeablely :( Co-authored-by: Edwin Cheng <[email protected]>
| * | | Refactor mbe parsing codeEdwin Cheng2020-12-294-76/+99
| | |/ | |/|
* | | Avoid a couple of allocationsLaurențiu Nicola2020-12-2910-60/+61
| | |
* | | Merge #7064bors[bot]2020-12-293-49/+188
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7064: Ignore qualifiers when doing autoimport completions lookup r=lnicola a=SomeoneToIgnore A follow-up of https://github.com/rust-analyzer/rust-analyzer/pull/6918#issuecomment-748511151 and the PR itself. Tweaks the `import_map` query api to be more flexible with the ways to match against the import path and now fuzzy imports search in names only. This had improved the completion speed for me locally in ~5 times for `fuzzy_completion` span time, but please recheck me here. IMO we're fast and presice enough now, so I've added the modules back to the fuzzy search output. Also tweaks the the expect tests to display functions explicitly, to avoid confusing "duplicate" results. Co-authored-by: Kirill Bulatov <[email protected]>
| * | | Tweak the fuzzy search limitsKirill Bulatov2020-12-281-1/+6
| | | |
| * | | Better display methods in expect testsKirill Bulatov2020-12-281-15/+31
| | | |
| * | | Add testsKirill Bulatov2020-12-281-2/+71
| | | |
| * | | Add docs and optimisationsKirill Bulatov2020-12-283-9/+18
| | | |
| * | | Better query api and fuzzy searchKirill Bulatov2020-12-283-41/+47
| | | |
| * | | Draft the module exclusion in modulesKirill Bulatov2020-12-283-37/+71
| |/ /
* | | Merge #7076bors[bot]2020-12-291-1/+10
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7076: Properly parse path separators in format-like postfix r=Veykril a=Veykril Co-authored-by: Lukas Wirth <[email protected]>
| * | | Properly parse path separators in format-like postfixLukas Wirth2020-12-291-1/+10
| |/ /
* | | Merge #7075bors[bot]2020-12-292-2/+2
|\ \ \ | |/ / |/| | | | | | | | | | | | | | | | | | | | 7075: format-postfix completion takes format instead of fmt r=lnicola a=Veykril See https://github.com/rust-analyzer/rust-analyzer/issues/6843 this brings it back in line with the documentation Co-authored-by: Lukas Wirth <[email protected]>
| * | format-postfix completion takes format instead of fmtLukas Wirth2020-12-292-2/+2
| | |
* | | Merge #7060bors[bot]2020-12-283-3/+15
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7060: Fix mbe fail to pass expr with attr r=edwin0cheng a=edwin0cheng bors r+ Fixes #5896 Co-authored-by: Edwin Cheng <[email protected]>
| * | | Fixed old failed test due to new fixesEdwin Cheng2020-12-281-2/+2
| | | |
| * | | Fix mbe fail to pass expr with attrEdwin Cheng2020-12-282-1/+13
| | | |
* | | | Special case underscore in mbe meta opEdwin Cheng2020-12-282-2/+45
| | | |
* | | | Rollback 6929Edwin Cheng2020-12-281-2/+1
|/ / /
* | | Merge #7050bors[bot]2020-12-272-20/+36
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7050: Ignore third punct when matching for 2-composite punct in mbe r=jonas-schievink a=edwin0cheng Fixes #6692 Co-authored-by: Edwin Cheng <[email protected]>
| * | | Ignore third punct in 2-composite punctEdwin Cheng2020-12-272-20/+36
| | | |
* | | | Pass crate environment to proc macrosJonas Schievink2020-12-276-9/+42
| | | |
* | | | Move TokenExpander to base_db and rename itJonas Schievink2020-12-274-12/+12
|/ / / | | | | | | | | | It's only used to break the dependency to proc_macro_api
* | | Merge #7047bors[bot]2020-12-274-8/+44
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7047: Add force_show_panics flag for proc-macro bridge r=jonas-schievink a=edwin0cheng https://github.com/rust-lang/rust/pull/75082 and https://github.com/rust-lang/rust/pull/76292 added a new flag in `proc_macro::Bridge` such that the ABI was changed. These ABI changing are the reason of some weird panics which caused #6880 and maybe related to the panic mentioned in #6820. These changes are landed on rust stable 1.48 so I think it is okay to apply it now. fixes #6880 r @jonas-schievink Co-authored-by: Edwin Cheng <[email protected]>