about summary refs log tree commit diff
path: root/src/test
diff options
context:
space:
mode:
authorvarkor <github@varkor.com>2018-11-03 20:08:38 +0000
committervarkor <github@varkor.com>2018-11-19 17:41:10 +0000
commit122886842e74467e24935793f79d7443eb509e35 (patch)
tree1181ad669de4862fd2ee06f9de61755ffe4e3e0e /src/test
parentcb5520bc4865473971281ddb3e33a29a256109c8 (diff)
downloadrust-122886842e74467e24935793f79d7443eb509e35.tar.gz
rust-122886842e74467e24935793f79d7443eb509e35.zip
Test for #[must_use] on traits
Diffstat (limited to 'src/test')
-rw-r--r--src/test/ui/lint/must_use-trait.rs22
-rw-r--r--src/test/ui/lint/must_use-trait.stderr14
2 files changed, 36 insertions, 0 deletions
diff --git a/src/test/ui/lint/must_use-trait.rs b/src/test/ui/lint/must_use-trait.rs
new file mode 100644
index 00000000000..23df4fa6132
--- /dev/null
+++ b/src/test/ui/lint/must_use-trait.rs
@@ -0,0 +1,22 @@
+#![deny(unused_must_use)]
+
+#[must_use]
+trait Critical {}
+
+trait NotSoCritical {}
+
+trait DecidedlyUnimportant {}
+
+struct Anon;
+
+impl Critical for Anon {}
+impl NotSoCritical for Anon {}
+impl DecidedlyUnimportant for Anon {}
+
+fn get_critical() -> impl NotSoCritical + Critical + DecidedlyUnimportant {
+    Anon {}
+}
+
+fn main() {
+    get_critical(); //~ ERROR unused implementer of `Critical` that must be used
+}
diff --git a/src/test/ui/lint/must_use-trait.stderr b/src/test/ui/lint/must_use-trait.stderr
new file mode 100644
index 00000000000..94f5f4f40d2
--- /dev/null
+++ b/src/test/ui/lint/must_use-trait.stderr
@@ -0,0 +1,14 @@
+error: unused implementer of `Critical` that must be used
+  --> $DIR/must_use-trait.rs:21:5
+   |
+LL |     get_critical(); //~ ERROR unused implementer of `Critical` that must be used
+   |     ^^^^^^^^^^^^^^^
+   |
+note: lint level defined here
+  --> $DIR/must_use-trait.rs:1:9
+   |
+LL | #![deny(unused_must_use)]
+   |         ^^^^^^^^^^^^^^^
+
+error: aborting due to previous error
+