aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
...
* | | | | | Merge #7891bors[bot]2021-03-085-54/+114
|\ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7891: Improve handling of rustc_private r=matklad a=DJMcNab This PR changes how `rust-analyzer` handles `rustc_private`. In particular, packages now must opt-in to using `rustc_private` in `Cargo.toml`, by adding: ```toml [package.metadata.rust-analyzer] rustc_private=true ``` This means that depending on crates which also use `rustc_private` will be significantly improved, since their dependencies on the `rustc_private` crates will be resolved properly. A similar approach could be used in #6714 to allow annotating that your package uses the `test` crate, although I have not yet handled that in this PR. Additionally, we now only index the crates which are transitive dependencies of `rustc_driver` in the `rustcSource` directory. This should not cause any change in behaviour when using `rustcSource: "discover"`, as the source used then will only be a partial clone. However, if `rustcSource` pointing at a local checkout of rustc, this should significantly improve the memory usage and lower indexing time. This is because we avoids indexing all crates in `src/tools/`, which includes `rust-analyzer` itself. Furthermore, we also prefer named dependencies over dependencies from `rustcSource`. This ensures that feature resolution for crates which are depended on by both `rustc` and your crate uses the correct set for analysing your crate. See also [introductory zulip stream](https://rust-lang.zulipchat.com/#narrow/stream/185405-t-compiler.2Fwg-rls-2.2E0/topic/Fixed.20crate.20graphs.20and.20optional.20builtin.20crates/near/229086673) I have tested this in [priroda](https://github.com/oli-obk/priroda/), and it provides a significant improvement to the development experience (once I give `miri` the required data in `Cargo.toml`) Todo: - [ ] Documentation This is ready to review, and I will add documentation if this would be accepted (or if I get time to do so anyway) Co-authored-by: Daniel McNab <[email protected]>
| * | | | | | Document rustc_private in metadataDaniel McNab2021-03-083-3/+4
| | | | | | |
| * | | | | | Never run cargo check on the rustc sourceDaniel McNab2021-03-081-4/+1
| | | | | | |
| * | | | | | Only show directory nameDaniel McNab2021-03-081-1/+1
| | | | | | |
| * | | | | | Revert "Support disabling rustc build scripts"Daniel McNab2021-03-0810-60/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit ddce6bb282764692d53b719bff4c37e3512d4556.
| * | | | | | Support disabling rustc build scriptsDaniel McNab2021-03-0810-12/+61
| | | | | | |
| * | | | | | Fix the commentDaniel McNab2021-03-071-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | It's worse than I thought...
| * | | | | | Extract the large nested block into a functionDaniel McNab2021-03-071-72/+98
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Also add some more detailed comments Extract into function deleted the previous comments
| * | | | | | Require opt in to rustc_privateDaniel McNab2021-03-072-70/+70
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This gives the advantage that A future extension would be to check for `feature(rustc_private)` instead
| * | | | | | Don't double analyse the same crateDaniel McNab2021-03-071-1/+6
| | | | | | |
| * | | | | | Update crate graph to only use subcrates of rustc_driverDaniel McNab2021-03-071-38/+38
| | | | | | |
| * | | | | | If a manual dependency exists, don't overwriteDaniel McNab2021-03-061-1/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is a hack to work around miri being included in our analysis of rustc-dev Really, we should probably use an include set of the actual root libraries I'm not sure how those are determined however
| * | | | | | Implement opt-in (and opt-out) rustc_privateDaniel McNab2021-03-062-3/+26
| | | | | | |
* | | | | | | Merge #7920bors[bot]2021-03-082-33/+24
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7920: Cargo update r=kjeremy a=kjeremy Chalk changes just a version # bump. There are no actual commits. Co-authored-by: kjeremy <[email protected]>
| * | | | | | | Cargo updatekjeremy2021-03-082-33/+24
|/ / / / / / / | | | | | | | | | | | | | | | | | | | | | Chalk changes just a version # bump. There are no actual commits.
* | | | | | | Merge #7914bors[bot]2021-03-083-3/+3
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7914: Make code completion "just work" in more cases r=matklad a=matklad bors r+ 🤖 Co-authored-by: Aleksey Kladov <[email protected]>
| * | | | | | | Make code completion "just work" in more casesAleksey Kladov2021-03-083-3/+3
|/ / / / / / /
* | | | | | | Merge #7912bors[bot]2021-03-081-46/+49
|\ \ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7912: Dedupe import map results r=matklad a=SomeoneToIgnore While debugging https://github.com/rust-analyzer/rust-analyzer/issues/7902, I've found that there are some duplicates are produced during the external dependencies lookup. I've spotted at least some of the `indexed_value.value` duplicated when typed `Arc` and requested the completions for that, so I've also deduped the `IndexedValue`'s to avoid unnecessary computations. This helps to show `Arc` in the completion suggestions in a zero dependency project and in `hir` module, but we loose it again in the `ide` module. Co-authored-by: Kirill Bulatov <[email protected]>
| * | | | | | | Do not process indexed values more than onceKirill Bulatov2021-03-081-29/+31
| | | | | | | |
| * | | | | | | Deduplicate search_dependencies resultsKirill Bulatov2021-03-081-18/+19
| | |_|/ / / / | |/| | | | |
* | | | | | | Merge #7901bors[bot]2021-03-085-15/+42
|\ \ \ \ \ \ \ | |/ / / / / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7901: Make extension respect http proxy settings r=matklad a=kamyuentse This patch makes vscode extension respect proxy settings when fetching release metadata and rust-analyzer binary. Co-authored-by: Kam Y. Tse <[email protected]>
| * | | | | | Make extension respect http proxy settingsKam Y. Tse2021-03-075-15/+42
| | |_|_|/ / | |/| | | |
* | | | | | Merge #7889bors[bot]2021-03-0714-23/+79
|\ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7889: Make group imports configurable r=lnicola a=asv1 Co-authored-by: asv <[email protected]>
| * | | | | | Make group imports configurableasv2021-03-0714-23/+79
| | | | | | |
* | | | | | | Merge #7895bors[bot]2021-03-075-21/+23
|\ \ \ \ \ \ \ | |_|/ / / / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7895: :arrow_up: xflags r=matklad a=matklad bors r+ 🤖 Co-authored-by: Aleksey Kladov <[email protected]>
| * | | | | | :arrow_up: xflagsAleksey Kladov2021-03-075-21/+23
| | |_|/ / / | |/| | | |
* | | | | | Merge #7892bors[bot]2021-03-074-62/+89
|\ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7892: Fix TokenStream::from_str for input consisting of a single group with delimiter r=edwin0cheng a=kevinmehall TokenStream holds a `tt::Subtree` but assumes its `delimiter` is always `None`. In particular, the iterator implementation iterates over the inner `token_trees` and ignores the `delimiter`. However, `TokenStream::from_str` violated this assumption when the input consists of a single group by producing a Subtree with an outer delimiter, which was ignored as seen by a procedural macro. `tt::Subtree` is just `pub delimiter: Option<Delimiter>, pub token_trees: Vec<TokenTree>`, so a Subtree that is statically guaranteed not to have a delimiter is just `Vec<TokenTree>`. Fixes #7810 Fixes #7875 Co-authored-by: Kevin Mehall <[email protected]>
| * | | | | | Move TokenStream::to_string helpers inside the methodKevin Mehall2021-03-061-30/+34
| | | | | | |
| * | | | | | Make a placeholder panic message explain its purposeKevin Mehall2021-03-061-1/+1
| | | | | | |
| * | | | | | Refactor TokenStream to hold Vec<TokenTree> instead of tt::SubtreeKevin Mehall2021-03-063-65/+56
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `TokenStream` assumes that its subtree's delimeter is `None`, and this should be encoded in the type system instead of having a delimiter field that is mostly ignored. `tt::Subtree` is just `pub delimiter: Option<Delimiter>, pub token_trees: Vec<TokenTree>`, so a Subtree that is statically guaranteed not to have a delimiter is just Vec<TokenTree>.
| * | | | | | Fix TokenStream::from_str for input consisting of a single GroupKevin Mehall2021-03-061-2/+34
| | |/ / / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | TokenStream holds a `tt::Subtree` but assumes its `delimiter` is always `None`. In particular, the iterator implementation iterates over the inner `token_trees` and ignores the `delimiter`. However, `TokenStream::from_str` violated this assumption when the input consists of a single Group by producing a Subtree with an outer delimiter, which was ignored as seen by a procedural macro. In this case, wrap an extra level of Subtree around it. Fixes #7810 Fixes #7875
* | | | | | Merge #7899bors[bot]2021-03-064-19/+19
|\ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7899: Rename a few `crate_def_map`s to `def_map` r=jonas-schievink a=jonas-schievink These could all be block `DefMap`s instead of crate-level `DefMap`s bors r+ Co-authored-by: Jonas Schievink <[email protected]>
| * | | | | | Rename a few `crate_def_map`s to `def_map`Jonas Schievink2021-03-064-19/+19
|/ / / / / / | | | | | | | | | | | | | | | | | | These could all be block `DefMap`s instead of crate-level `DefMap`s
* | | | | | Merge #7896bors[bot]2021-03-061-59/+77
|\ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7896: Only replace quotes in replace_string_with_char assist r=Veykril a=Veykril bors r+ Co-authored-by: Lukas Wirth <[email protected]>
| * | | | | | Only replace quotes in replace_string_with_char assistLukas Wirth2021-03-061-59/+77
| | | | | | |
* | | | | | | Merge #7800bors[bot]2021-03-063-0/+407
|\ \ \ \ \ \ \ | |/ / / / / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7800: [WIP] 7708: Initial implementation of generate Default assist. r=Veykril a=chetankhilosiya The Generate Default impl from new function. Co-authored-by: Chetan Khilosiya <[email protected]>
| * | | | | | 7708: rust ideomatic code fixes.Chetan Khilosiya2021-03-061-9/+11
| | | | | | |
| * | | | | | 7708: handle both FamousDefs fixture and plain code.Chetan Khilosiya2021-03-061-8/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Also fix typo in example.
| * | | | | | 7708: Added the updated implementation of is_default_implemented.Chetan Khilosiya2021-03-061-33/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The implementation uses hir create to find the implemented trait.
| * | | | | | 7708: Added the logic to check is default impl is already present.Chetan Khilosiya2021-03-061-18/+97
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Also added test cases for code present within module.
| * | | | | | 7708: Updated generate default fn logic.Chetan Khilosiya2021-03-061-22/+48
| | | | | | |
| * | | | | | 7708: Added the work for review comments.Chetan Khilosiya2021-03-061-31/+60
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Also added 1 test case to test multiple struct blocks are present.
| * | | | | | 7708: Fixed many documentaion example issues.Chetan Khilosiya2021-03-062-6/+37
| | | | | | |
| * | | | | | 7708: Format code through rust-analyzer formatter.Chetan Khilosiya2021-03-061-35/+44
| | | | | | |
| * | | | | | 7708: Initial implementation of generate Default assist.Chetan Khilosiya2021-03-062-0/+223
| | |/ / / / | |/| | | | | | | | | | | | | | | | The Generate Default impl from new function.
* | | | | | Merge #7865bors[bot]2021-03-061-1/+37
|\ \ \ \ \ \ | |/ / / / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7865: preserve escape sequences when replacing string with char r=Veykril a=jDomantas Currently it replaces escape sequence with the actual value, which is very wrong for `"\n"`. Co-authored-by: Domantas Jadenkus <[email protected]>
| * | | | | preserve escape sequences when replacing string with charDomantas Jadenkus2021-03-031-1/+37
| | | | | |
* | | | | | Merge #7894bors[bot]2021-03-061-4/+52
|\ \ \ \ \ \ | |_|_|/ / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7894: generate_function assist: convert arg names to lower snake case r=Veykril a=JoshMcguigan This PR fixes one of the points listed by @TimoFreiberg in #3639. Specifically that all generated argument names should be converted to lower snake case. ```rust struct BazBaz; fn foo() { bar$0(BazBaz); // ^ when triggering the assist here, you get the output below } // BEFORE fn bar(BazBaz: BazBaz) ${0:-> ()} { todo!() } // AFTER fn bar(baz_baz: BazBaz) ${0:-> ()} { todo!() } ``` Co-authored-by: Josh Mcguigan <[email protected]>
| * | | | | generate function assist convert arg names to lower snake caseJosh Mcguigan2021-03-061-4/+52
|/ / / / /
* | | | | Merge #7888bors[bot]2021-03-061-0/+2
|\ \ \ \ \ | |_|/ / / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7888: Add a line about code action commands to the CoC section of the docs r=lnicola a=flodiebold Co-authored-by: Florian Diebold <[email protected]>