Closed
Description
This case is a bit large. I tried to minimize it, without much luck.
$ cat abc.scala
sealed trait C
case object C65 extends C
case object C66 extends C
case object C67 extends C
case object C68 extends C
case object C69 extends C
case object C70 extends C
case object C71 extends C
case object C72 extends C
case object C73 extends C
case object C74 extends C
case object C75 extends C
case object C76 extends C
case object C77 extends C
case object C78 extends C
case object C79 extends C
case object C80 extends C
case object C81 extends C
case object C82 extends C
case object C83 extends C
case object C84 extends C
case object C85 extends C
case object C86 extends C
case object C87 extends C
case object C88 extends C
case object C89 extends C
case object C90 extends C
case object C91 extends C
case object C92 extends C
case object C93 extends C
case object C94 extends C
case object C95 extends C
case object C96 extends C
case object C97 extends C
case object C98 extends C
case object C99 extends C
case object C100 extends C
case object C101 extends C
case object C102 extends C
case object C103 extends C
case object C104 extends C
case object C105 extends C
case object C106 extends C
case object C107 extends C
case object C108 extends C
case object C109 extends C
case object C110 extends C
case object C111 extends C
case object C112 extends C
case object C113 extends C
case object C114 extends C
case object C115 extends C
case object C116 extends C
case object C117 extends C
case object C118 extends C
case object C119 extends C
case object C120 extends C
case object C121 extends C
case object C122 extends C
case object C123 extends C
case object C124 extends C
case object C125 extends C
case object C126 extends C
case object C127 extends C
case object C128 extends C
case object C129 extends C
case object C130 extends C
case object C131 extends C
case object C132 extends C
case object C133 extends C
case object C134 extends C
case object C135 extends C
case object C136 extends C
case object C137 extends C
case object C138 extends C
case object C139 extends C
case object C140 extends C
case object C141 extends C
case object C142 extends C
case object C143 extends C
case object C144 extends C
case object C145 extends C
case object C146 extends C
case object C147 extends C
case object C148 extends C
case object C149 extends C
case object C150 extends C
case object C151 extends C
case object C152 extends C
case object C153 extends C
case object C154 extends C
case object C155 extends C
case object C156 extends C
case object C157 extends C
case object C158 extends C
case object C159 extends C
case object C160 extends C
case object C161 extends C
case object C162 extends C
case object C163 extends C
case object C164 extends C
case object C165 extends C
case object C166 extends C
case object C167 extends C
case object C168 extends C
case object C169 extends C
case object C170 extends C
case object C171 extends C
case object C172 extends C
case object C173 extends C
case object C174 extends C
case object C175 extends C
case object C176 extends C
case object C177 extends C
case object C178 extends C
case object C179 extends C
case object C180 extends C
case object C181 extends C
case object C182 extends C
case object C183 extends C
case object C184 extends C
case object C185 extends C
case object C186 extends C
case object C187 extends C
case object C188 extends C
case object C189 extends C
case object C190 extends C
case object C191 extends C
case object C192 extends C
case object C193 extends C
case object C194 extends C
case object C195 extends C
case object C196 extends C
case object C197 extends C
case object C198 extends C
case object C199 extends C
case object C231 extends C
case object C232 extends C
case object C233 extends C
case object C234 extends C
case object C235 extends C
case object C236 extends C
case object C237 extends C
case object C238 extends C
case object C239 extends C
case object C240 extends C
case object C241 extends C
case object C242 extends C
case object C243 extends C
case object C244 extends C
case object C245 extends C
case object C246 extends C
case object C247 extends C
case object C248 extends C
case object C249 extends C
case object C250 extends C
case object C251 extends C
case object C252 extends C
case object C253 extends C
case object C254 extends C
case object C255 extends C
case object C256 extends C
case object C257 extends C
case object C258 extends C
case object C259 extends C
case object C260 extends C
case object C261 extends C
case object C262 extends C
case object C263 extends C
case object C264 extends C
case object C265 extends C
case object C266 extends C
case object C267 extends C
case object C268 extends C
case object C269 extends C
case object C270 extends C
case object C271 extends C
case object C272 extends C
case object C273 extends C
case object C274 extends C
case object C275 extends C
case object C276 extends C
case object C277 extends C
case object C278 extends C
case object C279 extends C
case object C280 extends C
case object C281 extends C
case object C282 extends C
case object C283 extends C
case object C284 extends C
case object C285 extends C
case object C286 extends C
case object C287 extends C
case object C288 extends C
case object C289 extends C
case object C290 extends C
case object C291 extends C
case object C292 extends C
case object C293 extends C
case object C294 extends C
case object C295 extends C
case object C296 extends C
case object C297 extends C
case object C298 extends C
case object C299 extends C
object M {
def f(c: C): Int = c match {
case C65 => 65
case C66 => 66
case C67 => 67
case C68 => 68
case C69 => 69
case C132 => 133
case C71 => 71
case C72 => 72
case C73 => 73
case C74 => 74
case C75 => 75
case C76 => 76
case C77 => 77
case C78 => 78
case C79 => 79
case C80 => 80
case C81 => 81
case C82 => 82
case C83 => 83
case C84 => 84
case C85 => 85
case C86 => 86
case C87 => 87
case C88 => 88
case C89 => 89
case C90 => 90
case C91 => 91
case C92 => 92
case C93 => 93
case C94 => 94
case C95 => 95
case C96 => 96
case C97 => 97
case C98 => 98
case C99 => 99
case C100 => 100
case C101 => 101
case C102 => 102
case C103 => 103
case C104 => 104
case C105 => 105
case C106 => 106
case C107 => 107
case C108 => 108
case C109 => 109
case C110 => 110
case C111 => 111
case C112 => 112
case C113 => 113
case C114 => 114
case C115 => 115
case C116 => 116
case C117 => 117
case C118 => 118
case C119 => 119
case C120 => 120
case C121 => 121
case C122 => 122
case C123 => 123
case C124 => 124
case C125 => 125
case C126 => 126
case C127 => 127
case C128 => 128
case C129 => 129
case C130 => 130
case C131 => 131
case C132 => 132
case C133 => 133
case C134 => 134
case C135 => 135
case C136 => 136
case C137 => 137
case C138 => 138
case C139 => 139
case C140 => 140
case C141 => 141
case C142 => 142
case C143 => 143
case C144 => 144
case C145 => 145
case C146 => 146
case C147 => 147
case C148 => 148
case C149 => 149
case C150 => 150
case C151 => 151
case C152 => 152
case C153 => 153
case C154 => 154
case C155 => 155
case C156 => 156
case C157 => 157
case C158 => 158
case C159 => 159
case C160 => 160
case C161 => 161
case C162 => 162
case C163 => 163
case C164 => 164
case C165 => 165
case C166 => 166
case C167 => 167
case C168 => 168
case C169 => 169
case C170 => 170
case C171 => 171
case C172 => 172
case C173 => 173
case C174 => 174
case C175 => 175
case C176 => 176
case C177 => 177
case C178 => 178
case C179 => 179
case C180 => 180
case C181 => 181
case C182 => 182
case C183 => 183
case C184 => 184
case C185 => 185
case C186 => 186
case C187 => 187
case C188 => 188
case C189 => 189
case C190 => 190
case C191 => 191
case C192 => 192
case C193 => 193
case C194 => 194
case C195 => 195
case C196 => 196
case C197 => 197
case C198 => 198
case C199 => 199
case C231 => 231
case C232 => 232
case C233 => 233
case C234 => 234
case C235 => 235
case C236 => 236
case C237 => 237
case C238 => 238
case C239 => 239
case C240 => 240
case C241 => 241
case C242 => 242
case C243 => 243
case C244 => 244
case C245 => 245
case C246 => 246
case C247 => 247
case C248 => 248
case C249 => 249
case C250 => 250
case C251 => 251
case C252 => 252
case C253 => 253
case C254 => 254
case C255 => 255
case C256 => 256
case C257 => 257
case C258 => 258
case C259 => 259
case C260 => 260
case C261 => 261
case C262 => 262
case C263 => 263
case C264 => 264
case C265 => 265
case C266 => 266
case C267 => 267
case C268 => 268
case C269 => 269
case C270 => 270
case C271 => 271
case C272 => 272
case C273 => 273
case C274 => 274
case C275 => 275
case C276 => 276
case C277 => 277
case C278 => 278
case C279 => 279
case C280 => 280
case C281 => 281
case C282 => 282
case C283 => 283
case C284 => 284
case C285 => 285
case C286 => 286
case C287 => 287
case C288 => 288
case C289 => 289
case C290 => 290
case C291 => 291
case C292 => 292
case C293 => 293
case C294 => 294
case C295 => 295
case C296 => 296
case C297 => 297
case C298 => 298
case C299 => 299
}
}
$ dotc abc.scala
-- Warning: abc.scala --------------------------------------------------------------------------------------------------
207 | def f(c: C): Int = c match {
| ^
| match may not be exhaustive.
| It would fail on the following input: C70
208 | case C65 => 65
209 | case C66 => 66
210 | case C67 => 67
211 | case C68 => 68
212 | case C69 => 69
<snipped>
Exception in thread "main" java.lang.StackOverflowError
at dotty.tools.dotc.core.TypeErasure.eraseResult(TypeErasure.scala:442)
at dotty.tools.dotc.core.TypeErasure.dotty$tools$dotc$core$TypeErasure$$apply(TypeErasure.scala:367)
at dotty.tools.dotc.core.TypeErasure.eraseInfo(TypeErasure.scala:424)
at dotty.tools.dotc.core.TypeErasure$.transformInfo(TypeErasure.scala:178)
at dotty.tools.dotc.transform.Erasure.transform(Erasure.scala:60)
at dotty.tools.dotc.core.Denotations$SingleDenotation.current(Denotations.scala:797)
at dotty.tools.dotc.core.Types$NamedType.computeDenot(Types.scala:1434)
<snipped>