diff --git a/src/librustc_typeck/error_codes.rs b/src/librustc_typeck/error_codes.rs
index 6dd3c0113cdcd..0d28e6184ae09 100644
--- a/src/librustc_typeck/error_codes.rs
+++ b/src/librustc_typeck/error_codes.rs
@@ -1588,6 +1588,48 @@ fn bar(foo: Foo) -> u32 {
```
"##,
+E0183: r##"
+Manually implementing `Fn*` traits is experimental.
+See [tracking issue #29625][iss29625] for the status of the feature.
+
+Erroneous code example:
+
+```compile_fail,E0183
+#![feature(unboxed_closures)]
+struct Echo {}
+
+impl FnOnce<(A,)> for Echo {
+ type Output = A;
+ extern "rust-call" fn call_once(self, args: (A,)) -> Self::Output {
+ args.0
+ }
+}
+```
+
+To fix this error the feature `fn_traits` must be enabled with:
+
+```
+#![feature(fn_traits)]
+```
+
+Here's the above example fixed:
+
+```
+#![feature(unboxed_closures, fn_traits)]
+struct Echo {}
+
+impl FnOnce<(A,)> for Echo {
+ type Output = A;
+ extern "rust-call" fn call_once(self, args: (A,)) -> Self::Output {
+ args.0
+ }
+}
+```
+
+[1]: https://doc.rust-lang.org/unstable-book/library-features/fn-traits.html
+[iss29625]: https://github.com/rust-lang/rust/issues/29625
+"##,
+
E0184: r##"
Explicitly implementing both Drop and Copy for a type is currently disallowed.
This feature can make some sense in theory, but the current implementation is
@@ -4671,7 +4713,6 @@ register_diagnostics! {
// E0173, // manual implementations of unboxed closure traits are experimental
// E0174,
// E0182, // merged into E0229
- E0183,
// E0187, // can't infer the kind of the closure
// E0188, // can not cast an immutable reference to a mutable pointer
// E0189, // deprecated: can only cast a boxed pointer to a boxed object