diff options
| author | Yuki Okushi <huyuumi.dev@gmail.com> | 2021-01-21 20:04:41 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-01-21 20:04:41 +0900 |
| commit | bcaf7dfc8f11edc82aeaf72270366236cdf5763d (patch) | |
| tree | 8e9cd76d83df4e2a15adf83d203434743d24a16a /src/test | |
| parent | 9abd746a327320048ae2b212f34edcadbcafcadf (diff) | |
| parent | 2e049a658d582275e816c09f9d57e8cc14f03c13 (diff) | |
| download | rust-bcaf7dfc8f11edc82aeaf72270366236cdf5763d.tar.gz rust-bcaf7dfc8f11edc82aeaf72270366236cdf5763d.zip | |
Rollup merge of #80429 - JulianKnodt:ob_forest, r=Mark-Simulacrum
Add regression test for mutual recursion in obligation forest Add regression test for #75860 with a slightly smaller example. I was looking at what caused the issue and was surprised when it errors out on nightly, so I just added a regression test which should effectively close the issue, altho it would be nice to find the fix for reference. Also I found that 80066 is not fixed by whatever fixed 75860.
Diffstat (limited to 'src/test')
| -rw-r--r-- | src/test/ui/traits/mutual-recursion-issue-75860.rs | 15 | ||||
| -rw-r--r-- | src/test/ui/traits/mutual-recursion-issue-75860.stderr | 16 |
2 files changed, 31 insertions, 0 deletions
diff --git a/src/test/ui/traits/mutual-recursion-issue-75860.rs b/src/test/ui/traits/mutual-recursion-issue-75860.rs new file mode 100644 index 00000000000..d7d7307b424 --- /dev/null +++ b/src/test/ui/traits/mutual-recursion-issue-75860.rs @@ -0,0 +1,15 @@ +pub fn iso<A, B, F1, F2>(a: F1, b: F2) -> (Box<dyn Fn(A) -> B>, Box<dyn Fn(B) -> A>) + where + F1: (Fn(A) -> B) + 'static, + F2: (Fn(B) -> A) + 'static, +{ + (Box::new(a), Box::new(b)) +} +pub fn iso_un_option<A, B>() -> (Box<dyn Fn(A) -> B>, Box<dyn Fn(B) -> A>) { + let left = |o_a: Option<_>| o_a.unwrap(); + let right = |o_b: Option<_>| o_b.unwrap(); + iso(left, right) + //~^ ERROR overflow +} + +fn main() {} diff --git a/src/test/ui/traits/mutual-recursion-issue-75860.stderr b/src/test/ui/traits/mutual-recursion-issue-75860.stderr new file mode 100644 index 00000000000..cf867ef78c3 --- /dev/null +++ b/src/test/ui/traits/mutual-recursion-issue-75860.stderr @@ -0,0 +1,16 @@ +error[E0275]: overflow evaluating the requirement `Option<_>: Sized` + --> $DIR/mutual-recursion-issue-75860.rs:11:5 + | +LL | iso(left, right) + | ^^^ + | + ::: $SRC_DIR/core/src/option.rs:LL:COL + | +LL | pub enum Option<T> { + | - required by this bound in `Option` + | + = help: consider adding a `#![recursion_limit="256"]` attribute to your crate (`mutual_recursion_issue_75860`) + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0275`. |
