about summary refs log tree commit diff
path: root/src/test
diff options
context:
space:
mode:
authorVadim Petrochenkov <vadim.petrochenkov@gmail.com>2021-03-18 03:02:44 +0300
committerVadim Petrochenkov <vadim.petrochenkov@gmail.com>2021-03-18 03:02:44 +0300
commitb48530bf8b30c20a75f5bb7c2021a28c0ae40413 (patch)
treedb152e7a46d3af4eb0cf74a4161ffdce0121ca5e /src/test
parent38ed36bba4669a3a6737d1f973789a459b8530b2 (diff)
downloadrust-b48530bf8b30c20a75f5bb7c2021a28c0ae40413.tar.gz
rust-b48530bf8b30c20a75f5bb7c2021a28c0ae40413.zip
Report missing cases of `bare_trait_objects`
Diffstat (limited to 'src/test')
-rw-r--r--src/test/ui/lint/bare-trait-objects-path.rs18
-rw-r--r--src/test/ui/lint/bare-trait-objects-path.stderr29
2 files changed, 47 insertions, 0 deletions
diff --git a/src/test/ui/lint/bare-trait-objects-path.rs b/src/test/ui/lint/bare-trait-objects-path.rs
new file mode 100644
index 00000000000..4c961e998df
--- /dev/null
+++ b/src/test/ui/lint/bare-trait-objects-path.rs
@@ -0,0 +1,18 @@
+#![feature(associated_type_defaults)]
+
+trait Assoc {
+    fn func() {}
+    const CONST: u8 = 0;
+    type Ty = u8;
+}
+
+trait Dyn {}
+
+impl Assoc for dyn Dyn {}
+
+fn main() {
+    Dyn::func(); //~ WARN trait objects without an explicit `dyn` are deprecated
+    ::Dyn::func(); //~ WARN trait objects without an explicit `dyn` are deprecated
+    Dyn::CONST; //~ WARN trait objects without an explicit `dyn` are deprecated
+    let _: Dyn::Ty; //~ ERROR ambiguous associated type
+}
diff --git a/src/test/ui/lint/bare-trait-objects-path.stderr b/src/test/ui/lint/bare-trait-objects-path.stderr
new file mode 100644
index 00000000000..0a2dc585828
--- /dev/null
+++ b/src/test/ui/lint/bare-trait-objects-path.stderr
@@ -0,0 +1,29 @@
+error[E0223]: ambiguous associated type
+  --> $DIR/bare-trait-objects-path.rs:17:12
+   |
+LL |     let _: Dyn::Ty;
+   |            ^^^^^^^ help: use fully-qualified syntax: `<dyn Dyn as Trait>::Ty`
+
+warning: trait objects without an explicit `dyn` are deprecated
+  --> $DIR/bare-trait-objects-path.rs:14:5
+   |
+LL |     Dyn::func();
+   |     ^^^ help: use `dyn`: `<dyn Dyn>`
+   |
+   = note: `#[warn(bare_trait_objects)]` on by default
+
+warning: trait objects without an explicit `dyn` are deprecated
+  --> $DIR/bare-trait-objects-path.rs:15:5
+   |
+LL |     ::Dyn::func();
+   |     ^^^^^ help: use `dyn`: `<dyn (::Dyn)>`
+
+warning: trait objects without an explicit `dyn` are deprecated
+  --> $DIR/bare-trait-objects-path.rs:16:5
+   |
+LL |     Dyn::CONST;
+   |     ^^^ help: use `dyn`: `<dyn Dyn>`
+
+error: aborting due to previous error; 3 warnings emitted
+
+For more information about this error, try `rustc --explain E0223`.