File tree Expand file tree Collapse file tree 4 files changed +174
-4
lines changed Expand file tree Collapse file tree 4 files changed +174
-4
lines changed Original file line number Diff line number Diff line change @@ -183,6 +183,7 @@ impl<'tcx> LateLintPass<'tcx> for UnusedResults {
183
183
let mut op_warned = false ;
184
184
185
185
if let Some ( must_use_op) = must_use_op {
186
+ let span = expr. span . find_oldest_ancestor_in_same_ctxt ( ) ;
186
187
cx. emit_span_lint (
187
188
UNUSED_MUST_USE ,
188
189
expr. span ,
@@ -191,11 +192,11 @@ impl<'tcx> LateLintPass<'tcx> for UnusedResults {
191
192
label : expr. span ,
192
193
suggestion : if expr_is_from_block {
193
194
UnusedOpSuggestion :: BlockTailExpr {
194
- before_span : expr . span . shrink_to_lo ( ) ,
195
- after_span : expr . span . shrink_to_hi ( ) ,
195
+ before_span : span. shrink_to_lo ( ) ,
196
+ after_span : span. shrink_to_hi ( ) ,
196
197
}
197
198
} else {
198
- UnusedOpSuggestion :: NormalExpr { span : expr . span . shrink_to_lo ( ) }
199
+ UnusedOpSuggestion :: NormalExpr { span : span. shrink_to_lo ( ) }
199
200
} ,
200
201
} ,
201
202
) ;
@@ -508,9 +509,10 @@ impl<'tcx> LateLintPass<'tcx> for UnusedResults {
508
509
) ;
509
510
}
510
511
MustUsePath :: Def ( span, def_id, reason) => {
512
+ let span = span. find_oldest_ancestor_in_same_ctxt ( ) ;
511
513
cx. emit_span_lint (
512
514
UNUSED_MUST_USE ,
513
- * span,
515
+ span,
514
516
UnusedDef {
515
517
pre : descr_pre,
516
518
post : descr_post,
Original file line number Diff line number Diff line change
1
+ // Makes sure the suggestions of the `unused_must_use` lint are not inside
2
+ //
3
+ // See <https://github.com/rust-lang/rust/issues/143025>
4
+
5
+ //@ check-pass
6
+ //@ run-rustfix
7
+
8
+ #![expect(unused_macros)]
9
+ #![warn(unused_must_use)]
10
+
11
+ fn main() {
12
+ {
13
+ macro_rules! cmp {
14
+ ($a:tt, $b:tt) => {
15
+ $a == $b
16
+ };
17
+ }
18
+
19
+ // FIXME(Urgau): For some unknown reason the spans we get are not
20
+ // recorded to be from any expansions, preventing us from either
21
+ // suggesting in front of the macro or not at all.
22
+ // cmp!(1, 1);
23
+ }
24
+
25
+ {
26
+ macro_rules! cmp {
27
+ ($a:ident, $b:ident) => {
28
+ $a == $b
29
+ }; //~^ WARN unused comparison that must be used
30
+ }
31
+
32
+ let a = 1;
33
+ let b = 1;
34
+ let _ = cmp!(a, b);
35
+ //~^ SUGGESTION let _
36
+ }
37
+
38
+ {
39
+ macro_rules! cmp {
40
+ ($a:expr, $b:expr) => {
41
+ $a == $b
42
+ }; //~^ WARN unused comparison that must be used
43
+ }
44
+
45
+ let _ = cmp!(1, 1);
46
+ //~^ SUGGESTION let _
47
+ }
48
+
49
+ {
50
+ macro_rules! cmp {
51
+ ($a:tt, $b:tt) => {
52
+ $a.eq(&$b)
53
+ };
54
+ }
55
+
56
+ let _ = cmp!(1, 1);
57
+ //~^ WARN unused return value
58
+ //~| SUGGESTION let _
59
+ }
60
+ }
Original file line number Diff line number Diff line change
1
+ // Makes sure the suggestions of the `unused_must_use` lint are not inside
2
+ //
3
+ // See <https://github.com/rust-lang/rust/issues/143025>
4
+
5
+ //@ check-pass
6
+ //@ run-rustfix
7
+
8
+ #![ expect( unused_macros) ]
9
+ #![ warn( unused_must_use) ]
10
+
11
+ fn main ( ) {
12
+ {
13
+ macro_rules! cmp {
14
+ ( $a: tt, $b: tt) => {
15
+ $a == $b
16
+ } ;
17
+ }
18
+
19
+ // FIXME(Urgau): For some unknown reason the spans we get are not
20
+ // recorded to be from any expansions, preventing us from either
21
+ // suggesting in front of the macro or not at all.
22
+ // cmp!(1, 1);
23
+ }
24
+
25
+ {
26
+ macro_rules! cmp {
27
+ ( $a: ident, $b: ident) => {
28
+ $a == $b
29
+ } ; //~^ WARN unused comparison that must be used
30
+ }
31
+
32
+ let a = 1 ;
33
+ let b = 1 ;
34
+ cmp ! ( a, b) ;
35
+ //~^ SUGGESTION let _
36
+ }
37
+
38
+ {
39
+ macro_rules! cmp {
40
+ ( $a: expr, $b: expr) => {
41
+ $a == $b
42
+ } ; //~^ WARN unused comparison that must be used
43
+ }
44
+
45
+ cmp ! ( 1 , 1 ) ;
46
+ //~^ SUGGESTION let _
47
+ }
48
+
49
+ {
50
+ macro_rules! cmp {
51
+ ( $a: tt, $b: tt) => {
52
+ $a. eq( & $b)
53
+ } ;
54
+ }
55
+
56
+ cmp ! ( 1 , 1 ) ;
57
+ //~^ WARN unused return value
58
+ //~| SUGGESTION let _
59
+ }
60
+ }
Original file line number Diff line number Diff line change
1
+ warning: unused comparison that must be used
2
+ --> $DIR/must-use-macros.rs:28:17
3
+ |
4
+ LL | $a == $b
5
+ | ^^^^^^^^ the comparison produces a value
6
+ ...
7
+ LL | cmp!(a, b);
8
+ | ---------- in this macro invocation
9
+ |
10
+ note: the lint level is defined here
11
+ --> $DIR/must-use-macros.rs:9:9
12
+ |
13
+ LL | #![warn(unused_must_use)]
14
+ | ^^^^^^^^^^^^^^^
15
+ = note: this warning originates in the macro `cmp` (in Nightly builds, run with -Z macro-backtrace for more info)
16
+ help: use `let _ = ...` to ignore the resulting value
17
+ |
18
+ LL | let _ = cmp!(a, b);
19
+ | +++++++
20
+
21
+ warning: unused comparison that must be used
22
+ --> $DIR/must-use-macros.rs:41:17
23
+ |
24
+ LL | $a == $b
25
+ | ^^^^^^^^ the comparison produces a value
26
+ ...
27
+ LL | cmp!(1, 1);
28
+ | ---------- in this macro invocation
29
+ |
30
+ = note: this warning originates in the macro `cmp` (in Nightly builds, run with -Z macro-backtrace for more info)
31
+ help: use `let _ = ...` to ignore the resulting value
32
+ |
33
+ LL | let _ = cmp!(1, 1);
34
+ | +++++++
35
+
36
+ warning: unused return value of `std::cmp::PartialEq::eq` that must be used
37
+ --> $DIR/must-use-macros.rs:56:9
38
+ |
39
+ LL | cmp!(1, 1);
40
+ | ^^^^^^^^^^
41
+ |
42
+ help: use `let _ = ...` to ignore the resulting value
43
+ |
44
+ LL | let _ = cmp!(1, 1);
45
+ | +++++++
46
+
47
+ warning: 3 warnings emitted
48
+
You can’t perform that action at this time.
0 commit comments