diff --git a/compiler/src/dotty/tools/dotc/transform/patmat/Space.scala b/compiler/src/dotty/tools/dotc/transform/patmat/Space.scala index 9d11ffb5a961..a884f81e53f0 100644 --- a/compiler/src/dotty/tools/dotc/transform/patmat/Space.scala +++ b/compiler/src/dotty/tools/dotc/transform/patmat/Space.scala @@ -870,18 +870,19 @@ class SpaceEngine(using Context) extends SpaceLogic { project(OrType(selTyp, constantNullType, soft = false)) // in redundancy check, take guard as false in order to soundly approximate - def projectPrevCases(cases: List[CaseDef]): Space = + def projectPrevCases(cases: List[CaseDef]): List[Space] = cases.map { x => if (x.guard.isEmpty) project(x.pat) else Empty - }.reduce((a, b) => Or(List(a, b))) + } - (1 until cases.length).foreach { i => - val prevs = projectPrevCases(cases.take(i)) + val spaces = projectPrevCases(cases) + (1 until cases.length).foreach { i => val pat = cases(i).pat if (pat != EmptyTree) { // rethrow case of catch uses EmptyTree + val prevs = Or(spaces.take(i)) val curr = project(pat) debug.println(s"---------------reachable? ${show(curr)}") diff --git a/tests/pos/i10174.scala b/tests/pos/i10174.scala new file mode 100644 index 000000000000..568da7a7e518 --- /dev/null +++ b/tests/pos/i10174.scala @@ -0,0 +1,1002 @@ +enum LargeEnum { + case e1 + case e2 + case e3 + case e4 + case e5 + case e6 + case e7 + case e8 + case e9 + case e10 + case e11 + case e12 + case e13 + case e14 + case e15 + case e16 + case e17 + case e18 + case e19 + case e20 + case e21 + case e22 + case e23 + case e24 + case e25 + case e26 + case e27 + case e28 + case e29 + case e30 + case e31 + case e32 + case e33 + case e34 + case e35 + case e36 + case e37 + case e38 + case e39 + case e40 + case e41 + case e42 + case e43 + case e44 + case e45 + case e46 + case e47 + case e48 + case e49 + case e50 + case e51 + case e52 + case e53 + case e54 + case e55 + case e56 + case e57 + case e58 + case e59 + case e60 + case e61 + case e62 + case e63 + case e64 + case e65 + case e66 + case e67 + case e68 + case e69 + case e70 + case e71 + case e72 + case e73 + case e74 + case e75 + case e76 + case e77 + case e78 + case e79 + case e80 + case e81 + case e82 + case e83 + case e84 + case e85 + case e86 + case e87 + case e88 + case e89 + case e90 + case e91 + case e92 + case e93 + case e94 + case e95 + case e96 + case e97 + case e98 + case e99 + case e100 + case e101 + case e102 + case e103 + case e104 + case e105 + case e106 + case e107 + case e108 + case e109 + case e110 + case e111 + case e112 + case e113 + case e114 + case e115 + case e116 + case e117 + case e118 + case e119 + case e120 + case e121 + case e122 + case e123 + case e124 + case e125 + case e126 + case e127 + case e128 + case e129 + case e130 + case e131 + case e132 + case e133 + case e134 + case e135 + case e136 + case e137 + case e138 + case e139 + case e140 + case e141 + case e142 + case e143 + case e144 + case e145 + case e146 + case e147 + case e148 + case e149 + case e150 + case e151 + case e152 + case e153 + case e154 + case e155 + case e156 + case e157 + case e158 + case e159 + case e160 + case e161 + case e162 + case e163 + case e164 + case e165 + case e166 + case e167 + case e168 + case e169 + case e170 + case e171 + case e172 + case e173 + case e174 + case e175 + case e176 + case e177 + case e178 + case e179 + case e180 + case e181 + case e182 + case e183 + case e184 + case e185 + case e186 + case e187 + case e188 + case e189 + case e190 + case e191 + case e192 + case e193 + case e194 + case e195 + case e196 + case e197 + case e198 + case e199 + case e200 + case e201 + case e202 + case e203 + case e204 + case e205 + case e206 + case e207 + case e208 + case e209 + case e210 + case e211 + case e212 + case e213 + case e214 + case e215 + case e216 + case e217 + case e218 + case e219 + case e220 + case e221 + case e222 + case e223 + case e224 + case e225 + case e226 + case e227 + case e228 + case e229 + case e230 + case e231 + case e232 + case e233 + case e234 + case e235 + case e236 + case e237 + case e238 + case e239 + case e240 + case e241 + case e242 + case e243 + case e244 + case e245 + case e246 + case e247 + case e248 + case e249 + case e250 + case e251 + case e252 + case e253 + case e254 + case e255 + case e256 + case e257 + case e258 + case e259 + case e260 + case e261 + case e262 + case e263 + case e264 + case e265 + case e266 + case e267 + case e268 + case e269 + case e270 + case e271 + case e272 + case e273 + case e274 + case e275 + case e276 + case e277 + case e278 + case e279 + case e280 + case e281 + case e282 + case e283 + case e284 + case e285 + case e286 + case e287 + case e288 + case e289 + case e290 + case e291 + case e292 + case e293 + case e294 + case e295 + case e296 + case e297 + case e298 + case e299 + case e300 + case e301 + case e302 + case e303 + case e304 + case e305 + case e306 + case e307 + case e308 + case e309 + case e310 + case e311 + case e312 + case e313 + case e314 + case e315 + case e316 + case e317 + case e318 + case e319 + case e320 + case e321 + case e322 + case e323 + case e324 + case e325 + case e326 + case e327 + case e328 + case e329 + case e330 + case e331 + case e332 + case e333 + case e334 + case e335 + case e336 + case e337 + case e338 + case e339 + case e340 + case e341 + case e342 + case e343 + case e344 + case e345 + case e346 + case e347 + case e348 + case e349 + case e350 + case e351 + case e352 + case e353 + case e354 + case e355 + case e356 + case e357 + case e358 + case e359 + case e360 + case e361 + case e362 + case e363 + case e364 + case e365 + case e366 + case e367 + case e368 + case e369 + case e370 + case e371 + case e372 + case e373 + case e374 + case e375 + case e376 + case e377 + case e378 + case e379 + case e380 + case e381 + case e382 + case e383 + case e384 + case e385 + case e386 + case e387 + case e388 + case e389 + case e390 + case e391 + case e392 + case e393 + case e394 + case e395 + case e396 + case e397 + case e398 + case e399 + case e400 + case e401 + case e402 + case e403 + case e404 + case e405 + case e406 + case e407 + case e408 + case e409 + case e410 + case e411 + case e412 + case e413 + case e414 + case e415 + case e416 + case e417 + case e418 + case e419 + case e420 + case e421 + case e422 + case e423 + case e424 + case e425 + case e426 + case e427 + case e428 + case e429 + case e430 + case e431 + case e432 + case e433 + case e434 + case e435 + case e436 + case e437 + case e438 + case e439 + case e440 + case e441 + case e442 + case e443 + case e444 + case e445 + case e446 + case e447 + case e448 + case e449 + case e450 + case e451 + case e452 + case e453 + case e454 + case e455 + case e456 + case e457 + case e458 + case e459 + case e460 + case e461 + case e462 + case e463 + case e464 + case e465 + case e466 + case e467 + case e468 + case e469 + case e470 + case e471 + case e472 + case e473 + case e474 + case e475 + case e476 + case e477 + case e478 + case e479 + case e480 + case e481 + case e482 + case e483 + case e484 + case e485 + case e486 + case e487 + case e488 + case e489 + case e490 + case e491 + case e492 + case e493 + case e494 + case e495 + case e496 + case e497 + case e498 + case e499 + case e500 + case e501 + case e502 + case e503 + case e504 + case e505 + case e506 + case e507 + case e508 + case e509 + case e510 + case e511 + case e512 + case e513 + case e514 + case e515 + case e516 + case e517 + case e518 + case e519 + case e520 + case e521 + case e522 + case e523 + case e524 + case e525 + case e526 + case e527 + case e528 + case e529 + case e530 + case e531 + case e532 + case e533 + case e534 + case e535 + case e536 + case e537 + case e538 + case e539 + case e540 + case e541 + case e542 + case e543 + case e544 + case e545 + case e546 + case e547 + case e548 + case e549 + case e550 + case e551 + case e552 + case e553 + case e554 + case e555 + case e556 + case e557 + case e558 + case e559 + case e560 + case e561 + case e562 + case e563 + case e564 + case e565 + case e566 + case e567 + case e568 + case e569 + case e570 + case e571 + case e572 + case e573 + case e574 + case e575 + case e576 + case e577 + case e578 + case e579 + case e580 + case e581 + case e582 + case e583 + case e584 + case e585 + case e586 + case e587 + case e588 + case e589 + case e590 + case e591 + case e592 + case e593 + case e594 + case e595 + case e596 + case e597 + case e598 + case e599 + case e600 + case e601 + case e602 + case e603 + case e604 + case e605 + case e606 + case e607 + case e608 + case e609 + case e610 + case e611 + case e612 + case e613 + case e614 + case e615 + case e616 + case e617 + case e618 + case e619 + case e620 + case e621 + case e622 + case e623 + case e624 + case e625 + case e626 + case e627 + case e628 + case e629 + case e630 + case e631 + case e632 + case e633 + case e634 + case e635 + case e636 + case e637 + case e638 + case e639 + case e640 + case e641 + case e642 + case e643 + case e644 + case e645 + case e646 + case e647 + case e648 + case e649 + case e650 + case e651 + case e652 + case e653 + case e654 + case e655 + case e656 + case e657 + case e658 + case e659 + case e660 + case e661 + case e662 + case e663 + case e664 + case e665 + case e666 + case e667 + case e668 + case e669 + case e670 + case e671 + case e672 + case e673 + case e674 + case e675 + case e676 + case e677 + case e678 + case e679 + case e680 + case e681 + case e682 + case e683 + case e684 + case e685 + case e686 + case e687 + case e688 + case e689 + case e690 + case e691 + case e692 + case e693 + case e694 + case e695 + case e696 + case e697 + case e698 + case e699 + case e700 + case e701 + case e702 + case e703 + case e704 + case e705 + case e706 + case e707 + case e708 + case e709 + case e710 + case e711 + case e712 + case e713 + case e714 + case e715 + case e716 + case e717 + case e718 + case e719 + case e720 + case e721 + case e722 + case e723 + case e724 + case e725 + case e726 + case e727 + case e728 + case e729 + case e730 + case e731 + case e732 + case e733 + case e734 + case e735 + case e736 + case e737 + case e738 + case e739 + case e740 + case e741 + case e742 + case e743 + case e744 + case e745 + case e746 + case e747 + case e748 + case e749 + case e750 + case e751 + case e752 + case e753 + case e754 + case e755 + case e756 + case e757 + case e758 + case e759 + case e760 + case e761 + case e762 + case e763 + case e764 + case e765 + case e766 + case e767 + case e768 + case e769 + case e770 + case e771 + case e772 + case e773 + case e774 + case e775 + case e776 + case e777 + case e778 + case e779 + case e780 + case e781 + case e782 + case e783 + case e784 + case e785 + case e786 + case e787 + case e788 + case e789 + case e790 + case e791 + case e792 + case e793 + case e794 + case e795 + case e796 + case e797 + case e798 + case e799 + case e800 + case e801 + case e802 + case e803 + case e804 + case e805 + case e806 + case e807 + case e808 + case e809 + case e810 + case e811 + case e812 + case e813 + case e814 + case e815 + case e816 + case e817 + case e818 + case e819 + case e820 + case e821 + case e822 + case e823 + case e824 + case e825 + case e826 + case e827 + case e828 + case e829 + case e830 + case e831 + case e832 + case e833 + case e834 + case e835 + case e836 + case e837 + case e838 + case e839 + case e840 + case e841 + case e842 + case e843 + case e844 + case e845 + case e846 + case e847 + case e848 + case e849 + case e850 + case e851 + case e852 + case e853 + case e854 + case e855 + case e856 + case e857 + case e858 + case e859 + case e860 + case e861 + case e862 + case e863 + case e864 + case e865 + case e866 + case e867 + case e868 + case e869 + case e870 + case e871 + case e872 + case e873 + case e874 + case e875 + case e876 + case e877 + case e878 + case e879 + case e880 + case e881 + case e882 + case e883 + case e884 + case e885 + case e886 + case e887 + case e888 + case e889 + case e890 + case e891 + case e892 + case e893 + case e894 + case e895 + case e896 + case e897 + case e898 + case e899 + case e900 + case e901 + case e902 + case e903 + case e904 + case e905 + case e906 + case e907 + case e908 + case e909 + case e910 + case e911 + case e912 + case e913 + case e914 + case e915 + case e916 + case e917 + case e918 + case e919 + case e920 + case e921 + case e922 + case e923 + case e924 + case e925 + case e926 + case e927 + case e928 + case e929 + case e930 + case e931 + case e932 + case e933 + case e934 + case e935 + case e936 + case e937 + case e938 + case e939 + case e940 + case e941 + case e942 + case e943 + case e944 + case e945 + case e946 + case e947 + case e948 + case e949 + case e950 + case e951 + case e952 + case e953 + case e954 + case e955 + case e956 + case e957 + case e958 + case e959 + case e960 + case e961 + case e962 + case e963 + case e964 + case e965 + case e966 + case e967 + case e968 + case e969 + case e970 + case e971 + case e972 + case e973 + case e974 + case e975 + case e976 + case e977 + case e978 + case e979 + case e980 + case e981 + case e982 + case e983 + case e984 + case e985 + case e986 + case e987 + case e988 + case e989 + case e990 + case e991 + case e992 + case e993 + case e994 + case e995 + case e996 + case e997 + case e998 + case e999 + case e1000 +} \ No newline at end of file