Skip to content

Commit

Permalink
Rollup merge of #104954 - vincenzopalazzo:macros/prinf, r=estebank
Browse files Browse the repository at this point in the history
make simple check of prinf function

Fixes #92898

With this commit we start to make some simple
check when the name resolution fails, and
we generate some helper messages in case the
name is a C name like in the case of the `printf`
and suggest the correct rust method.

`@rustbot` r? `@pnkfelix`

Signed-off-by: Vincenzo Palazzo <[email protected]>
  • Loading branch information
matthiaskrgr authored Nov 28, 2022
2 parents 60d1360 + ee6f18e commit 412f05c
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 0 deletions.
8 changes: 8 additions & 0 deletions compiler/rustc_resolve/src/late/diagnostics.rs
Original file line number Diff line number Diff line change
Expand Up @@ -282,6 +282,14 @@ impl<'a: 'ast, 'ast> LateResolutionVisitor<'a, '_, 'ast> {
"you may want to use a bool value instead",
format!("{}", item_typo),
))
// FIXME(vicnenzopalazzo): make the check smarter,
// and maybe expand with levenshtein distance checks
} else if item_str.as_str() == "printf" {
Some((
item_span,
"you may have meant to use the `print` macro",
"print!".to_owned(),
))
} else {
suggestion
};
Expand Down
9 changes: 9 additions & 0 deletions src/test/ui/suggestions/seggest_print_over_printf.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
// Suggest to a user to use the print macros
// instead to use the printf.

fn main() {
let x = 4;
printf("%d", x);
//~^ ERROR cannot find function `printf` in this scope
//~| HELP you may have meant to use the `print` macro
}
14 changes: 14 additions & 0 deletions src/test/ui/suggestions/seggest_print_over_printf.stderr
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
error[E0425]: cannot find function `printf` in this scope
--> $DIR/seggest_print_over_printf.rs:6:5
|
LL | printf("%d", x);
| ^^^^^^ not found in this scope
|
help: you may have meant to use the `print` macro
|
LL | print!("%d", x);
| ~~~~~~

error: aborting due to previous error

For more information about this error, try `rustc --explain E0425`.

0 comments on commit 412f05c

Please sign in to comment.