diff --git a/tests/ui/pattern/usefulness/issue-119778-type-error-ice.rs b/tests/ui/pattern/usefulness/issue-119778-type-error-ice.rs
new file mode 100644
index 000000000000..47333385bc16
--- /dev/null
+++ b/tests/ui/pattern/usefulness/issue-119778-type-error-ice.rs
@@ -0,0 +1,13 @@
+fn main() {}
+
+fn foo() {
+ #[derive(Copy, Clone)]
+ struct Foo([u8; S]);
+ //~^ ERROR cannot find value `S`
+ //~| ERROR cannot find value `S`
+
+ type U = impl Copy;
+ //~^ ERROR `impl Trait` in type aliases is unstable
+ let foo: U = Foo(());
+ let Foo(()) = foo;
+}
diff --git a/tests/ui/pattern/usefulness/issue-119778-type-error-ice.stderr b/tests/ui/pattern/usefulness/issue-119778-type-error-ice.stderr
new file mode 100644
index 000000000000..93ef05decd26
--- /dev/null
+++ b/tests/ui/pattern/usefulness/issue-119778-type-error-ice.stderr
@@ -0,0 +1,35 @@
+error[E0425]: cannot find value `S` in this scope
+ --> $DIR/issue-119778-type-error-ice.rs:5:21
+ |
+LL | struct Foo([u8; S]);
+ | ^ not found in this scope
+ |
+help: you might be missing a const parameter
+ |
+LL | struct Foo([u8; S]);
+ | +++++++++++++++++++++
+
+error[E0425]: cannot find value `S` in this scope
+ --> $DIR/issue-119778-type-error-ice.rs:5:21
+ |
+LL | struct Foo([u8; S]);
+ | ^ not found in this scope
+ |
+help: you might be missing a const parameter
+ |
+LL | struct Foo([u8; S]);
+ | +++++++++++++++++++++
+
+error[E0658]: `impl Trait` in type aliases is unstable
+ --> $DIR/issue-119778-type-error-ice.rs:9:14
+ |
+LL | type U = impl Copy;
+ | ^^^^^^^^^
+ |
+ = note: see issue #63063 for more information
+ = help: add `#![feature(type_alias_impl_trait)]` to the crate attributes to enable
+
+error: aborting due to 3 previous errors
+
+Some errors have detailed explanations: E0425, E0658.
+For more information about an error, try `rustc --explain E0425`.