Skip to content

Fix spurious warning on empty proc macro crates - #47655

Merged
bors merged 1 commit into
rust-lang:masterfrom
etaoins:fix-spurious-warning-on-empty-proc-macro-crate
Jan 23, 2018
Merged

Fix spurious warning on empty proc macro crates#47655
bors merged 1 commit into
rust-lang:masterfrom
etaoins:fix-spurious-warning-on-empty-proc-macro-crate

Conversation

@etaoins

Copy link
Copy Markdown
Contributor

While attempting to reproduce #47086 I noticed the following warning:

> rustc /dev/null --crate-type proc-macro
warning: unused variable: `registrar`
--> /dev/null:0:1

As there are no macros to register the automatically generated registrar function for the crate has no body. As a result its registrar argument is unused triggering the above warning.

The warning is confusing and not easily actionable by the developer. It could also be triggered legitimately by e.g. having all of the macros in a crate #[cfg]'ed out.

Fix by naming the generated argument _registrar inside mk_registrar(). This suppresses the unused variable warning.

While attempting to reproduce #47086 I noticed the
following warning:
```shell
> rustc /dev/null --crate-type proc-macro
warning: unused variable: `registrar`
--> /dev/null:0:1
```
As there are no macros to register the automatically generated registrar
function for the crate has no body. As a result its `registrar` argument
is unused triggering the above warning.
The warning is confusing and not easily actionable by the developer. It
could also be triggered legitimately by e.g. having all of the macros in
a crate #[cfg]'ed out.
Fix by naming the generated argument `_registrar` inside
`mk_registrar()`. This suppresses the unused variable warning.
@rust-highfive

Copy link
Copy Markdown
Contributor

Thanks for the pull request, and welcome! The Rust team is excited to review your changes, and you should hear from @aturon (or someone else) soon.

If any changes to this PR are deemed necessary, please add them as extra commits. This ensures that the reviewer can see what has changed since they last reviewed the code. Due to the way GitHub handles out-of-date commits, this should also make it reasonably obvious what issues have or haven't been addressed. Large or tricky changes may require several passes of review and changes.

Please see the contribution instructions for more information.

@alexcrichton

Copy link
Copy Markdown
Member

@bors: r+ rollup

Thanks!

@bors

bors commented Jan 22, 2018

Copy link
Copy Markdown
Collaborator

📌 Commit e1bffbd has been approved by alexcrichton

@carols10centscarols10cents added the S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. label Jan 22, 2018
@kennytmkennytm mentioned this pull request Jan 23, 2018
kennytm added a commit to kennytm/rust that referenced this pull request Jan 23, 2018
…ty-proc-macro-crate, r=alexcrichton
Fix spurious warning on empty proc macro crates
While attempting to reproduce rust-lang#47086 I noticed the following warning:
```shell
> rustc /dev/null --crate-type proc-macro
warning: unused variable: `registrar`
--> /dev/null:0:1
```
As there are no macros to register the automatically generated registrar function for the crate has no body. As a result its `registrar` argument is unused triggering the above warning.
The warning is confusing and not easily actionable by the developer. It could also be triggered legitimately by e.g. having all of the macros in a crate #[cfg]'ed out.
Fix by naming the generated argument `_registrar` inside `mk_registrar()`. This suppresses the unused variable warning.
bors added a commit that referenced this pull request Jan 23, 2018
Rollup of 14 pull requests
- Successful merges: #47423, #47425, #47440, #47541, #47549, #47554, #47558, #47610, #47635, #47655, #47661, #47662, #47667, #47672
- Failed merges:
@bors
bors merged commit e1bffbd into rust-lang:masterJan 23, 2018
kennytm added a commit to kennytm/rust that referenced this pull request Jan 31, 2018
…source-line, r=estebank
Avoid underflow in render_source_line
While testing rust-lang#47655 I was able to make the compiler panic when it's compiled with debug assertions:
```shell
> rustc /dev/null --crate-type proc-macro
error: internal compiler error: unexpected panic
note: the compiler unexpectedly panicked. this is a bug.
note: we would appreciate a bug report: https://github.com/rust-lang/rust/blob/master/CONTRIBUTING.md#bug-reports
note: rustc 1.25.0-dev running on x86_64-apple-darwin
note: run with `RUST_BACKTRACE=1` for a backtrace
thread 'rustc' panicked at 'attempt to subtract with overflow', librustc_errors/emitter.rs:287:49
```
Without debug assertions the following warning is emitted:
```shell
> rustc /dev/null --crate-type proc-macro
warning: unused variable: `registrar`
--> /dev/null:0:1
|
|
= note: #[warn(unused_variables)] on by default
= note: to avoid this warning, consider using `_registrar` instead
```
The panic is due to the unused variable warning being spanned to `/dev/null:0:1`. When `render_source_line` subtracts 1 from the line number to look up the source line it panics due to underflow. Without debug assertions this would wrap and cause us to return a blank string instead.
Fix by explicitly testing for 0 and exiting early. I'm unsure how to automatically test this now that rust-lang#46655 has been approved.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

S-waiting-on-borsStatus: Waiting on bors to run and complete tests. Bors will change the label on completion.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants

@etaoins@rust-highfive@alexcrichton@bors@carols10cents@aturon