--- /dev/null
+TOP = ..
+include $(TOP)/mk/boilerplate.mk
+
+SUBDIRS = should_fail should_compile
+
+include $(TOP)/mk/target.mk
+
+
--- /dev/null
+_interface_ Int10 1
+_exports_
+Int10 T1(C1) T2(T2C1 T2C2) T3(T3C1 T3C2 T3C3) T4(T4C1 T4C2 T4C3 T4C4) T5(T5C1 T5C2 T5C3 T5C4 T5C5) T6(T6C6) T7(T7C6 T7C7) ;
+_declarations_
+1 data T1 a = C1 a;
+1 data T2 a b = T2C1 a | T2C2 b ;
+1 data T3 a b c = T3C1 a | T3C2 b | T3C3 c ;
+1 data T4 a b c d = T4C1 a | T4C2 b | T4C3 c | T4C4 d ;
+1 data T5 a b c d e = T5C1 a | T5C2 b | T5C3 c | T5C4 d | T5C5 e ;
+1 data T6 a = T6C6 a ;
+1 data T7 a b = T7C6 a | T7C7 b ;
+1 data T8 a b c = T8C1 a | T8C2 b | T8C3 c ;
+1 data T9 a b c d = T9C1 a | T9C2 b | T9C3 c | T9C4 d ;
+1 data T10 a b c d e = T10C1 a | T10C2 b | T10C3 c | T10C4 d | T10C5 e ;
--- /dev/null
+TOP = ../../../..
+include $(TOP)/mk/boilerplate.mk
+
+HS_SRCS = $(wildcard *.hs)
+
+SRC_RUNTEST_OPTS += -o1 $*.stdout -o2 $*.stderr -x 0
+HC_OPTS += -noC -dcore-lint
+
+rn017_HC_OPTS = -hi
+
+%.o : %.hs
+ $(RUNTEST) $(HC) $(RUNTEST_OPTS) -- $(HC_OPTS) -c $< -o $@
+
+all :: $(HS_OBJS)
+
+include $(TOP)/mk/target.mk
+
+
--- /dev/null
+_interface_ Rn016 1
+_exports_
+Rn016 K(op1 op2);
+_instances_
+instance {K PrelBase.Int} = $d1;
+instance {K PrelBase.Bool} = $d2;
+instance _forall_ [a] => {K [a]} = $d3;
+_declarations_
+1 $d1 _:_ {K PrelBase.Int} ;;
+1 $d2 _:_ {K PrelBase.Bool} ;;
+1 $d3 _:_ _forall_ [a] {K PrelList.[a]} ;;
+1 class K a :: (* -> *) where { op1 :: a -> a ; op2 :: a -> a } ;
--- /dev/null
+_interface_ Rn017 1
+_exports_
+Rn017 a b c Wibble(MkWibble) Wobble ;
+_declarations_
+1 data Wibble = MkWibble Wobble ;
+1 data Wobble ;
+1 a _:_ Int -> Int ;;
+1 b _:_ Int -> Int ;;
+1 c _:_ Int -> Int ;;
--- /dev/null
+module Foo (f) where
+-- export food
+f x = x
+
+--!!! weird patterns with no variables
+1 = f 1
+[] = f []
+1 = f (f 1)
+[] = f (f [])
--- /dev/null
+--!!! rn005: simplest case: a few non-recursive bindings
+
+module Test where
+
+f = []
+g x = x
+h x y = x
+i x y z = x
--- /dev/null
+--!!! rn006: two sets of mutually-recursive blobs:
+--!!! f, g, h are mut rec
+--!!! i, j, k are mut rec
+
+module Test where
+
+f x = g x x
+i x = j x x
+
+g x y = h x x y
+j x y = k x x y
+
+h x y z = f z
+k x y z = i z
--- /dev/null
+
+NOTE: Simplifier still going after 4 iterations; bailing out.
--- /dev/null
+module Imp10 where
+import Int10
--- /dev/null
+module Imp100 where
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+
--- /dev/null
+module Imp1000 where
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+
--- /dev/null
+module Imp500 where
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+import Int10
+
--- /dev/null
+module Mod10 where
+
+data T1 a = C1 a
+
+data T2 a b = T2C1 a | T2C2 b
+
+data T3 a b c = T3C1 a | T3C2 b | T3C3 c
+
+data T4 a b c d = T4C1 a | T4C2 b | T4C3 c | T4C4 d
+
+data T5 a b c d e = T5C1 a | T5C2 b | T5C3 c | T5C4 d | T5C5 e
+
+data T6 a = T6C6 a
+
+data T7 a b = T7C6 a | T7C7 b
+
+data T8 a b c = T8C1 a | T8C2 b | T8C3 c
+
+data T9 a b c d = T9C1 a | T9C2 b | T9C3 c | T9C4 d
+
+data T10 a b c d e = T10C1 a | T10C2 b | T10C3 c | T10C4 d | T10C5 e
--- /dev/null
+--!!! Import an interface defining a class and some instances
+
+module Main where
+
+import Rn016
+
+main = undefined
--- /dev/null
+--!! Rexporting
+module Test ( module Test , module Rn017 ) where
+
+import Rn017
+
+f x = x
+
+data Foo = MkFoo
+
+class FOO a where
+ op :: a -> Int
+
+instance FOO Foo where
+ op x = 42
--- /dev/null
+module Silly (
+ Array.accum
+ ) where
+import qualified Array
--- /dev/null
+-- Duplicate fields in record decls
+
+module OK where
+
+data X = A {a :: Int} | B {a :: Int}
+
+f x = x
+
+-- data Y = V {a :: Int}
+
+-- f y = y
--- /dev/null
+-- this is legal, I think (WDP)
+
+module Confused where
+
+import Prelude hiding (otherwise)
+
+otherwise = False
+
+f x | otherwise = 1
+
+g otherwise | otherwise = 2
--- /dev/null
+rn022.hs:9:
+ Warning: Possibly incomplete patterns
+ in the definition of function `f'
+rn022.hs:11:
+ Warning: Possibly incomplete patterns
+ in the definition of function `g'
--- /dev/null
+--!! This one is fine in Haskell 1.4
+--
+module Foo ( Bar(..) ) where { data Bar = Bar X; data X = Y }
--- /dev/null
+--!! This is fine in Haskell 1.4
+--
+module Foo ( Baz(..) ) where
+
+class Baz a where
+ opx :: Int -> Bar -> a -> a
+
+data Bar = Bar X
+data X = Y
--- /dev/null
+--!!! 500 defns chained together at the top-level
+module Main(main) where
+main = undefined
+a000 = a001
+a001 = a002
+a002 = a003
+a003 = a004
+a004 = a005
+a005 = a006
+a006 = a007
+a007 = a008
+a008 = a009
+a009 = a010
+a010 = a011
+a011 = a012
+a012 = a013
+a013 = a014
+a014 = a015
+a015 = a016
+a016 = a017
+a017 = a018
+a018 = a019
+a019 = a020
+a020 = a021
+a021 = a022
+a022 = a023
+a023 = a024
+a024 = a025
+a025 = a026
+a026 = a027
+a027 = a028
+a028 = a029
+a029 = a030
+a030 = a031
+a031 = a032
+a032 = a033
+a033 = a034
+a034 = a035
+a035 = a036
+a036 = a037
+a037 = a038
+a038 = a039
+a039 = a040
+a040 = a041
+a041 = a042
+a042 = a043
+a043 = a044
+a044 = a045
+a045 = a046
+a046 = a047
+a047 = a048
+a048 = a049
+a049 = a050
+a050 = a051
+a051 = a052
+a052 = a053
+a053 = a054
+a054 = a055
+a055 = a056
+a056 = a057
+a057 = a058
+a058 = a059
+a059 = a060
+a060 = a061
+a061 = a062
+a062 = a063
+a063 = a064
+a064 = a065
+a065 = a066
+a066 = a067
+a067 = a068
+a068 = a069
+a069 = a070
+a070 = a071
+a071 = a072
+a072 = a073
+a073 = a074
+a074 = a075
+a075 = a076
+a076 = a077
+a077 = a078
+a078 = a079
+a079 = a080
+a080 = a081
+a081 = a082
+a082 = a083
+a083 = a084
+a084 = a085
+a085 = a086
+a086 = a087
+a087 = a088
+a088 = a089
+a089 = a090
+a090 = a091
+a091 = a092
+a092 = a093
+a093 = a094
+a094 = a095
+a095 = a096
+a096 = a097
+a097 = a098
+a098 = a099
+a099 = a100
+
+a100 = a101
+a101 = a102
+a102 = a103
+a103 = a104
+a104 = a105
+a105 = a106
+a106 = a107
+a107 = a108
+a108 = a109
+a109 = a110
+a110 = a111
+a111 = a112
+a112 = a113
+a113 = a114
+a114 = a115
+a115 = a116
+a116 = a117
+a117 = a118
+a118 = a119
+a119 = a120
+a120 = a121
+a121 = a122
+a122 = a123
+a123 = a124
+a124 = a125
+a125 = a126
+a126 = a127
+a127 = a128
+a128 = a129
+a129 = a130
+a130 = a131
+a131 = a132
+a132 = a133
+a133 = a134
+a134 = a135
+a135 = a136
+a136 = a137
+a137 = a138
+a138 = a139
+a139 = a140
+a140 = a141
+a141 = a142
+a142 = a143
+a143 = a144
+a144 = a145
+a145 = a146
+a146 = a147
+a147 = a148
+a148 = a149
+a149 = a150
+a150 = a151
+a151 = a152
+a152 = a153
+a153 = a154
+a154 = a155
+a155 = a156
+a156 = a157
+a157 = a158
+a158 = a159
+a159 = a160
+a160 = a161
+a161 = a162
+a162 = a163
+a163 = a164
+a164 = a165
+a165 = a166
+a166 = a167
+a167 = a168
+a168 = a169
+a169 = a170
+a170 = a171
+a171 = a172
+a172 = a173
+a173 = a174
+a174 = a175
+a175 = a176
+a176 = a177
+a177 = a178
+a178 = a179
+a179 = a180
+a180 = a181
+a181 = a182
+a182 = a183
+a183 = a184
+a184 = a185
+a185 = a186
+a186 = a187
+a187 = a188
+a188 = a189
+a189 = a190
+a190 = a191
+a191 = a192
+a192 = a193
+a193 = a194
+a194 = a195
+a195 = a196
+a196 = a197
+a197 = a198
+a198 = a199
+a199 = a200
+
+a200 = a201
+a201 = a202
+a202 = a203
+a203 = a204
+a204 = a205
+a205 = a206
+a206 = a207
+a207 = a208
+a208 = a209
+a209 = a210
+a210 = a211
+a211 = a212
+a212 = a213
+a213 = a214
+a214 = a215
+a215 = a216
+a216 = a217
+a217 = a218
+a218 = a219
+a219 = a220
+a220 = a221
+a221 = a222
+a222 = a223
+a223 = a224
+a224 = a225
+a225 = a226
+a226 = a227
+a227 = a228
+a228 = a229
+a229 = a230
+a230 = a231
+a231 = a232
+a232 = a233
+a233 = a234
+a234 = a235
+a235 = a236
+a236 = a237
+a237 = a238
+a238 = a239
+a239 = a240
+a240 = a241
+a241 = a242
+a242 = a243
+a243 = a244
+a244 = a245
+a245 = a246
+a246 = a247
+a247 = a248
+a248 = a249
+a249 = a250
+a250 = a251
+a251 = a252
+a252 = a253
+a253 = a254
+a254 = a255
+a255 = a256
+a256 = a257
+a257 = a258
+a258 = a259
+a259 = a260
+a260 = a261
+a261 = a262
+a262 = a263
+a263 = a264
+a264 = a265
+a265 = a266
+a266 = a267
+a267 = a268
+a268 = a269
+a269 = a270
+a270 = a271
+a271 = a272
+a272 = a273
+a273 = a274
+a274 = a275
+a275 = a276
+a276 = a277
+a277 = a278
+a278 = a279
+a279 = a280
+a280 = a281
+a281 = a282
+a282 = a283
+a283 = a284
+a284 = a285
+a285 = a286
+a286 = a287
+a287 = a288
+a288 = a289
+a289 = a290
+a290 = a291
+a291 = a292
+a292 = a293
+a293 = a294
+a294 = a295
+a295 = a296
+a296 = a297
+a297 = a298
+a298 = a299
+a299 = a300
+
+a300 = a301
+a301 = a302
+a302 = a303
+a303 = a304
+a304 = a305
+a305 = a306
+a306 = a307
+a307 = a308
+a308 = a309
+a309 = a310
+a310 = a311
+a311 = a312
+a312 = a313
+a313 = a314
+a314 = a315
+a315 = a316
+a316 = a317
+a317 = a318
+a318 = a319
+a319 = a320
+a320 = a321
+a321 = a322
+a322 = a323
+a323 = a324
+a324 = a325
+a325 = a326
+a326 = a327
+a327 = a328
+a328 = a329
+a329 = a330
+a330 = a331
+a331 = a332
+a332 = a333
+a333 = a334
+a334 = a335
+a335 = a336
+a336 = a337
+a337 = a338
+a338 = a339
+a339 = a340
+a340 = a341
+a341 = a342
+a342 = a343
+a343 = a344
+a344 = a345
+a345 = a346
+a346 = a347
+a347 = a348
+a348 = a349
+a349 = a350
+a350 = a351
+a351 = a352
+a352 = a353
+a353 = a354
+a354 = a355
+a355 = a356
+a356 = a357
+a357 = a358
+a358 = a359
+a359 = a360
+a360 = a361
+a361 = a362
+a362 = a363
+a363 = a364
+a364 = a365
+a365 = a366
+a366 = a367
+a367 = a368
+a368 = a369
+a369 = a370
+a370 = a371
+a371 = a372
+a372 = a373
+a373 = a374
+a374 = a375
+a375 = a376
+a376 = a377
+a377 = a378
+a378 = a379
+a379 = a380
+a380 = a381
+a381 = a382
+a382 = a383
+a383 = a384
+a384 = a385
+a385 = a386
+a386 = a387
+a387 = a388
+a388 = a389
+a389 = a390
+a390 = a391
+a391 = a392
+a392 = a393
+a393 = a394
+a394 = a395
+a395 = a396
+a396 = a397
+a397 = a398
+a398 = a399
+a399 = a400
+
+a400 = a401
+a401 = a402
+a402 = a403
+a403 = a404
+a404 = a405
+a405 = a406
+a406 = a407
+a407 = a408
+a408 = a409
+a409 = a410
+a410 = a411
+a411 = a412
+a412 = a413
+a413 = a414
+a414 = a415
+a415 = a416
+a416 = a417
+a417 = a418
+a418 = a419
+a419 = a420
+a420 = a421
+a421 = a422
+a422 = a423
+a423 = a424
+a424 = a425
+a425 = a426
+a426 = a427
+a427 = a428
+a428 = a429
+a429 = a430
+a430 = a431
+a431 = a432
+a432 = a433
+a433 = a434
+a434 = a435
+a435 = a436
+a436 = a437
+a437 = a438
+a438 = a439
+a439 = a440
+a440 = a441
+a441 = a442
+a442 = a443
+a443 = a444
+a444 = a445
+a445 = a446
+a446 = a447
+a447 = a448
+a448 = a449
+a449 = a450
+a450 = a451
+a451 = a452
+a452 = a453
+a453 = a454
+a454 = a455
+a455 = a456
+a456 = a457
+a457 = a458
+a458 = a459
+a459 = a460
+a460 = a461
+a461 = a462
+a462 = a463
+a463 = a464
+a464 = a465
+a465 = a466
+a466 = a467
+a467 = a468
+a468 = a469
+a469 = a470
+a470 = a471
+a471 = a472
+a472 = a473
+a473 = a474
+a474 = a475
+a475 = a476
+a476 = a477
+a477 = a478
+a478 = a479
+a479 = a480
+a480 = a481
+a481 = a482
+a482 = a483
+a483 = a484
+a484 = a485
+a485 = a486
+a486 = a487
+a487 = a488
+a488 = a489
+a489 = a490
+a490 = a491
+a491 = a492
+a492 = a493
+a493 = a494
+a494 = a495
+a495 = a496
+a496 = a497
+a497 = a498
+a498 = a499
+a499 = [] -- !!! ta-dah!!!
--- /dev/null
+--!!! 500 defns chained together with "where"s
+module Main(main) where
+
+main = undefined
+a500 = let a000 = []
+ a001 = a000
+ a002 = a001
+ a003 = a002
+ a004 = a003
+ a005 = a004
+ a006 = a005
+ a007 = a006
+ a008 = a007
+ a009 = a008
+ a010 = a009
+ a011 = a010
+ a012 = a011
+ a013 = a012
+ a014 = a013
+ a015 = a014
+ a016 = a015
+ a017 = a016
+ a018 = a017
+ a019 = a018
+ a020 = a019
+ a021 = a020
+ a022 = a021
+ a023 = a022
+ a024 = a023
+ a025 = a024
+ a026 = a025
+ a027 = a026
+ a028 = a027
+ a029 = a028
+ a030 = a029
+ a031 = a030
+ a032 = a031
+ a033 = a032
+ a034 = a033
+ a035 = a034
+ a036 = a035
+ a037 = a036
+ a038 = a037
+ a039 = a038
+ a040 = a039
+ a041 = a040
+ a042 = a041
+ a043 = a042
+ a044 = a043
+ a045 = a044
+ a046 = a045
+ a047 = a046
+ a048 = a047
+ a049 = a048
+ a050 = a049
+ a051 = a050
+ a052 = a051
+ a053 = a052
+ a054 = a053
+ a055 = a054
+ a056 = a055
+ a057 = a056
+ a058 = a057
+ a059 = a058
+ a060 = a059
+ a061 = a060
+ a062 = a061
+ a063 = a062
+ a064 = a063
+ a065 = a064
+ a066 = a065
+ a067 = a066
+ a068 = a067
+ a069 = a068
+ a070 = a069
+ a071 = a070
+ a072 = a071
+ a073 = a072
+ a074 = a073
+ a075 = a074
+ a076 = a075
+ a077 = a076
+ a078 = a077
+ a079 = a078
+ a080 = a079
+ a081 = a080
+ a082 = a081
+ a083 = a082
+ a084 = a083
+ a085 = a084
+ a086 = a085
+ a087 = a086
+ a088 = a087
+ a089 = a088
+ a090 = a089
+ a091 = a090
+ a092 = a091
+ a093 = a092
+ a094 = a093
+ a095 = a094
+ a096 = a095
+ a097 = a096
+ a098 = a097
+ a099 = a098
+ a100 = a099
+ a101 = a100
+ a102 = a101
+ a103 = a102
+ a104 = a103
+ a105 = a104
+ a106 = a105
+ a107 = a106
+ a108 = a107
+ a109 = a108
+ a110 = a109
+ a111 = a110
+ a112 = a111
+ a113 = a112
+ a114 = a113
+ a115 = a114
+ a116 = a115
+ a117 = a116
+ a118 = a117
+ a119 = a118
+ a120 = a119
+ a121 = a120
+ a122 = a121
+ a123 = a122
+ a124 = a123
+ a125 = a124
+ a126 = a125
+ a127 = a126
+ a128 = a127
+ a129 = a128
+ a130 = a129
+ a131 = a130
+ a132 = a131
+ a133 = a132
+ a134 = a133
+ a135 = a134
+ a136 = a135
+ a137 = a136
+ a138 = a137
+ a139 = a138
+ a140 = a139
+ a141 = a140
+ a142 = a141
+ a143 = a142
+ a144 = a143
+ a145 = a144
+ a146 = a145
+ a147 = a146
+ a148 = a147
+ a149 = a148
+ a150 = a149
+ a151 = a150
+ a152 = a151
+ a153 = a152
+ a154 = a153
+ a155 = a154
+ a156 = a155
+ a157 = a156
+ a158 = a157
+ a159 = a158
+ a160 = a159
+ a161 = a160
+ a162 = a161
+ a163 = a162
+ a164 = a163
+ a165 = a164
+ a166 = a165
+ a167 = a166
+ a168 = a167
+ a169 = a168
+ a170 = a169
+ a171 = a170
+ a172 = a171
+ a173 = a172
+ a174 = a173
+ a175 = a174
+ a176 = a175
+ a177 = a176
+ a178 = a177
+ a179 = a178
+ a180 = a179
+ a181 = a180
+ a182 = a181
+ a183 = a182
+ a184 = a183
+ a185 = a184
+ a186 = a185
+ a187 = a186
+ a188 = a187
+ a189 = a188
+ a190 = a189
+ a191 = a190
+ a192 = a191
+ a193 = a192
+ a194 = a193
+ a195 = a194
+ a196 = a195
+ a197 = a196
+ a198 = a197
+ a199 = a198
+ a200 = a199
+ a201 = a200
+ a202 = a201
+ a203 = a202
+ a204 = a203
+ a205 = a204
+ a206 = a205
+ a207 = a206
+ a208 = a207
+ a209 = a208
+ a210 = a209
+ a211 = a210
+ a212 = a211
+ a213 = a212
+ a214 = a213
+ a215 = a214
+ a216 = a215
+ a217 = a216
+ a218 = a217
+ a219 = a218
+ a220 = a219
+ a221 = a220
+ a222 = a221
+ a223 = a222
+ a224 = a223
+ a225 = a224
+ a226 = a225
+ a227 = a226
+ a228 = a227
+ a229 = a228
+ a230 = a229
+ a231 = a230
+ a232 = a231
+ a233 = a232
+ a234 = a233
+ a235 = a234
+ a236 = a235
+ a237 = a236
+ a238 = a237
+ a239 = a238
+ a240 = a239
+ a241 = a240
+ a242 = a241
+ a243 = a242
+ a244 = a243
+ a245 = a244
+ a246 = a245
+ a247 = a246
+ a248 = a247
+ a249 = a248
+ a250 = a249
+ a251 = a250
+ a252 = a251
+ a253 = a252
+ a254 = a253
+ a255 = a254
+ a256 = a255
+ a257 = a256
+ a258 = a257
+ a259 = a258
+ a260 = a259
+ a261 = a260
+ a262 = a261
+ a263 = a262
+ a264 = a263
+ a265 = a264
+ a266 = a265
+ a267 = a266
+ a268 = a267
+ a269 = a268
+ a270 = a269
+ a271 = a270
+ a272 = a271
+ a273 = a272
+ a274 = a273
+ a275 = a274
+ a276 = a275
+ a277 = a276
+ a278 = a277
+ a279 = a278
+ a280 = a279
+ a281 = a280
+ a282 = a281
+ a283 = a282
+ a284 = a283
+ a285 = a284
+ a286 = a285
+ a287 = a286
+ a288 = a287
+ a289 = a288
+ a290 = a289
+ a291 = a290
+ a292 = a291
+ a293 = a292
+ a294 = a293
+ a295 = a294
+ a296 = a295
+ a297 = a296
+ a298 = a297
+ a299 = a298
+ a300 = a299
+ a301 = a300
+ a302 = a301
+ a303 = a302
+ a304 = a303
+ a305 = a304
+ a306 = a305
+ a307 = a306
+ a308 = a307
+ a309 = a308
+ a310 = a309
+ a311 = a310
+ a312 = a311
+ a313 = a312
+ a314 = a313
+ a315 = a314
+ a316 = a315
+ a317 = a316
+ a318 = a317
+ a319 = a318
+ a320 = a319
+ a321 = a320
+ a322 = a321
+ a323 = a322
+ a324 = a323
+ a325 = a324
+ a326 = a325
+ a327 = a326
+ a328 = a327
+ a329 = a328
+ a330 = a329
+ a331 = a330
+ a332 = a331
+ a333 = a332
+ a334 = a333
+ a335 = a334
+ a336 = a335
+ a337 = a336
+ a338 = a337
+ a339 = a338
+ a340 = a339
+ a341 = a340
+ a342 = a341
+ a343 = a342
+ a344 = a343
+ a345 = a344
+ a346 = a345
+ a347 = a346
+ a348 = a347
+ a349 = a348
+ a350 = a349
+ a351 = a350
+ a352 = a351
+ a353 = a352
+ a354 = a353
+ a355 = a354
+ a356 = a355
+ a357 = a356
+ a358 = a357
+ a359 = a358
+ a360 = a359
+ a361 = a360
+ a362 = a361
+ a363 = a362
+ a364 = a363
+ a365 = a364
+ a366 = a365
+ a367 = a366
+ a368 = a367
+ a369 = a368
+ a370 = a369
+ a371 = a370
+ a372 = a371
+ a373 = a372
+ a374 = a373
+ a375 = a374
+ a376 = a375
+ a377 = a376
+ a378 = a377
+ a379 = a378
+ a380 = a379
+ a381 = a380
+ a382 = a381
+ a383 = a382
+ a384 = a383
+ a385 = a384
+ a386 = a385
+ a387 = a386
+ a388 = a387
+ a389 = a388
+ a390 = a389
+ a391 = a390
+ a392 = a391
+ a393 = a392
+ a394 = a393
+ a395 = a394
+ a396 = a395
+ a397 = a396
+ a398 = a397
+ a399 = a398
+ a400 = a399
+ a401 = a400
+ a402 = a401
+ a403 = a402
+ a404 = a403
+ a405 = a404
+ a406 = a405
+ a407 = a406
+ a408 = a407
+ a409 = a408
+ a410 = a409
+ a411 = a410
+ a412 = a411
+ a413 = a412
+ a414 = a413
+ a415 = a414
+ a416 = a415
+ a417 = a416
+ a418 = a417
+ a419 = a418
+ a420 = a419
+ a421 = a420
+ a422 = a421
+ a423 = a422
+ a424 = a423
+ a425 = a424
+ a426 = a425
+ a427 = a426
+ a428 = a427
+ a429 = a428
+ a430 = a429
+ a431 = a430
+ a432 = a431
+ a433 = a432
+ a434 = a433
+ a435 = a434
+ a436 = a435
+ a437 = a436
+ a438 = a437
+ a439 = a438
+ a440 = a439
+ a441 = a440
+ a442 = a441
+ a443 = a442
+ a444 = a443
+ a445 = a444
+ a446 = a445
+ a447 = a446
+ a448 = a447
+ a449 = a448
+ a450 = a449
+ a451 = a450
+ a452 = a451
+ a453 = a452
+ a454 = a453
+ a455 = a454
+ a456 = a455
+ a457 = a456
+ a458 = a457
+ a459 = a458
+ a460 = a459
+ a461 = a460
+ a462 = a461
+ a463 = a462
+ a464 = a463
+ a465 = a464
+ a466 = a465
+ a467 = a466
+ a468 = a467
+ a469 = a468
+ a470 = a469
+ a471 = a470
+ a472 = a471
+ a473 = a472
+ a474 = a473
+ a475 = a474
+ a476 = a475
+ a477 = a476
+ a478 = a477
+ a479 = a478
+ a480 = a479
+ a481 = a480
+ a482 = a481
+ a483 = a482
+ a484 = a483
+ a485 = a484
+ a486 = a485
+ a487 = a486
+ a488 = a487
+ a489 = a488
+ a490 = a489
+ a491 = a490
+ a492 = a491
+ a493 = a492
+ a494 = a493
+ a495 = a494
+ a496 = a495
+ a497 = a496
+ a498 = a497 in
+ a498
--- /dev/null
+--!!! 500 defns, not chained together
+module Main(main) where
+
+main = undefined
+a000 = []
+a001 = []
+a002 = []
+a003 = []
+a004 = []
+a005 = []
+a006 = []
+a007 = []
+a008 = []
+a009 = []
+a010 = []
+a011 = []
+a012 = []
+a013 = []
+a014 = []
+a015 = []
+a016 = []
+a017 = []
+a018 = []
+a019 = []
+a020 = []
+a021 = []
+a022 = []
+a023 = []
+a024 = []
+a025 = []
+a026 = []
+a027 = []
+a028 = []
+a029 = []
+a030 = []
+a031 = []
+a032 = []
+a033 = []
+a034 = []
+a035 = []
+a036 = []
+a037 = []
+a038 = []
+a039 = []
+a040 = []
+a041 = []
+a042 = []
+a043 = []
+a044 = []
+a045 = []
+a046 = []
+a047 = []
+a048 = []
+a049 = []
+a050 = []
+a051 = []
+a052 = []
+a053 = []
+a054 = []
+a055 = []
+a056 = []
+a057 = []
+a058 = []
+a059 = []
+a060 = []
+a061 = []
+a062 = []
+a063 = []
+a064 = []
+a065 = []
+a066 = []
+a067 = []
+a068 = []
+a069 = []
+a070 = []
+a071 = []
+a072 = []
+a073 = []
+a074 = []
+a075 = []
+a076 = []
+a077 = []
+a078 = []
+a079 = []
+a080 = []
+a081 = []
+a082 = []
+a083 = []
+a084 = []
+a085 = []
+a086 = []
+a087 = []
+a088 = []
+a089 = []
+a090 = []
+a091 = []
+a092 = []
+a093 = []
+a094 = []
+a095 = []
+a096 = []
+a097 = []
+a098 = []
+a099 = []
+
+a100 = []
+a101 = []
+a102 = []
+a103 = []
+a104 = []
+a105 = []
+a106 = []
+a107 = []
+a108 = []
+a109 = []
+a110 = []
+a111 = []
+a112 = []
+a113 = []
+a114 = []
+a115 = []
+a116 = []
+a117 = []
+a118 = []
+a119 = []
+a120 = []
+a121 = []
+a122 = []
+a123 = []
+a124 = []
+a125 = []
+a126 = []
+a127 = []
+a128 = []
+a129 = []
+a130 = []
+a131 = []
+a132 = []
+a133 = []
+a134 = []
+a135 = []
+a136 = []
+a137 = []
+a138 = []
+a139 = []
+a140 = []
+a141 = []
+a142 = []
+a143 = []
+a144 = []
+a145 = []
+a146 = []
+a147 = []
+a148 = []
+a149 = []
+a150 = []
+a151 = []
+a152 = []
+a153 = []
+a154 = []
+a155 = []
+a156 = []
+a157 = []
+a158 = []
+a159 = []
+a160 = []
+a161 = []
+a162 = []
+a163 = []
+a164 = []
+a165 = []
+a166 = []
+a167 = []
+a168 = []
+a169 = []
+a170 = []
+a171 = []
+a172 = []
+a173 = []
+a174 = []
+a175 = []
+a176 = []
+a177 = []
+a178 = []
+a179 = []
+a180 = []
+a181 = []
+a182 = []
+a183 = []
+a184 = []
+a185 = []
+a186 = []
+a187 = []
+a188 = []
+a189 = []
+a190 = []
+a191 = []
+a192 = []
+a193 = []
+a194 = []
+a195 = []
+a196 = []
+a197 = []
+a198 = []
+a199 = []
+
+a200 = []
+a201 = []
+a202 = []
+a203 = []
+a204 = []
+a205 = []
+a206 = []
+a207 = []
+a208 = []
+a209 = []
+a210 = []
+a211 = []
+a212 = []
+a213 = []
+a214 = []
+a215 = []
+a216 = []
+a217 = []
+a218 = []
+a219 = []
+a220 = []
+a221 = []
+a222 = []
+a223 = []
+a224 = []
+a225 = []
+a226 = []
+a227 = []
+a228 = []
+a229 = []
+a230 = []
+a231 = []
+a232 = []
+a233 = []
+a234 = []
+a235 = []
+a236 = []
+a237 = []
+a238 = []
+a239 = []
+a240 = []
+a241 = []
+a242 = []
+a243 = []
+a244 = []
+a245 = []
+a246 = []
+a247 = []
+a248 = []
+a249 = []
+a250 = []
+a251 = []
+a252 = []
+a253 = []
+a254 = []
+a255 = []
+a256 = []
+a257 = []
+a258 = []
+a259 = []
+a260 = []
+a261 = []
+a262 = []
+a263 = []
+a264 = []
+a265 = []
+a266 = []
+a267 = []
+a268 = []
+a269 = []
+a270 = []
+a271 = []
+a272 = []
+a273 = []
+a274 = []
+a275 = []
+a276 = []
+a277 = []
+a278 = []
+a279 = []
+a280 = []
+a281 = []
+a282 = []
+a283 = []
+a284 = []
+a285 = []
+a286 = []
+a287 = []
+a288 = []
+a289 = []
+a290 = []
+a291 = []
+a292 = []
+a293 = []
+a294 = []
+a295 = []
+a296 = []
+a297 = []
+a298 = []
+a299 = []
+
+a300 = []
+a301 = []
+a302 = []
+a303 = []
+a304 = []
+a305 = []
+a306 = []
+a307 = []
+a308 = []
+a309 = []
+a310 = []
+a311 = []
+a312 = []
+a313 = []
+a314 = []
+a315 = []
+a316 = []
+a317 = []
+a318 = []
+a319 = []
+a320 = []
+a321 = []
+a322 = []
+a323 = []
+a324 = []
+a325 = []
+a326 = []
+a327 = []
+a328 = []
+a329 = []
+a330 = []
+a331 = []
+a332 = []
+a333 = []
+a334 = []
+a335 = []
+a336 = []
+a337 = []
+a338 = []
+a339 = []
+a340 = []
+a341 = []
+a342 = []
+a343 = []
+a344 = []
+a345 = []
+a346 = []
+a347 = []
+a348 = []
+a349 = []
+a350 = []
+a351 = []
+a352 = []
+a353 = []
+a354 = []
+a355 = []
+a356 = []
+a357 = []
+a358 = []
+a359 = []
+a360 = []
+a361 = []
+a362 = []
+a363 = []
+a364 = []
+a365 = []
+a366 = []
+a367 = []
+a368 = []
+a369 = []
+a370 = []
+a371 = []
+a372 = []
+a373 = []
+a374 = []
+a375 = []
+a376 = []
+a377 = []
+a378 = []
+a379 = []
+a380 = []
+a381 = []
+a382 = []
+a383 = []
+a384 = []
+a385 = []
+a386 = []
+a387 = []
+a388 = []
+a389 = []
+a390 = []
+a391 = []
+a392 = []
+a393 = []
+a394 = []
+a395 = []
+a396 = []
+a397 = []
+a398 = []
+a399 = []
+
+a400 = []
+a401 = []
+a402 = []
+a403 = []
+a404 = []
+a405 = []
+a406 = []
+a407 = []
+a408 = []
+a409 = []
+a410 = []
+a411 = []
+a412 = []
+a413 = []
+a414 = []
+a415 = []
+a416 = []
+a417 = []
+a418 = []
+a419 = []
+a420 = []
+a421 = []
+a422 = []
+a423 = []
+a424 = []
+a425 = []
+a426 = []
+a427 = []
+a428 = []
+a429 = []
+a430 = []
+a431 = []
+a432 = []
+a433 = []
+a434 = []
+a435 = []
+a436 = []
+a437 = []
+a438 = []
+a439 = []
+a440 = []
+a441 = []
+a442 = []
+a443 = []
+a444 = []
+a445 = []
+a446 = []
+a447 = []
+a448 = []
+a449 = []
+a450 = []
+a451 = []
+a452 = []
+a453 = []
+a454 = []
+a455 = []
+a456 = []
+a457 = []
+a458 = []
+a459 = []
+a460 = []
+a461 = []
+a462 = []
+a463 = []
+a464 = []
+a465 = []
+a466 = []
+a467 = []
+a468 = []
+a469 = []
+a470 = []
+a471 = []
+a472 = []
+a473 = []
+a474 = []
+a475 = []
+a476 = []
+a477 = []
+a478 = []
+a479 = []
+a480 = []
+a481 = []
+a482 = []
+a483 = []
+a484 = []
+a485 = []
+a486 = []
+a487 = []
+a488 = []
+a489 = []
+a490 = []
+a491 = []
+a492 = []
+a493 = []
+a494 = []
+a495 = []
+a496 = []
+a497 = []
+a498 = []
+a499 = []
--- /dev/null
+TOP = ../../../..
+include $(TOP)/mk/boilerplate.mk
+
+HS_SRCS = $(wildcard *.hs)
+
+SRC_RUNTEST_OPTS += -o1 $*.stdout -o2 $*.stderr -x 1
+HC_OPTS += -noC
+
+%.o : %.hs
+ $(RUNTEST) $(HC) $(RUNTEST_OPTS) -- $(HC_OPTS) -c $< -o $@
+
+all :: $(HS_OBJS)
+
+include $(TOP)/mk/target.mk
--- /dev/null
+module ShouldFail where
+
+f x x = 2
--- /dev/null
+
+rnfail001.hs:3: Conflicting definitions for `x' in pattern
+
+
+Compilation had errors
--- /dev/null
+--!!! rn001: super-simple set of bindings,
+--!!! incl wildcard pattern-bindings and *duplicates*
+
+x = []
+y = []
+y = []
+_ = []
+_ = 1
+z = []
+_ = []
--- /dev/null
+
+rnfail002.hs:4:
+ Conflicting definitions for: `y'
+ Defined at rnfail002.hs:6
+ Defined at rnfail002.hs:5
+
+
+Compilation had errors
--- /dev/null
+--!!! split definition of f (error)
+f [] = []
+g x = x
+f (x:xs) = []
--- /dev/null
+
+rnfail003.hs:2:
+ Conflicting definitions for: `f'
+ Defined at rnfail003.hs:4
+ Defined at rnfail003.hs:2
+
+
+Compilation had errors
--- /dev/null
+--!!! multiple definitions, but hidden in patterns
+module Foo where
+
+f x = x
+ where
+ a = []
+ (b,c,a) = ([],[],d)
+ [d,b,_] = ([],a,[])
--- /dev/null
+
+rnfail004.hs:6: Conflicting definitions for `a' in binding group
+
+rnfail004.hs:7: Conflicting definitions for `b' in binding group
+
+
+Compilation had errors
--- /dev/null
+
+rnfail005.hs:4:
+ Conflicting definitions for: `v'
+ Defined at rnfail005.hs:20
+ Defined at rnfail005.hs:19
+
+
+Compilation had errors
--- /dev/null
+--!!! Main module with no definition of main
+
+module Main where
+
+f x = x
--- /dev/null
+
+rnfail007.hs:3: Module Main must include a definition for `Main.main'
+
+
+Compilation had errors
--- /dev/null
+--!!! Class and instance decl
+
+module Test where
+
+class K a where
+ op1 :: a -> a -> a
+ op2 :: Int -> a
+
+instance K Int where
+ op1 a b = a+b
+ op2 x = x
+
+instance K Bool where
+ op1 a b = a
+ -- Pick up the default decl for op2
+
+instance K [a] where
+ op3 a = a -- Oops! Isn't a class op of K
+
--- /dev/null
+
+rnfail008.hs:18: Class `K' does not have a method `op3'
+
+rnfail008.hs:18: No explicit method nor default method for `op1'
+ in an instance declaration for `K'
+
+rnfail008.hs:18: No explicit method nor default method for `op2'
+ in an instance declaration for `K'
+
+rnfail008.hs:14: No explicit method nor default method for `op2'
+ in an instance declaration for `K'
+
+Compilation had errors
--- /dev/null
+module Foo where
+
+data F = A | B
+
+data G = A | C
--- /dev/null
+
+rnfail009.hs:1:
+ Conflicting definitions for: `A'
+ Defined at rnfail009.hs:5
+ Defined at rnfail009.hs:3
+
+
+Compilation had errors
--- /dev/null
+
+f x = 2
+
+g x = 6
+
+f x = 3
--- /dev/null
+
+rnfail010.hs:2:
+ Conflicting definitions for: `f'
+ Defined at rnfail010.hs:6
+ Defined at rnfail010.hs:2
+
+
+Compilation had errors
--- /dev/null
+
+type A = Int
+
+type B = Bool
+
+type A = [Bool]
--- /dev/null
+
+rnfail011.hs:2:
+ Conflicting definitions for: `A'
+ Defined at rnfail011.hs:6
+ Defined at rnfail011.hs:2
+
+
+Compilation had errors
--- /dev/null
+
+class A a where
+ op1 :: a
+
+class B a where
+ op2 :: b -> b
+
+class A a where
+ op3 :: a
--- /dev/null
+
+rnfail012.hs:2:
+ Conflicting definitions for: `A'
+ Defined at rnfail012.hs:9
+ Defined at rnfail012.hs:3
+
+
+Compilation had errors
--- /dev/null
+--!!! Conflicting constructors from two data type decls
+
+module Foo where
+
+data T1 = MkT Int
+
+data T2 = MkT Bool
+
+f (MkT x) = x
--- /dev/null
+
+rnfail013.hs:3:
+ Conflicting definitions for: `MkT'
+ Defined at rnfail013.hs:9
+ Defined at rnfail013.hs:7
+
+
+Compilation had errors
--- /dev/null
+{- Check that the context of a type does not
+ constrain any in-scope variables, and only constrains
+ type variables free in the type.
+-}
+
+module Foo where
+
+instance Eq a => Eq Bool where
+ (==) = error "help"
+
+
+f :: Eq a => Int -> Int
+f x = x
+
+
+class Foo a where
+ op :: Eq a => a -> a
--- /dev/null
+
+rnfail014.hs:12:
+ Context constrains type variable(s) `a'
+ that do not appear in `Int -> Int'
+ in the type signature for `f'
+
+rnfail014.hs:17:
+ Context constrains in-scope type variable(s) `a'
+ in the type signature for `op'
+
+rnfail014.hs:9:
+ Context constrains type variable(s) `a'
+ that do not appear in `Eq Bool'
+ in the type signature for an instance decl
+
+
+Compilation had errors