Commit graph

34 commits

Author SHA1 Message Date
Guillaume Gomez
b376f49e30 Rename hir::Local into hir::LetStmt 2024-03-22 20:36:21 +01:00
Nicholas Nethercote
b7d58eef4b Rewrite the untranslatable_diagnostic lint.
Currently it only checks calls to functions marked with
`#[rustc_lint_diagnostics]`. This commit changes it to check calls to
any function with an `impl Into<{D,Subd}iagMessage>` parameter. This
greatly improves its coverage and doesn't rely on people remembering to
add `#[rustc_lint_diagnostics]`.

The commit also adds `#[allow(rustc::untranslatable_diagnostic)`]
attributes to places that need it that are caught by the improved lint.
These places that might be easy to convert to translatable diagnostics.

Finally, it also:
- Expands and corrects some comments.
- Does some minor formatting improvements.
- Adds missing `DecorateLint` cases to
  `tests/ui-fulldeps/internal-lints/diagnostics.rs`.
2024-03-06 14:19:01 +11:00
Nicholas Nethercote
1881bfaa2b Rename LintContext::emit_spanned_lint as LintContext::emit_span_lint. 2024-01-23 08:08:25 +11:00
Nilstrieb
a04ac4952c Improve let_underscore_lock
- lint if the lock was in a nested pattern
- lint if the lock is inside a `Result<Lock, _>`
2024-01-12 23:18:58 +01:00
yukang
75df38e816 Fix 2 variable binding issues in let_underscore 2024-01-08 16:50:14 +08:00
DaniPopes
677357d32b
Fix typos in compiler 2023-04-10 22:02:52 +02:00
Rejyr
88e5dd2530 refactor: cleanup 2023-01-09 18:57:02 -05:00
Rejyr
e610047940 migrate: let_underscore.rs
fix: NonBindingLetSub
2023-01-09 17:07:25 -05:00
Kagami Sascha Rosylight
0a528b16fc
Merge branch 'master' into patch-2 2022-11-15 21:16:11 +01:00
koka
a9e4176bc8
Specify language of code comment to generate document 2022-11-14 22:55:50 +09:00
Kagami Sascha Rosylight
30b522365b Fix failing examples 2022-10-25 00:59:32 +02:00
Kagami Sascha Rosylight
6b5f2753f7
Update let_underscore.rs 2022-10-24 18:00:41 +02:00
Kagami Sascha Rosylight
3ff010bdbc
Update compiler/rustc_lint/src/let_underscore.rs 2022-10-24 17:30:29 +02:00
Kagami Sascha Rosylight
2484a18239
Add compile_fail to let_underscore_drop example 2022-10-24 17:25:30 +02:00
Maybe Waffle
a8f7e244b7 Refactor rustc lint API 2022-10-01 10:03:06 +00:00
Aaron Kofsky
d355ec94ff Fix imports.
I'm not really sure why this is nessecary to do, but the checks on the
PR do not seem to work if do not do this.
2022-08-04 17:31:08 -04:00
Aaron Kofsky
a9f1b7bd2a Explain why let-underscoring a lock guard is incorrect.
Currently, the let_underscore_lock lint simply tells what is wrong, but
not why it is wrong. We fix this by using a `MultiSpan` to explain
specifically that doing `let _ = ` immediately drops the lock guard
because it does not assign the lock guard to a binding.
2022-08-04 17:00:48 -04:00
Aaron Kofsky
a9095ff213 Re-allow let_underscore_drop by default.
This lint is way way too noisy to have it be `Deny` by default.
2022-06-17 00:07:30 -04:00
Aaron Kofsky
8807c2d8e5 Make let_underscore_drop Deny by default.
This is done so that we can check the noisiness of this lint in a Crater
run. Note that when I built the compiler, I actually encountered lots of
places where this lint will trigger and fail compilation, so I had to
also set `RUSTFLAGS_NOT_BOOSTRAP` to `-A let_underscore_drop` when
compiling to prevent that.
2022-06-11 10:58:04 -04:00
Aaron Kofsky
b040666e05 Have the drop code suggestion not include let _ = 2022-06-11 10:36:48 -04:00
Aaron Kofsky
7237e8635d Reword suggestion messages. 2022-06-11 10:19:53 -04:00
Aaron Kofsky
cdf6606066 Use multipart_suggestion to create an applicable suggestion.
The "consider explicitly droping" can now suggest a machine applicable
suggestion now.
2022-06-09 14:03:35 -04:00
Aaron Kofsky
211feb106a Add {{produces}} tag to lint doc comments. 2022-06-05 12:47:19 -04:00
Aaron Kofsky
b5b5b5471b Remove let_underscore_must_use
The `let_underscore_must_use` lint was really only added because clippy
included it, but it doesn't actually seem very useful.
2022-06-05 00:05:50 -04:00
Aaron Kofsky
6342b58ef0 Use diagnostic items instead of hard coded paths for let_underscore_lock
Using diagnostic items avoids having to update the paths if the guard
types ever get moved around for some reason. Additionally, it also greatly
simplifies the `is_sync_lock` check.
2022-06-04 22:27:32 -04:00
Aaron Kofsky
e6b66784ac Bail out early if the type does not has a trivial Drop implementation.
If the type has a trivial Drop implementation, then it is probably irrelevant
that the type was dropped immediately, since nothing important
happens on drop. Hence, we can bail out early instead of doing some
expensive checks.
2022-06-04 20:19:19 -04:00
Aaron Kofsky
30e8adb1a7 Use has_attr instead of get_attrs in has_must_use_attr 2022-06-04 20:16:56 -04:00
Aaron Kofsky
a7e2b3e879 Move local functions to outer scope. 2022-06-04 19:52:12 -04:00
Aaron Kofsky
6b179e3a67 Set let_underscore_lock to Deny by default.
Clippy sets this lint to Deny by default, and it having the lint be Deny
is useful for when we test the lint against a Crater run.
2022-06-04 16:47:21 -04:00
Aaron Kofsky
eba6c789dc Show code suggestions in let_undescore lint messages.
This commit uses `span_suggestion_verbose` to add what specific code
changes can be done as suggested by the lint--in this case, either binding
the expression to an unused variable or using `std::mem::drop` to drop
the value explicitly.
2022-06-04 15:35:13 -04:00
Aaron Kofsky
ae2ac3b4c5 Allow let_underscore_drop and let_underscore_must_use by default.
These lints are very noisy and are allow-by-default in clippy anyways.
Hence, setting them to allow-by-default here makes more sense than
warning constantly on these cases.
2022-06-04 15:35:11 -04:00
Aaron Kofsky
758a9fd0f9 Add let_underscore_must_use lint.
Similar to `let_underscore_drop`, this lint checks for statements similar
to `let _ = foo`, where `foo` is an expression marked `must_use`.
2022-06-04 15:35:08 -04:00
Aaron Kofsky
ad7587fedc Add let_underscore_lock lint.
Similar to `let_underscore_drop`, this lint checks for statements similar
to `let _ = foo`, where `foo` is a lock guard. These types of let
statements are especially problematic because the lock gets released
immediately, instead of at the end of the scope. This behavior is almost
always the wrong thing.
2022-06-04 15:34:02 -04:00
Aaron Kofsky
821b32bd40 Add let_underscore_drop lint.
This lint checks for statements similar to `let _ = foo`, where `foo` is
a type that implements `Drop`. These types of let statements cause the
expression in them to be dropped immediately, instead of at the end of
the scope. Such behavior can be surprizing, especially if you are
relying on the value to be dropped at the end of the scope. Instead, the
binding should be an underscore prefixed name (like `_unused`) or the
value should explicitly be passed to `std::mem::drop()` if the value
really should be dropped immediately.
2022-05-29 16:20:40 -04:00