rust-analyzer/crates
Christopher Serr 2e8c1d13ad Don't filter code suggestions on Applicability
I've noticed that there are various suggestions that rust-analyzer seems
to filter out, even if they make sense.

Here's an example of where it seems like there should be a suggestion,
but there isn't:

![https://i.imgur.com/wsjM6iz.png](https://i.imgur.com/wsjM6iz.png)

It turns out that this specific suggestion is not considered
`MachineApplicable`, which are the only suggestions that rust-analyzer
accepts. However if you read the documentation for `MachineApplicable`,

b3897e3d13/compiler/rustc_lint_defs/src/lib.rs (L27-L29)

then you realize that these are specifically only those suggestions that
rust-analyzer could even automatically apply (in some distant future,
behind some setting or so). Other suggestions that may have some
semantic impact do not use `MachineApplicable`. So all other suggestions
are still intended to be suggested to the user, just not automatically
applied without the user being consulted.

b3897e3d13/compiler/rustc_lint_defs/src/lib.rs (L22-L24)

So with that in mind, rust-analyzer should almost definitely not filter
out `MaybeIncorrect` (which honestly is named horribly, it just means
that it's a semantic change, not just a syntactical one).

Then there's `HasPlaceholders` which basically is just another semantic
one, but with placeholders. The user will have to make some adjustments,
but the suggestion still is perfectly valid. rust-analyzer could
probably detect those placeholders and put proper "tab through" markers
there for the IDE, but that's not necessary for now.

Then the last one is `Unspecified` which is so unknown that I don't even
know how to judge it, meaning that the suggestion should probably also
just be suggested to the user and then they can decide.

So with all that in mind, I'm proposing to get rid of the check for
Applicability entirely.
2021-02-01 16:57:04 +01:00
..
assists Enable fill_match_arms in macros 2021-01-27 22:32:40 +01:00
base_db Fix warnings when running cargo doc --document-private-items 2021-01-18 16:44:40 -05:00
cfg Upgrade expect-test to 1.1 2021-01-03 14:43:29 +01:00
completion Forbid flyimport completions in use statements 2021-01-29 00:28:54 +02:00
flycheck Make logger-based debugging more pleasant 2021-01-28 17:07:53 +03:00
hir Prefer ValueNS when resolving hir path for PathExpressions 2021-01-29 15:59:52 +01:00
hir_def Shortcut block_def_map if there's no inner items 2021-02-01 13:33:18 +01:00
hir_expand add more counts 2021-01-27 12:39:19 +03:00
hir_ty Use block_def_map in body lowering 2021-02-01 13:33:18 +01:00
ide Return inner attributes of outline mod declarations in attrs_query 2021-01-31 19:53:01 +01:00
ide_db Make always-assert crate reusable 2021-01-26 22:13:42 +03:00
mbe Simpilfy mbe parsing 2021-01-30 16:12:30 +08:00
parser Add validation for mutable const items 2021-01-24 02:17:41 +01:00
paths Document paths items 2021-01-22 15:38:33 +01:00
proc_macro_api Enable serde_json unbounded_depth feature 2021-01-18 14:04:20 +02:00
proc_macro_srv cargo update 2021-01-18 13:13:24 -05:00
proc_macro_test Add description for crates that will be published 2020-08-24 13:07:22 +02:00
profile add more counts 2021-01-27 12:39:19 +03:00
project_model Async Loading outdir and proc-macro 2021-01-29 01:04:14 +08:00
rust-analyzer Don't filter code suggestions on Applicability 2021-02-01 16:57:04 +01:00
ssr . 2021-01-20 01:56:11 +03:00
stdx Make always-assert crate reusable 2021-01-26 22:13:42 +03:00
syntax Fix ast::String::value not properly escaping in some cases 2021-01-30 16:31:19 +01:00
test_utils Fixed typos in code comments 2021-01-09 15:41:29 +01:00
text_edit Avoid turning completion objects into builders 2020-11-16 23:16:41 +02:00
toolchain Add description for crates that will be published 2020-08-24 13:07:22 +02:00
tt Refactor TokenBuffer for reduc cloning 2021-01-05 02:00:46 +08:00
vfs Document vfs private items 2021-01-12 18:01:47 +01:00
vfs-notify Follow symlinks when walking project trees 2020-10-15 14:22:36 -04:00