aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Add completion to turn x.err into Err(x)Duong Do Minh Chau2021-03-091-2/+19
|
* Merge #7898bors[bot]2021-03-081-6/+67
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7898: generate_function assist: infer return type r=JoshMcguigan a=JoshMcguigan This PR makes two changes to the generate function assist: 1. Attempt to infer an appropriate return type for the generated function 2. If a return type is inferred, and that return type is not unit, don't render the snippet ```rust fn main() { let x: u32 = foo$0(); // ^^^ trigger the assist to generate this function } // BEFORE fn foo() ${0:-> ()} { todo!() } // AFTER (only change 1) fn foo() ${0:-> u32} { todo!() } // AFTER (change 1 and 2, note the lack of snippet around the return type) fn foo() -> u32 { todo!() } ``` These changes are made as two commits, in case we want to omit change 2. I personally feel like it is a nice change, but I could understand there being some opposition. #### Pros of change 2 If we are able to infer a return type, and especially if that return type is not the unit type, the return type is almost as likely to be correct as the argument names/types. I think this becomes even more true as people learn how this feature works. #### Cons of change 2 We could never be as confident about the return type as we are about the function argument types, so it is more likely a user will want to change that. Plus it is a confusing UX to sometimes have the cursor highlight the return type after triggering this assist and sometimes not have that happen. #### Why omit unit type? The assumption is that if we infer the return type as unit, it is likely just because of the current structure of the code rather than that actually being the desired return type. However, this is obviously just a heuristic and will sometimes be wrong. But being wrong here just means falling back to the exact behavior that existed before this PR. Co-authored-by: Josh Mcguigan <[email protected]>
| * generate_function assist don't render snippet if ret type inferredJosh Mcguigan2021-03-081-26/+47
| |
| * generate_function assist infer return typeJosh Mcguigan2021-03-061-3/+43
| |
* | Merge #7924bors[bot]2021-03-08101-514/+354
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | 7924: Use upstream cov-mark r=matklad a=lnicola Closes #7922 But doesn't remove any dependency, unfortunately. Co-authored-by: Laurențiu Nicola <[email protected]>
| * | Use upstream cov-markLaurențiu Nicola2021-03-08101-514/+354
|/ /
* | Merge #7923bors[bot]2021-03-088-2138/+2131
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | 7923: Remove useless code_model indirection r=matklad a=matklad bors r+ 🤖 Co-authored-by: Aleksey Kladov <[email protected]>
| * | Hygiene is an internal implementation detail of the compilerAleksey Kladov2021-03-084-7/+12
| | |
| * | Remove useless code_model indirectionAleksey Kladov2021-03-085-2132/+2120
| | |
* | | Merge #7918bors[bot]2021-03-0816-144/+158
|\| | | | | | | | | | | | | | | | | | | | | | | | | | 7918: Generalize file ensuring infrastructure r=matklad a=matklad bors r+ 🤖 Co-authored-by: Aleksey Kladov <[email protected]>
| * | MinorAleksey Kladov2021-03-081-1/+1
| | |
| * | Cleanup the error messageAleksey Kladov2021-03-082-2/+2
| | |
| * | Remove now dead codeAleksey Kladov2021-03-089-90/+76
| | |
| * | Unused paramsAleksey Kladov2021-03-085-10/+10
| | |
| * | Make `code generation` just workAleksey Kladov2021-03-088-50/+42
| | | | | | | | | | | | | | | Contributors don't need to learn about `cargo xtask codegen` if `cargo test` just does the right thing.
| * | Use the same name in xtask and test utilsAleksey Kladov2021-03-084-12/+12
| | |
| * | Generalize file ensuring infrastructureAleksey Kladov2021-03-082-6/+38
| | |
| * | Make working with codegen less annoyingAleksey Kladov2021-03-083-21/+25
|/ / | | | | | | | | | | | | | | | | | | We probably should look into removing `xtask codegen` altogether. The test workflow works perfectly for package.json config. There are two things preventing that: * Lint completions are generated on demand. * Docs are not committed to the repository.
* | Merge #7921bors[bot]2021-03-084-99/+96
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | 7921: Don't punish every crate with serde-json r=matklad a=matklad bors r+ 🤖 Co-authored-by: Aleksey Kladov <[email protected]>
| * | Don't punish every crate with serde-jsonAleksey Kladov2021-03-084-99/+96
|/ /
* | 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>.