about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorEsteban Küber <esteban@kuber.com.ar>2020-01-13 16:13:51 -0800
committerEsteban Küber <esteban@kuber.com.ar>2020-01-16 09:37:24 -0800
commitb4bbe784a9dc1f97f07e2543c6f726cb1eb4cc86 (patch)
tree08d009bd627ec62be02bdb2891b253a2c5022961 /src
parentea7e885204e1ed6b18406e84708abef748925ec5 (diff)
downloadrust-b4bbe784a9dc1f97f07e2543c6f726cb1eb4cc86.tar.gz
rust-b4bbe784a9dc1f97f07e2543c6f726cb1eb4cc86.zip
Make `impl Trait` suggestion in E0746 `MachineApplicable`
Diffstat (limited to 'src')
-rw-r--r--src/librustc/traits/error_reporting.rs2
-rw-r--r--src/test/ui/error-codes/E0746.fixed18
-rw-r--r--src/test/ui/error-codes/E0746.rs2
-rw-r--r--src/test/ui/error-codes/E0746.stderr4
4 files changed, 23 insertions, 3 deletions
diff --git a/src/librustc/traits/error_reporting.rs b/src/librustc/traits/error_reporting.rs
index 8f771658e40..8d0923f5718 100644
--- a/src/librustc/traits/error_reporting.rs
+++ b/src/librustc/traits/error_reporting.rs
@@ -1840,7 +1840,7 @@ impl<'a, 'tcx> InferCtxt<'a, 'tcx> {
                                 last_ty, trait_obj,
                             ),
                             format!("impl {}", trait_obj),
-                            Applicability::MaybeIncorrect,
+                            Applicability::MachineApplicable,
                         );
                         err.note(impl_trait_msg);
                     } else {
diff --git a/src/test/ui/error-codes/E0746.fixed b/src/test/ui/error-codes/E0746.fixed
new file mode 100644
index 00000000000..ca8319aa020
--- /dev/null
+++ b/src/test/ui/error-codes/E0746.fixed
@@ -0,0 +1,18 @@
+// run-rustfix
+#![allow(dead_code)]
+struct Struct;
+trait Trait {}
+impl Trait for Struct {}
+impl Trait for u32 {}
+
+fn foo() -> impl Trait { Struct }
+//~^ ERROR E0746
+
+fn bar() -> impl Trait { //~ ERROR E0746
+    if true {
+        return 0;
+    }
+    42
+}
+
+fn main() {}
diff --git a/src/test/ui/error-codes/E0746.rs b/src/test/ui/error-codes/E0746.rs
index c9ab455a4c5..bf5ba8fff56 100644
--- a/src/test/ui/error-codes/E0746.rs
+++ b/src/test/ui/error-codes/E0746.rs
@@ -1,3 +1,5 @@
+// run-rustfix
+#![allow(dead_code)]
 struct Struct;
 trait Trait {}
 impl Trait for Struct {}
diff --git a/src/test/ui/error-codes/E0746.stderr b/src/test/ui/error-codes/E0746.stderr
index 44bd0d7ed7d..0cffd108226 100644
--- a/src/test/ui/error-codes/E0746.stderr
+++ b/src/test/ui/error-codes/E0746.stderr
@@ -1,5 +1,5 @@
 error[E0746]: return type cannot have a bare trait because it must be `Sized`
-  --> $DIR/E0746.rs:6:13
+  --> $DIR/E0746.rs:8:13
    |
 LL | fn foo() -> dyn Trait { Struct }
    |             ^^^^^^^^^ doesn't have a size known at compile-time
@@ -11,7 +11,7 @@ LL | fn foo() -> impl Trait { Struct }
    |             ^^^^^^^^^^
 
 error[E0746]: return type cannot have a bare trait because it must be `Sized`
-  --> $DIR/E0746.rs:9:13
+  --> $DIR/E0746.rs:11:13
    |
 LL | fn bar() -> dyn Trait {
    |             ^^^^^^^^^ doesn't have a size known at compile-time