Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir-ty/src/consteval/tests.rs')
-rw-r--r--crates/hir-ty/src/consteval/tests.rs27
1 files changed, 27 insertions, 0 deletions
diff --git a/crates/hir-ty/src/consteval/tests.rs b/crates/hir-ty/src/consteval/tests.rs
index 98384c4749..d1ffd5046c 100644
--- a/crates/hir-ty/src/consteval/tests.rs
+++ b/crates/hir-ty/src/consteval/tests.rs
@@ -2825,3 +2825,30 @@ fn unsized_local() {
|e| matches!(e, ConstEvalError::MirLowerError(MirLowerError::UnsizedTemporary(_))),
);
}
+
+#[test]
+fn recursive_adt() {
+ check_fail(
+ r#"
+ //- minicore: coerce_unsized, index, slice
+ pub enum TagTree {
+ Leaf,
+ Choice(&'static [TagTree]),
+ }
+ const GOAL: TagTree = {
+ const TAG_TREE: TagTree = TagTree::Choice(&[
+ {
+ const VARIANT_TAG_TREE: TagTree = TagTree::Choice(
+ &[
+ TagTree::Leaf,
+ ],
+ );
+ VARIANT_TAG_TREE
+ },
+ ]);
+ TAG_TREE
+ };
+ "#,
+ |e| matches!(e, ConstEvalError::MirEvalError(MirEvalError::StackOverflow)),
+ );
+}