Rollup merge of #109158 - Ezrashaw:expand-sugg-for-unused-lint, r=Nilstrieb
error-msg: expand suggestion for `unused_def` lint Fixes #108885 Expands `let _ = ..` suggestion into more positions.
This commit is contained in:
commit
36b82373e0
@ -1390,7 +1390,7 @@ pub struct UnusedOp<'a> {
|
|||||||
pub op: &'a str,
|
pub op: &'a str,
|
||||||
#[label]
|
#[label]
|
||||||
pub label: Span,
|
pub label: Span,
|
||||||
#[suggestion(style = "verbose", code = "let _ = ", applicability = "machine-applicable")]
|
#[suggestion(style = "verbose", code = "let _ = ", applicability = "maybe-incorrect")]
|
||||||
pub suggestion: Span,
|
pub suggestion: Span,
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1434,17 +1434,15 @@ pub struct UnusedDef<'a, 'b> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Subdiagnostic)]
|
#[derive(Subdiagnostic)]
|
||||||
pub enum UnusedDefSuggestion {
|
|
||||||
#[suggestion(
|
#[suggestion(
|
||||||
lint_suggestion,
|
lint_suggestion,
|
||||||
style = "verbose",
|
style = "verbose",
|
||||||
code = "let _ = ",
|
code = "let _ = ",
|
||||||
applicability = "machine-applicable"
|
applicability = "maybe-incorrect"
|
||||||
)]
|
)]
|
||||||
Default {
|
pub struct UnusedDefSuggestion {
|
||||||
#[primary_span]
|
#[primary_span]
|
||||||
span: Span,
|
pub span: Span,
|
||||||
},
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Needed because of def_path_str
|
// Needed because of def_path_str
|
||||||
|
@ -123,7 +123,7 @@ impl<'tcx> LateLintPass<'tcx> for UnusedResults {
|
|||||||
let must_use_result = is_ty_must_use(cx, ty, &expr, expr.span);
|
let must_use_result = is_ty_must_use(cx, ty, &expr, expr.span);
|
||||||
let type_lint_emitted_or_suppressed = match must_use_result {
|
let type_lint_emitted_or_suppressed = match must_use_result {
|
||||||
Some(path) => {
|
Some(path) => {
|
||||||
emit_must_use_untranslated(cx, &path, "", "", 1);
|
emit_must_use_untranslated(cx, &path, "", "", 1, false);
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
None => false,
|
None => false,
|
||||||
@ -358,6 +358,7 @@ impl<'tcx> LateLintPass<'tcx> for UnusedResults {
|
|||||||
descr_pre_path,
|
descr_pre_path,
|
||||||
descr_post_path,
|
descr_post_path,
|
||||||
1,
|
1,
|
||||||
|
false,
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
.is_some()
|
.is_some()
|
||||||
@ -370,6 +371,7 @@ impl<'tcx> LateLintPass<'tcx> for UnusedResults {
|
|||||||
descr_pre: &str,
|
descr_pre: &str,
|
||||||
descr_post: &str,
|
descr_post: &str,
|
||||||
plural_len: usize,
|
plural_len: usize,
|
||||||
|
is_inner: bool,
|
||||||
) {
|
) {
|
||||||
let plural_suffix = pluralize!(plural_len);
|
let plural_suffix = pluralize!(plural_len);
|
||||||
|
|
||||||
@ -377,20 +379,22 @@ impl<'tcx> LateLintPass<'tcx> for UnusedResults {
|
|||||||
MustUsePath::Suppressed => {}
|
MustUsePath::Suppressed => {}
|
||||||
MustUsePath::Boxed(path) => {
|
MustUsePath::Boxed(path) => {
|
||||||
let descr_pre = &format!("{}boxed ", descr_pre);
|
let descr_pre = &format!("{}boxed ", descr_pre);
|
||||||
emit_must_use_untranslated(cx, path, descr_pre, descr_post, plural_len);
|
emit_must_use_untranslated(cx, path, descr_pre, descr_post, plural_len, true);
|
||||||
}
|
}
|
||||||
MustUsePath::Opaque(path) => {
|
MustUsePath::Opaque(path) => {
|
||||||
let descr_pre = &format!("{}implementer{} of ", descr_pre, plural_suffix);
|
let descr_pre = &format!("{}implementer{} of ", descr_pre, plural_suffix);
|
||||||
emit_must_use_untranslated(cx, path, descr_pre, descr_post, plural_len);
|
emit_must_use_untranslated(cx, path, descr_pre, descr_post, plural_len, true);
|
||||||
}
|
}
|
||||||
MustUsePath::TraitObject(path) => {
|
MustUsePath::TraitObject(path) => {
|
||||||
let descr_post = &format!(" trait object{}{}", plural_suffix, descr_post);
|
let descr_post = &format!(" trait object{}{}", plural_suffix, descr_post);
|
||||||
emit_must_use_untranslated(cx, path, descr_pre, descr_post, plural_len);
|
emit_must_use_untranslated(cx, path, descr_pre, descr_post, plural_len, true);
|
||||||
}
|
}
|
||||||
MustUsePath::TupleElement(elems) => {
|
MustUsePath::TupleElement(elems) => {
|
||||||
for (index, path) in elems {
|
for (index, path) in elems {
|
||||||
let descr_post = &format!(" in tuple element {}", index);
|
let descr_post = &format!(" in tuple element {}", index);
|
||||||
emit_must_use_untranslated(cx, path, descr_pre, descr_post, plural_len);
|
emit_must_use_untranslated(
|
||||||
|
cx, path, descr_pre, descr_post, plural_len, true,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
MustUsePath::Array(path, len) => {
|
MustUsePath::Array(path, len) => {
|
||||||
@ -401,6 +405,7 @@ impl<'tcx> LateLintPass<'tcx> for UnusedResults {
|
|||||||
descr_pre,
|
descr_pre,
|
||||||
descr_post,
|
descr_post,
|
||||||
plural_len.saturating_add(usize::try_from(*len).unwrap_or(usize::MAX)),
|
plural_len.saturating_add(usize::try_from(*len).unwrap_or(usize::MAX)),
|
||||||
|
true,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
MustUsePath::Closure(span) => {
|
MustUsePath::Closure(span) => {
|
||||||
@ -418,19 +423,6 @@ impl<'tcx> LateLintPass<'tcx> for UnusedResults {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
MustUsePath::Def(span, def_id, reason) => {
|
MustUsePath::Def(span, def_id, reason) => {
|
||||||
let suggestion = if matches!(
|
|
||||||
cx.tcx.get_diagnostic_name(*def_id),
|
|
||||||
Some(sym::add)
|
|
||||||
| Some(sym::sub)
|
|
||||||
| Some(sym::mul)
|
|
||||||
| Some(sym::div)
|
|
||||||
| Some(sym::rem)
|
|
||||||
| Some(sym::neg),
|
|
||||||
) {
|
|
||||||
Some(UnusedDefSuggestion::Default { span: span.shrink_to_lo() })
|
|
||||||
} else {
|
|
||||||
None
|
|
||||||
};
|
|
||||||
cx.emit_spanned_lint(
|
cx.emit_spanned_lint(
|
||||||
UNUSED_MUST_USE,
|
UNUSED_MUST_USE,
|
||||||
*span,
|
*span,
|
||||||
@ -440,7 +432,8 @@ impl<'tcx> LateLintPass<'tcx> for UnusedResults {
|
|||||||
cx,
|
cx,
|
||||||
def_id: *def_id,
|
def_id: *def_id,
|
||||||
note: *reason,
|
note: *reason,
|
||||||
suggestion,
|
suggestion: (!is_inner)
|
||||||
|
.then_some(UnusedDefSuggestion { span: span.shrink_to_lo() }),
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -35,6 +35,10 @@ note: the lint level is defined here
|
|||||||
|
|
|
|
||||||
LL | #![warn(unused_must_use)]
|
LL | #![warn(unused_must_use)]
|
||||||
| ^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^
|
||||||
|
help: use `let _ = ...` to ignore the resulting value
|
||||||
|
|
|
||||||
|
LL | let _ = MustUseDeprecated::new();
|
||||||
|
| +++++++
|
||||||
|
|
||||||
warning: 5 warnings emitted
|
warning: 5 warnings emitted
|
||||||
|
|
||||||
|
@ -10,12 +10,21 @@ note: the lint level is defined here
|
|||||||
|
|
|
|
||||||
LL | #![warn(unused_must_use)]
|
LL | #![warn(unused_must_use)]
|
||||||
| ^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^
|
||||||
|
help: use `let _ = ...` to ignore the resulting value
|
||||||
|
|
|
||||||
|
LL | let _ = need_to_use_this_value();
|
||||||
|
| +++++++
|
||||||
|
|
||||||
warning: unused return value of `MyStruct::need_to_use_this_method_value` that must be used
|
warning: unused return value of `MyStruct::need_to_use_this_method_value` that must be used
|
||||||
--> $DIR/fn_must_use.rs:60:5
|
--> $DIR/fn_must_use.rs:60:5
|
||||||
|
|
|
|
||||||
LL | m.need_to_use_this_method_value();
|
LL | m.need_to_use_this_method_value();
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
|
||||||
|
help: use `let _ = ...` to ignore the resulting value
|
||||||
|
|
|
||||||
|
LL | let _ = m.need_to_use_this_method_value();
|
||||||
|
| +++++++
|
||||||
|
|
||||||
warning: unused return value of `EvenNature::is_even` that must be used
|
warning: unused return value of `EvenNature::is_even` that must be used
|
||||||
--> $DIR/fn_must_use.rs:61:5
|
--> $DIR/fn_must_use.rs:61:5
|
||||||
@ -24,24 +33,43 @@ LL | m.is_even(); // trait method!
|
|||||||
| ^^^^^^^^^^^
|
| ^^^^^^^^^^^
|
||||||
|
|
|
|
||||||
= note: no side effects
|
= note: no side effects
|
||||||
|
help: use `let _ = ...` to ignore the resulting value
|
||||||
|
|
|
||||||
|
LL | let _ = m.is_even(); // trait method!
|
||||||
|
| +++++++
|
||||||
|
|
||||||
warning: unused return value of `MyStruct::need_to_use_this_associated_function_value` that must be used
|
warning: unused return value of `MyStruct::need_to_use_this_associated_function_value` that must be used
|
||||||
--> $DIR/fn_must_use.rs:64:5
|
--> $DIR/fn_must_use.rs:64:5
|
||||||
|
|
|
|
||||||
LL | MyStruct::need_to_use_this_associated_function_value();
|
LL | MyStruct::need_to_use_this_associated_function_value();
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
|
||||||
|
help: use `let _ = ...` to ignore the resulting value
|
||||||
|
|
|
||||||
|
LL | let _ = MyStruct::need_to_use_this_associated_function_value();
|
||||||
|
| +++++++
|
||||||
|
|
||||||
warning: unused return value of `std::cmp::PartialEq::eq` that must be used
|
warning: unused return value of `std::cmp::PartialEq::eq` that must be used
|
||||||
--> $DIR/fn_must_use.rs:70:5
|
--> $DIR/fn_must_use.rs:70:5
|
||||||
|
|
|
|
||||||
LL | 2.eq(&3);
|
LL | 2.eq(&3);
|
||||||
| ^^^^^^^^
|
| ^^^^^^^^
|
||||||
|
|
|
||||||
|
help: use `let _ = ...` to ignore the resulting value
|
||||||
|
|
|
||||||
|
LL | let _ = 2.eq(&3);
|
||||||
|
| +++++++
|
||||||
|
|
||||||
warning: unused return value of `std::cmp::PartialEq::eq` that must be used
|
warning: unused return value of `std::cmp::PartialEq::eq` that must be used
|
||||||
--> $DIR/fn_must_use.rs:71:5
|
--> $DIR/fn_must_use.rs:71:5
|
||||||
|
|
|
|
||||||
LL | m.eq(&n);
|
LL | m.eq(&n);
|
||||||
| ^^^^^^^^
|
| ^^^^^^^^
|
||||||
|
|
|
||||||
|
help: use `let _ = ...` to ignore the resulting value
|
||||||
|
|
|
||||||
|
LL | let _ = m.eq(&n);
|
||||||
|
| +++++++
|
||||||
|
|
||||||
warning: unused comparison that must be used
|
warning: unused comparison that must be used
|
||||||
--> $DIR/fn_must_use.rs:74:5
|
--> $DIR/fn_must_use.rs:74:5
|
||||||
|
@ -10,6 +10,10 @@ note: the lint level is defined here
|
|||||||
|
|
|
|
||||||
LL | #![warn(unused_must_use)]
|
LL | #![warn(unused_must_use)]
|
||||||
| ^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^
|
||||||
|
help: use `let _ = ...` to ignore the resulting value
|
||||||
|
|
|
||||||
|
LL | let _ = Box::from_raw(ptr);
|
||||||
|
| +++++++
|
||||||
|
|
||||||
warning: 1 warning emitted
|
warning: 1 warning emitted
|
||||||
|
|
||||||
|
@ -9,12 +9,21 @@ note: the lint level is defined here
|
|||||||
|
|
|
|
||||||
LL | #![deny(unused_must_use)]
|
LL | #![deny(unused_must_use)]
|
||||||
| ^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^
|
||||||
|
help: use `let _ = ...` to ignore the resulting value
|
||||||
|
|
|
||||||
|
LL | let _ = foo();
|
||||||
|
| +++++++
|
||||||
|
|
||||||
error: unused return value of `bar` that must be used
|
error: unused return value of `bar` that must be used
|
||||||
--> $DIR/must_use-unit.rs:15:5
|
--> $DIR/must_use-unit.rs:15:5
|
||||||
|
|
|
|
||||||
LL | bar();
|
LL | bar();
|
||||||
| ^^^^^
|
| ^^^^^
|
||||||
|
|
|
||||||
|
help: use `let _ = ...` to ignore the resulting value
|
||||||
|
|
|
||||||
|
LL | let _ = bar();
|
||||||
|
| +++++++
|
||||||
|
|
||||||
error: aborting due to 2 previous errors
|
error: aborting due to 2 previous errors
|
||||||
|
|
||||||
|
@ -16,12 +16,22 @@ error: unused return value of `foo` that must be used
|
|||||||
|
|
|
|
||||||
LL | foo();
|
LL | foo();
|
||||||
| ^^^^^
|
| ^^^^^
|
||||||
|
|
|
||||||
|
help: use `let _ = ...` to ignore the resulting value
|
||||||
|
|
|
||||||
|
LL | let _ = foo();
|
||||||
|
| +++++++
|
||||||
|
|
||||||
error: unused output of future returned by `foo` that must be used
|
error: unused output of future returned by `foo` that must be used
|
||||||
--> $DIR/unused-async.rs:33:5
|
--> $DIR/unused-async.rs:33:5
|
||||||
|
|
|
|
||||||
LL | foo().await;
|
LL | foo().await;
|
||||||
| ^^^^^^^^^^^
|
| ^^^^^^^^^^^
|
||||||
|
|
|
||||||
|
help: use `let _ = ...` to ignore the resulting value
|
||||||
|
|
|
||||||
|
LL | let _ = foo().await;
|
||||||
|
| +++++++
|
||||||
|
|
||||||
error: unused implementer of `Future` that must be used
|
error: unused implementer of `Future` that must be used
|
||||||
--> $DIR/unused-async.rs:34:5
|
--> $DIR/unused-async.rs:34:5
|
||||||
@ -36,12 +46,22 @@ error: unused return value of `bar` that must be used
|
|||||||
|
|
|
|
||||||
LL | bar();
|
LL | bar();
|
||||||
| ^^^^^
|
| ^^^^^
|
||||||
|
|
|
||||||
|
help: use `let _ = ...` to ignore the resulting value
|
||||||
|
|
|
||||||
|
LL | let _ = bar();
|
||||||
|
| +++++++
|
||||||
|
|
||||||
error: unused output of future returned by `bar` that must be used
|
error: unused output of future returned by `bar` that must be used
|
||||||
--> $DIR/unused-async.rs:36:5
|
--> $DIR/unused-async.rs:36:5
|
||||||
|
|
|
|
||||||
LL | bar().await;
|
LL | bar().await;
|
||||||
| ^^^^^^^^^^^
|
| ^^^^^^^^^^^
|
||||||
|
|
|
||||||
|
help: use `let _ = ...` to ignore the resulting value
|
||||||
|
|
|
||||||
|
LL | let _ = bar().await;
|
||||||
|
| +++++++
|
||||||
|
|
||||||
error: unused implementer of `Future` that must be used
|
error: unused implementer of `Future` that must be used
|
||||||
--> $DIR/unused-async.rs:37:5
|
--> $DIR/unused-async.rs:37:5
|
||||||
|
@ -9,6 +9,10 @@ note: the lint level is defined here
|
|||||||
|
|
|
|
||||||
LL | #![deny(unused_results, unused_must_use)]
|
LL | #![deny(unused_results, unused_must_use)]
|
||||||
| ^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^
|
||||||
|
help: use `let _ = ...` to ignore the resulting value
|
||||||
|
|
|
||||||
|
LL | let _ = foo::<MustUse>();
|
||||||
|
| +++++++
|
||||||
|
|
||||||
error: unused `MustUseMsg` that must be used
|
error: unused `MustUseMsg` that must be used
|
||||||
--> $DIR/unused-result.rs:22:5
|
--> $DIR/unused-result.rs:22:5
|
||||||
@ -17,6 +21,10 @@ LL | foo::<MustUseMsg>();
|
|||||||
| ^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
|
|
||||||
= note: some message
|
= note: some message
|
||||||
|
help: use `let _ = ...` to ignore the resulting value
|
||||||
|
|
|
||||||
|
LL | let _ = foo::<MustUseMsg>();
|
||||||
|
| +++++++
|
||||||
|
|
||||||
error: unused result of type `isize`
|
error: unused result of type `isize`
|
||||||
--> $DIR/unused-result.rs:34:5
|
--> $DIR/unused-result.rs:34:5
|
||||||
@ -35,6 +43,11 @@ error: unused `MustUse` that must be used
|
|||||||
|
|
|
|
||||||
LL | foo::<MustUse>();
|
LL | foo::<MustUse>();
|
||||||
| ^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^
|
||||||
|
|
|
||||||
|
help: use `let _ = ...` to ignore the resulting value
|
||||||
|
|
|
||||||
|
LL | let _ = foo::<MustUse>();
|
||||||
|
| +++++++
|
||||||
|
|
||||||
error: unused `MustUseMsg` that must be used
|
error: unused `MustUseMsg` that must be used
|
||||||
--> $DIR/unused-result.rs:36:5
|
--> $DIR/unused-result.rs:36:5
|
||||||
@ -43,6 +56,10 @@ LL | foo::<MustUseMsg>();
|
|||||||
| ^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
|
|
||||||
= note: some message
|
= note: some message
|
||||||
|
help: use `let _ = ...` to ignore the resulting value
|
||||||
|
|
|
||||||
|
LL | let _ = foo::<MustUseMsg>();
|
||||||
|
| +++++++
|
||||||
|
|
||||||
error: aborting due to 5 previous errors
|
error: aborting due to 5 previous errors
|
||||||
|
|
||||||
|
@ -146,42 +146,76 @@ note: the lint level is defined here
|
|||||||
|
|
|
|
||||||
LL | #![deny(unused_attributes, unused_must_use)]
|
LL | #![deny(unused_attributes, unused_must_use)]
|
||||||
| ^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^
|
||||||
|
help: use `let _ = ...` to ignore the resulting value
|
||||||
|
|
|
||||||
|
LL | let _ = X;
|
||||||
|
| +++++++
|
||||||
|
|
||||||
error: unused `Y` that must be used
|
error: unused `Y` that must be used
|
||||||
--> $DIR/unused_attributes-must_use.rs:104:5
|
--> $DIR/unused_attributes-must_use.rs:104:5
|
||||||
|
|
|
|
||||||
LL | Y::Z;
|
LL | Y::Z;
|
||||||
| ^^^^
|
| ^^^^
|
||||||
|
|
|
||||||
|
help: use `let _ = ...` to ignore the resulting value
|
||||||
|
|
|
||||||
|
LL | let _ = Y::Z;
|
||||||
|
| +++++++
|
||||||
|
|
||||||
error: unused `U` that must be used
|
error: unused `U` that must be used
|
||||||
--> $DIR/unused_attributes-must_use.rs:105:5
|
--> $DIR/unused_attributes-must_use.rs:105:5
|
||||||
|
|
|
|
||||||
LL | U { unit: () };
|
LL | U { unit: () };
|
||||||
| ^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^
|
||||||
|
|
|
||||||
|
help: use `let _ = ...` to ignore the resulting value
|
||||||
|
|
|
||||||
|
LL | let _ = U { unit: () };
|
||||||
|
| +++++++
|
||||||
|
|
||||||
error: unused return value of `U::method` that must be used
|
error: unused return value of `U::method` that must be used
|
||||||
--> $DIR/unused_attributes-must_use.rs:106:5
|
--> $DIR/unused_attributes-must_use.rs:106:5
|
||||||
|
|
|
|
||||||
LL | U::method();
|
LL | U::method();
|
||||||
| ^^^^^^^^^^^
|
| ^^^^^^^^^^^
|
||||||
|
|
|
||||||
|
help: use `let _ = ...` to ignore the resulting value
|
||||||
|
|
|
||||||
|
LL | let _ = U::method();
|
||||||
|
| +++++++
|
||||||
|
|
||||||
error: unused return value of `foo` that must be used
|
error: unused return value of `foo` that must be used
|
||||||
--> $DIR/unused_attributes-must_use.rs:107:5
|
--> $DIR/unused_attributes-must_use.rs:107:5
|
||||||
|
|
|
|
||||||
LL | foo();
|
LL | foo();
|
||||||
| ^^^^^
|
| ^^^^^
|
||||||
|
|
|
||||||
|
help: use `let _ = ...` to ignore the resulting value
|
||||||
|
|
|
||||||
|
LL | let _ = foo();
|
||||||
|
| +++++++
|
||||||
|
|
||||||
error: unused return value of `foreign_foo` that must be used
|
error: unused return value of `foreign_foo` that must be used
|
||||||
--> $DIR/unused_attributes-must_use.rs:110:9
|
--> $DIR/unused_attributes-must_use.rs:110:9
|
||||||
|
|
|
|
||||||
LL | foreign_foo();
|
LL | foreign_foo();
|
||||||
| ^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^
|
||||||
|
|
|
||||||
|
help: use `let _ = ...` to ignore the resulting value
|
||||||
|
|
|
||||||
|
LL | let _ = foreign_foo();
|
||||||
|
| +++++++
|
||||||
|
|
||||||
error: unused return value of `Use::get_four` that must be used
|
error: unused return value of `Use::get_four` that must be used
|
||||||
--> $DIR/unused_attributes-must_use.rs:118:5
|
--> $DIR/unused_attributes-must_use.rs:118:5
|
||||||
|
|
|
|
||||||
LL | ().get_four();
|
LL | ().get_four();
|
||||||
| ^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^
|
||||||
|
|
|
||||||
|
help: use `let _ = ...` to ignore the resulting value
|
||||||
|
|
|
||||||
|
LL | let _ = ().get_four();
|
||||||
|
| +++++++
|
||||||
|
|
||||||
error: aborting due to 28 previous errors
|
error: aborting due to 28 previous errors
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user