Skip to content

Commit

Permalink
Rollup merge of rust-lang#47444 - etaoins:dont-include-bang-in-macro-…
Browse files Browse the repository at this point in the history
…suggestion, r=estebank

Don't include bang in macro replacement suggestion

When we suggest the replacement for a macro we include the "!" in the suggested replacement but the span only contains the name of the macro itself. Using that replacement would cause a duplicate "!" in the resulting code.

I originally tried to extend the span to be replaced by 1 byte in rust-lang#47424. However, @zackmdavis pointed out that there can be whitespace between the macro name and the bang.

Instead, just remove the bang from the suggested replacement.

Fixes rust-lang#47418

r? @estebank
  • Loading branch information
kennytm authored Jan 17, 2018
2 parents 0a34e94 + ecd47a9 commit 2454799
Show file tree
Hide file tree
Showing 4 changed files with 6 additions and 7 deletions.
3 changes: 1 addition & 2 deletions src/librustc_resolve/macros.rs
Original file line number Diff line number Diff line change
Expand Up @@ -691,8 +691,7 @@ impl<'a> Resolver<'a> {
if let Some(suggestion) = suggestion {
if suggestion != name {
if let MacroKind::Bang = kind {
err.span_suggestion(span, "you could try the macro",
format!("{}!", suggestion));
err.span_suggestion(span, "you could try the macro", suggestion.to_string());
} else {
err.span_suggestion(span, "try", suggestion.to_string());
}
Expand Down
6 changes: 3 additions & 3 deletions src/test/ui-fulldeps/resolve-error.stderr
Original file line number Diff line number Diff line change
Expand Up @@ -38,13 +38,13 @@ error: cannot find macro `FooWithLongNama!` in this scope
--> $DIR/resolve-error.rs:62:5
|
62 | FooWithLongNama!();
| ^^^^^^^^^^^^^^^ help: you could try the macro: `FooWithLongNam!`
| ^^^^^^^^^^^^^^^ help: you could try the macro: `FooWithLongNam`

error: cannot find macro `attr_proc_macra!` in this scope
--> $DIR/resolve-error.rs:65:5
|
65 | attr_proc_macra!();
| ^^^^^^^^^^^^^^^ help: you could try the macro: `attr_proc_mac!`
| ^^^^^^^^^^^^^^^ help: you could try the macro: `attr_proc_mac`

error: cannot find macro `Dlona!` in this scope
--> $DIR/resolve-error.rs:68:5
Expand All @@ -56,7 +56,7 @@ error: cannot find macro `bang_proc_macrp!` in this scope
--> $DIR/resolve-error.rs:71:5
|
71 | bang_proc_macrp!();
| ^^^^^^^^^^^^^^^ help: you could try the macro: `bang_proc_macro!`
| ^^^^^^^^^^^^^^^ help: you could try the macro: `bang_proc_macro`

error: aborting due to 10 previous errors

2 changes: 1 addition & 1 deletion src/test/ui/macros/macro-name-typo.stderr
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ error: cannot find macro `printlx!` in this scope
--> $DIR/macro-name-typo.rs:12:5
|
12 | printlx!("oh noes!"); //~ ERROR cannot find
| ^^^^^^^ help: you could try the macro: `println!`
| ^^^^^^^ help: you could try the macro: `println`

error: aborting due to previous error

2 changes: 1 addition & 1 deletion src/test/ui/macros/macro_undefined.stderr
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ error: cannot find macro `k!` in this scope
--> $DIR/macro_undefined.rs:21:5
|
21 | k!(); //~ ERROR cannot find
| ^ help: you could try the macro: `kl!`
| ^ help: you could try the macro: `kl`

error: aborting due to 2 previous errors

0 comments on commit 2454799

Please sign in to comment.