-
Notifications
You must be signed in to change notification settings - Fork 13.3k
Point at signature on unused lint #44847
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
// Copyright 2017 The Rust Project Developers. See the COPYRIGHT | ||
// file at the top-level directory of this distribution and at | ||
// http://rust-lang.org/COPYRIGHT. | ||
// | ||
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or | ||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license | ||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your | ||
// option. This file may not be copied, modified, or distributed | ||
// except according to those terms. | ||
|
||
// run-pass | ||
|
||
#![warn(unused)] | ||
|
||
enum Enum { | ||
A, | ||
B, | ||
C, | ||
D, | ||
} | ||
|
||
struct Struct { | ||
a: usize, | ||
b: usize, | ||
c: usize, | ||
d: usize, | ||
} | ||
|
||
fn func() -> usize { | ||
3 | ||
} | ||
|
||
fn | ||
func_complete_span() | ||
-> usize | ||
{ | ||
3 | ||
} | ||
|
||
fn main() {} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
warning: enum is never used: `Enum` | ||
--> $DIR/unused-warning-point-at-signature.rs:15:1 | ||
| | ||
15 | enum Enum { | ||
| ^^^^^^^^^ | ||
| | ||
note: lint level defined here | ||
--> $DIR/unused-warning-point-at-signature.rs:13:9 | ||
| | ||
13 | #![warn(unused)] | ||
| ^^^^^^ | ||
= note: #[warn(dead_code)] implied by #[warn(unused)] | ||
|
||
warning: struct is never used: `Struct` | ||
--> $DIR/unused-warning-point-at-signature.rs:22:1 | ||
| | ||
22 | struct Struct { | ||
| ^^^^^^^^^^^^^ | ||
|
||
warning: function is never used: `func` | ||
--> $DIR/unused-warning-point-at-signature.rs:29:1 | ||
| | ||
29 | fn func() -> usize { | ||
| ^^^^^^^^^^^^^^^^^^ | ||
|
||
warning: function is never used: `func_complete_span` | ||
--> $DIR/unused-warning-point-at-signature.rs:33:1 | ||
| | ||
33 | / fn | ||
34 | | func_complete_span() | ||
35 | | -> usize | ||
36 | | { | ||
37 | | 3 | ||
38 | | } | ||
| |_^ | ||
|
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why is this span including the body? Just because it's multiline?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@oli-obk it was originally proposed that given that in cases where a multiline span was already being shown, we might as well point at the entire body. This decision can be revised if needed.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For RLS this is a major annoyance.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@oli-obk For RLS indeed it'd be very handy to only point at the symbol name, but I think from the CLI ergonomics point of view, displaying multiline diagnostics might still be superior? (gives more context, CLIs are often run out-of-the-editor etc.)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It would still be multiline, it just wouldn't show the function body. I don't see much use in showing function bodies at all for such diagnostics
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If that would work, I guess we could. However, aren't there other
def_span
users who still rely on the full multiline when a signature is also spanning across multiple lines? I'm not very well versed in rustc itself, sorry.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@Xanewok there're are only two users of
def_span
at the moment, including this one, and neither rely on it showing the full span when multiline.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@estebank ah, my bad. Must've looked up wrong
def_span
, sorry. The one from the codemap seems to only be used for lints (if I'm not mistaken?) so I think it'd be great to go ahead and limit the multiline spans only to signatures, without bodies, in lints.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@estebank @oli-obk with the change now also
ui\span\multiline-span-E0072.rs
fails as follows:after change:
expected:
Is this desired? On one hand it's handy to highlight the faulty (recursive here) bit within the whole span, on the other highlighting entire definition may be an overkill, especially for RLS (iirc right now RLS can't even highlight primary/secondary spans properly per a single diagnostic, only the primary one).
cc @GuillaumeGomez
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@Xanewok I also prefer the current output, but understand that we're bound by the limitations of VSCode/RLS here.
@nikomatsakis would you have a comment? I'm inclined to move ahead with the change.