Go to file
bors[bot] 43af7920af
Merge #9871
9871: Jump to generated func r=mahdi-frms a=rylev

Worked on this with `@yoshuawuyts.`

We thought we ran into an issue with the `generate_function` assist where the code was not being generated in a certain situations. However, it wasn't actually a bug just a very confusing implementation where the cursor is not moved to the newly generated function. This happened when the return type was successfully inferred (and not unit). The function would be generated, but selection would not be changed.

This can be very confusing: If the function is generated somewhat far from where the assist is being invoked, the user never sees that the code was generated (nor are they given the chance to actually implement the function body). 

This PR makes it so that the cursor is _always_ moved to somewhere in the newly generated function. In addition, if we can infer unit as the type, then we do not still generate `-> ()` as the return type. Instead, we simply omit the return type.

This means the selection will move to either one of two places:
* A generated `-> ()` return type when we cannot successfully infer the return type.
* The `todo!()` body when we can successfully infer the return type.

Co-authored-by: Ryan Levick <me@ryanlevick.com>
2021-08-13 11:19:16 +00:00
.cargo xtask: replace "lint" command by a simply cargo alias 2021-03-14 13:36:45 +01:00
.github Merge #9667 2021-07-21 18:38:51 +00:00
.vscode Add "Win Attach to Server" debug configuration 2021-01-25 17:46:03 +03:00
assets Add SVG logos to assets directory 2020-08-28 21:41:45 +10:00
bench_data Add benchmark test for mbe 2021-02-25 05:47:13 +08:00
crates Merge #9871 2021-08-13 11:19:16 +00:00
docs internal: document that ascription is preferred to a turbo fish 2021-08-11 14:16:15 +03:00
editors/code Update 'package-lock.json' 2021-08-10 13:46:44 +00:00
lib minor: publish la_arena 2021-07-20 14:33:08 +03:00
xtask minor: drop dummy authors field 2021-07-05 14:19:41 +03:00
.gitattributes
.gitignore add open Cargo.toml action 2020-11-12 17:48:07 -08:00
bors.toml Reduce bors timeout 2020-10-14 13:37:20 +02:00
Cargo.lock Support if let match guards 2021-08-13 00:25:14 +02:00
Cargo.toml Build test-macros in a build script 2021-06-09 17:16:52 +02:00
LICENSE-APACHE
LICENSE-MIT
PRIVACY.md Consolidate the privacy notes 2021-06-15 20:07:59 +03:00
README.md Consolidate the privacy notes 2021-06-15 20:07:59 +03:00
rustfmt.toml

rust-analyzer logo

rust-analyzer is a modular compiler frontend for the Rust language. It is a part of a larger rls-2.0 effort to create excellent IDE support for Rust.

Work on rust-analyzer is sponsored by

Ferrous Systems

Quick Start

https://rust-analyzer.github.io/manual.html#installation

Documentation

If you want to contribute to rust-analyzer or are just curious about how things work under the hood, check the ./docs/dev folder.

If you want to use rust-analyzer's language server with your editor of choice, check the manual folder. It also contains some tips & tricks to help you be more productive when using rust-analyzer.

Security and Privacy

See the corresponding sections of the manual.

Communication

For usage and troubleshooting requests, please use "IDEs and Editors" category of the Rust forum:

https://users.rust-lang.org/c/ide/14

For questions about development and implementation, join rust-analyzer working group on Zulip:

https://rust-lang.zulipchat.com/#narrow/stream/185405-t-compiler.2Frust-analyzer

License

Rust analyzer is primarily distributed under the terms of both the MIT license and the Apache License (Version 2.0).

See LICENSE-APACHE and LICENSE-MIT for details.