about summary refs log tree commit diff
path: root/src/test
diff options
context:
space:
mode:
authorZack M. Davis <code@zackmdavis.net>2017-09-22 15:45:47 -0700
committerZack M. Davis <code@zackmdavis.net>2017-09-22 15:45:47 -0700
commit8917616e6a295fb4080c8e29362dc1e5a477c479 (patch)
tree954123bd881393e9172cf61defaba0a7fa2fa576 /src/test
parent14039a42ac6365afc842214989613f9a688c9a66 (diff)
downloadrust-8917616e6a295fb4080c8e29362dc1e5a477c479.tar.gz
rust-8917616e6a295fb4080c8e29362dc1e5a477c479.zip
add comparison operators to must-use lint (under `fn_must_use` feature)
Although RFC 1940 is about annotating functions with `#[must_use]`, a
key part of the motivation was linting unused equality operators.

(See
https://github.com/rust-lang/rfcs/pull/1812#issuecomment-265695898—it
seems to have not been clear to discussants at the time that marking the
comparison methods as `must_use` would not give us the lints on
comparison operators, at least in (what the present author understood
as) the most straightforward implementation, as landed in #43728
(3645b062).)

To rectify the situation, we here lint unused comparison operators as
part of the unused-must-use lint (feature gated by the `fn_must_use`
feature flag, which now arguably becomes a slight (tolerable in the
opinion of the present author) misnomer).

This is in the matter of #43302.
Diffstat (limited to 'src/test')
-rw-r--r--src/test/ui/rfc_1940-must_use_on_functions/fn_must_use.rs7
-rw-r--r--src/test/ui/rfc_1940-must_use_on_functions/fn_must_use.stderr8
2 files changed, 10 insertions, 5 deletions
diff --git a/src/test/ui/rfc_1940-must_use_on_functions/fn_must_use.rs b/src/test/ui/rfc_1940-must_use_on_functions/fn_must_use.rs
index 7eb4c32972a..821cd30c8df 100644
--- a/src/test/ui/rfc_1940-must_use_on_functions/fn_must_use.rs
+++ b/src/test/ui/rfc_1940-must_use_on_functions/fn_must_use.rs
@@ -61,10 +61,9 @@ fn main() {
     m.need_to_use_this_method_value();
     m.is_even(); // trait method!
 
-    m.replace(3);
+    m.replace(3); // won't warn (annotation needs to be in trait definition)
 
-    2.eq(&3);
+    2.eq(&3); // comparison methods are `must_use`
 
-    // FIXME: operators should probably be `must_use` if underlying method is
-    2 == 3;
+    2 == 3; // lint includes comparison operators
 }
diff --git a/src/test/ui/rfc_1940-must_use_on_functions/fn_must_use.stderr b/src/test/ui/rfc_1940-must_use_on_functions/fn_must_use.stderr
index 69755c89b48..7fc0a4ce1ed 100644
--- a/src/test/ui/rfc_1940-must_use_on_functions/fn_must_use.stderr
+++ b/src/test/ui/rfc_1940-must_use_on_functions/fn_must_use.stderr
@@ -25,6 +25,12 @@ warning: unused return value of `EvenNature::is_even` which must be used: no sid
 warning: unused return value of `std::cmp::PartialEq::eq` which must be used
   --> $DIR/fn_must_use.rs:66:5
    |
-66 |     2.eq(&3);
+66 |     2.eq(&3); // comparison methods are `must_use`
    |     ^^^^^^^^^
 
+warning: unused comparison which must be used
+  --> $DIR/fn_must_use.rs:68:5
+   |
+68 |     2 == 3; // lint includes comparison operators
+   |     ^^^^^^
+