diff --git a/src/test/ui/consts/too_generic_eval_ice.rs b/src/test/ui/consts/too_generic_eval_ice.rs
new file mode 100644
index 0000000000000..7a299169bc4e1
--- /dev/null
+++ b/src/test/ui/consts/too_generic_eval_ice.rs
@@ -0,0 +1,13 @@
+pub struct Foo(A, B);
+
+impl Foo {
+ const HOST_SIZE: usize = std::mem::size_of::();
+
+ pub fn crash() -> bool {
+ [5; Self::HOST_SIZE] == [6; 0] //~ ERROR no associated item named `HOST_SIZE`
+ //~^ the size for values of type `A` cannot be known
+ //~| the size for values of type `B` cannot be known
+ }
+}
+
+fn main() {}
diff --git a/src/test/ui/consts/too_generic_eval_ice.stderr b/src/test/ui/consts/too_generic_eval_ice.stderr
new file mode 100644
index 0000000000000..eef79421270ce
--- /dev/null
+++ b/src/test/ui/consts/too_generic_eval_ice.stderr
@@ -0,0 +1,47 @@
+error[E0599]: no associated item named `HOST_SIZE` found for type `Foo` in the current scope
+ --> $DIR/too_generic_eval_ice.rs:7:19
+ |
+LL | pub struct Foo(A, B);
+ | --------------------------- associated item `HOST_SIZE` not found for this
+...
+LL | [5; Self::HOST_SIZE] == [6; 0]
+ | ^^^^^^^^^ associated item not found in `Foo`
+ |
+ = note: the method `HOST_SIZE` exists but the following trait bounds were not satisfied:
+ `A : std::marker::Sized`
+ `B : std::marker::Sized`
+
+error[E0277]: the size for values of type `A` cannot be known at compilation time
+ --> $DIR/too_generic_eval_ice.rs:7:13
+ |
+LL | [5; Self::HOST_SIZE] == [6; 0]
+ | ^^^^^^^^^^^^^^^ doesn't have a size known at compile-time
+ |
+ = help: the trait `std::marker::Sized` is not implemented for `A`
+ = note: to learn more, visit
+ = help: consider adding a `where A: std::marker::Sized` bound
+note: required by `Foo`
+ --> $DIR/too_generic_eval_ice.rs:1:1
+ |
+LL | pub struct Foo(A, B);
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error[E0277]: the size for values of type `B` cannot be known at compilation time
+ --> $DIR/too_generic_eval_ice.rs:7:13
+ |
+LL | [5; Self::HOST_SIZE] == [6; 0]
+ | ^^^^^^^^^^^^^^^ doesn't have a size known at compile-time
+ |
+ = help: the trait `std::marker::Sized` is not implemented for `B`
+ = note: to learn more, visit
+ = help: consider adding a `where B: std::marker::Sized` bound
+note: required by `Foo`
+ --> $DIR/too_generic_eval_ice.rs:1:1
+ |
+LL | pub struct Foo(A, B);
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+error: aborting due to 3 previous errors
+
+Some errors have detailed explanations: E0277, E0599.
+For more information about an error, try `rustc --explain E0277`.