diff options
| author | bors <bors@rust-lang.org> | 2020-02-03 06:38:34 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2020-02-03 06:38:34 +0000 |
| commit | 0d34a8772251b3f9d4dd05c81d9531d455a14fc2 (patch) | |
| tree | a9ecdc8fb7df5fe588c6c78c2bb62d00d723018d /src/test | |
| parent | a2e80300cd83849dd4fa17af131e603623631bf6 (diff) | |
| parent | a606ffdb174dd6a7d226d632994e6a885bf8a1ac (diff) | |
| download | rust-0d34a8772251b3f9d4dd05c81d9531d455a14fc2.tar.gz rust-0d34a8772251b3f9d4dd05c81d9531d455a14fc2.zip | |
Auto merge of #68772 - matthewjasper:relate-opt, r=davidtwco
Avoid exponential behaviour when relating types When equating bound types we check subtyping in both directions. Since closures are invariant in their substs, we end up comparing the two types an exponential number of times. If there are no bound variables this isn't needed. Closes #68061
Diffstat (limited to 'src/test')
| -rw-r--r-- | src/test/ui/closures/deeply-nested_closures.rs | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/src/test/ui/closures/deeply-nested_closures.rs b/src/test/ui/closures/deeply-nested_closures.rs new file mode 100644 index 00000000000..a02684ee1de --- /dev/null +++ b/src/test/ui/closures/deeply-nested_closures.rs @@ -0,0 +1,23 @@ +// Check that this can be compiled in a reasonable time. + +// build-pass + +fn main() { + // 96 nested closures + let x = (); + || || || || || || || || + || || || || || || || || + || || || || || || || || + || || || || || || || || + + || || || || || || || || + || || || || || || || || + || || || || || || || || + || || || || || || || || + + || || || || || || || || + || || || || || || || || + || || || || || || || || + || || || || || || || || + [&(), &x]; +} |
