Rollup merge of #100817 - vincenzopalazzo:macros/bool_spelling_sugg, r=davidtwco
sugg: suggest the usage of boolean value when there is a typo in the keyword Fixes https://github.com/rust-lang/rust/issues/100686 This adds a new suggestion when there is a well-known typo With the following program ```rust fn main() { let x = True; } ``` Now we have the following suggestion ``` error[E0425]: cannot find value `True` in this scope --> test.rs:2:13 | 2 | let x = True; | ^^^^ not found in this scope | help: you may want to use a bool value instead | 2 | let x = true; | ~~~~ error: aborting due to previous error ``` Signed-off-by: Vincenzo Palazzo <vincenzopalazzodev@gmail.com>
This commit is contained in:
commit
54744601bf
3 changed files with 59 additions and 5 deletions
|
@ -250,13 +250,30 @@ impl<'a: 'ast, 'ast> LateResolutionVisitor<'a, '_, 'ast> {
|
|||
.map_or_else(String::new, |res| format!("{} ", res.descr()));
|
||||
(mod_prefix, format!("`{}`", Segment::names_to_string(mod_path)), None)
|
||||
};
|
||||
|
||||
let (fallback_label, suggestion) = if path_str == "async"
|
||||
&& expected.starts_with("struct")
|
||||
{
|
||||
("`async` blocks are only allowed in Rust 2018 or later".to_string(), suggestion)
|
||||
} else {
|
||||
// check if we are in situation of typo like `True` instead of `true`.
|
||||
let override_suggestion =
|
||||
if ["true", "false"].contains(&item_str.to_string().to_lowercase().as_str()) {
|
||||
let item_typo = item_str.to_string().to_lowercase();
|
||||
Some((
|
||||
item_span,
|
||||
"you may want to use a bool value instead",
|
||||
format!("{}", item_typo),
|
||||
))
|
||||
} else {
|
||||
suggestion
|
||||
};
|
||||
(format!("not found in {mod_str}"), override_suggestion)
|
||||
};
|
||||
|
||||
BaseError {
|
||||
msg: format!("cannot find {expected} `{item_str}` in {mod_prefix}{mod_str}"),
|
||||
fallback_label: if path_str == "async" && expected.starts_with("struct") {
|
||||
"`async` blocks are only allowed in Rust 2018 or later".to_string()
|
||||
} else {
|
||||
format!("not found in {mod_str}")
|
||||
},
|
||||
fallback_label,
|
||||
span: item_span,
|
||||
span_label: None,
|
||||
could_be_expr: false,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue