diff options
Diffstat (limited to 'test')
188 files changed, 6714 insertions, 678 deletions
diff --git a/test/benchmarking/t6726-patmat-analysis.scala b/test/benchmarking/t6726-patmat-analysis.scala new file mode 100644 index 0000000000..bcb7f6c6b2 --- /dev/null +++ b/test/benchmarking/t6726-patmat-analysis.scala @@ -0,0 +1,4005 @@ +trait Foo{ +abstract class Base +case class Dummy0(x: Int) extends Base +case class Dummy1(x: Int) extends Base +case class Dummy2(x: Int) extends Base +case class Dummy3(x: Int) extends Base +case class Dummy4(x: Int) extends Base +case class Dummy5(x: Int) extends Base +case class Dummy6(x: Int) extends Base +case class Dummy7(x: Int) extends Base +case class Dummy8(x: Int) extends Base +case class Dummy9(x: Int) extends Base +case class Dummy10(x: Int) extends Base +case class Dummy11(x: Int) extends Base +case class Dummy12(x: Int) extends Base +case class Dummy13(x: Int) extends Base +case class Dummy14(x: Int) extends Base +case class Dummy15(x: Int) extends Base +case class Dummy16(x: Int) extends Base +case class Dummy17(x: Int) extends Base +case class Dummy18(x: Int) extends Base +case class Dummy19(x: Int) extends Base +case class Dummy20(x: Int) extends Base +case class Dummy21(x: Int) extends Base +case class Dummy22(x: Int) extends Base +case class Dummy23(x: Int) extends Base +case class Dummy24(x: Int) extends Base +case class Dummy25(x: Int) extends Base +case class Dummy26(x: Int) extends Base +case class Dummy27(x: Int) extends Base +case class Dummy28(x: Int) extends Base +case class Dummy29(x: Int) extends Base +case class Dummy30(x: Int) extends Base +case class Dummy31(x: Int) extends Base +case class Dummy32(x: Int) extends Base +case class Dummy33(x: Int) extends Base +case class Dummy34(x: Int) extends Base +case class Dummy35(x: Int) extends Base +case class Dummy36(x: Int) extends Base +case class Dummy37(x: Int) extends Base +case class Dummy38(x: Int) extends Base +case class Dummy39(x: Int) extends Base +case class Dummy40(x: Int) extends Base +case class Dummy41(x: Int) extends Base +case class Dummy42(x: Int) extends Base +case class Dummy43(x: Int) extends Base +case class Dummy44(x: Int) extends Base +case class Dummy45(x: Int) extends Base +case class Dummy46(x: Int) extends Base +case class Dummy47(x: Int) extends Base +case class Dummy48(x: Int) extends Base +case class Dummy49(x: Int) extends Base +case class Dummy50(x: Int) extends Base +case class Dummy51(x: Int) extends Base +case class Dummy52(x: Int) extends Base +case class Dummy53(x: Int) extends Base +case class Dummy54(x: Int) extends Base +case class Dummy55(x: Int) extends Base +case class Dummy56(x: Int) extends Base +case class Dummy57(x: Int) extends Base +case class Dummy58(x: Int) extends Base +case class Dummy59(x: Int) extends Base +case class Dummy60(x: Int) extends Base +case class Dummy61(x: Int) extends Base +case class Dummy62(x: Int) extends Base +case class Dummy63(x: Int) extends Base +case class Dummy64(x: Int) extends Base +case class Dummy65(x: Int) extends Base +case class Dummy66(x: Int) extends Base +case class Dummy67(x: Int) extends Base +case class Dummy68(x: Int) extends Base +case class Dummy69(x: Int) extends Base +case class Dummy70(x: Int) extends Base +case class Dummy71(x: Int) extends Base +case class Dummy72(x: Int) extends Base +case class Dummy73(x: Int) extends Base +case class Dummy74(x: Int) extends Base +case class Dummy75(x: Int) extends Base +case class Dummy76(x: Int) extends Base +case class Dummy77(x: Int) extends Base +case class Dummy78(x: Int) extends Base +case class Dummy79(x: Int) extends Base +case class Dummy80(x: Int) extends Base +case class Dummy81(x: Int) extends Base +case class Dummy82(x: Int) extends Base +case class Dummy83(x: Int) extends Base +case class Dummy84(x: Int) extends Base +case class Dummy85(x: Int) extends Base +case class Dummy86(x: Int) extends Base +case class Dummy87(x: Int) extends Base +case class Dummy88(x: Int) extends Base +case class Dummy89(x: Int) extends Base +case class Dummy90(x: Int) extends Base +case class Dummy91(x: Int) extends Base +case class Dummy92(x: Int) extends Base +case class Dummy93(x: Int) extends Base +case class Dummy94(x: Int) extends Base +case class Dummy95(x: Int) extends Base +case class Dummy96(x: Int) extends Base +case class Dummy97(x: Int) extends Base +case class Dummy98(x: Int) extends Base +case class Dummy99(x: Int) extends Base +case class Dummy100(x: Int) extends Base +case class Dummy101(x: Int) extends Base +case class Dummy102(x: Int) extends Base +case class Dummy103(x: Int) extends Base +case class Dummy104(x: Int) extends Base +case class Dummy105(x: Int) extends Base +case class Dummy106(x: Int) extends Base +case class Dummy107(x: Int) extends Base +case class Dummy108(x: Int) extends Base +case class Dummy109(x: Int) extends Base +case class Dummy110(x: Int) extends Base +case class Dummy111(x: Int) extends Base +case class Dummy112(x: Int) extends Base +case class Dummy113(x: Int) extends Base +case class Dummy114(x: Int) extends Base +case class Dummy115(x: Int) extends Base +case class Dummy116(x: Int) extends Base +case class Dummy117(x: Int) extends Base +case class Dummy118(x: Int) extends Base +case class Dummy119(x: Int) extends Base +case class Dummy120(x: Int) extends Base +case class Dummy121(x: Int) extends Base +case class Dummy122(x: Int) extends Base +case class Dummy123(x: Int) extends Base +case class Dummy124(x: Int) extends Base +case class Dummy125(x: Int) extends Base +case class Dummy126(x: Int) extends Base +case class Dummy127(x: Int) extends Base +case class Dummy128(x: Int) extends Base +case class Dummy129(x: Int) extends Base +case class Dummy130(x: Int) extends Base +case class Dummy131(x: Int) extends Base +case class Dummy132(x: Int) extends Base +case class Dummy133(x: Int) extends Base +case class Dummy134(x: Int) extends Base +case class Dummy135(x: Int) extends Base +case class Dummy136(x: Int) extends Base +case class Dummy137(x: Int) extends Base +case class Dummy138(x: Int) extends Base +case class Dummy139(x: Int) extends Base +case class Dummy140(x: Int) extends Base +case class Dummy141(x: Int) extends Base +case class Dummy142(x: Int) extends Base +case class Dummy143(x: Int) extends Base +case class Dummy144(x: Int) extends Base +case class Dummy145(x: Int) extends Base +case class Dummy146(x: Int) extends Base +case class Dummy147(x: Int) extends Base +case class Dummy148(x: Int) extends Base +case class Dummy149(x: Int) extends Base +case class Dummy150(x: Int) extends Base +case class Dummy151(x: Int) extends Base +case class Dummy152(x: Int) extends Base +case class Dummy153(x: Int) extends Base +case class Dummy154(x: Int) extends Base +case class Dummy155(x: Int) extends Base +case class Dummy156(x: Int) extends Base +case class Dummy157(x: Int) extends Base +case class Dummy158(x: Int) extends Base +case class Dummy159(x: Int) extends Base +case class Dummy160(x: Int) extends Base +case class Dummy161(x: Int) extends Base +case class Dummy162(x: Int) extends Base +case class Dummy163(x: Int) extends Base +case class Dummy164(x: Int) extends Base +case class Dummy165(x: Int) extends Base +case class Dummy166(x: Int) extends Base +case class Dummy167(x: Int) extends Base +case class Dummy168(x: Int) extends Base +case class Dummy169(x: Int) extends Base +case class Dummy170(x: Int) extends Base +case class Dummy171(x: Int) extends Base +case class Dummy172(x: Int) extends Base +case class Dummy173(x: Int) extends Base +case class Dummy174(x: Int) extends Base +case class Dummy175(x: Int) extends Base +case class Dummy176(x: Int) extends Base +case class Dummy177(x: Int) extends Base +case class Dummy178(x: Int) extends Base +case class Dummy179(x: Int) extends Base +case class Dummy180(x: Int) extends Base +case class Dummy181(x: Int) extends Base +case class Dummy182(x: Int) extends Base +case class Dummy183(x: Int) extends Base +case class Dummy184(x: Int) extends Base +case class Dummy185(x: Int) extends Base +case class Dummy186(x: Int) extends Base +case class Dummy187(x: Int) extends Base +case class Dummy188(x: Int) extends Base +case class Dummy189(x: Int) extends Base +case class Dummy190(x: Int) extends Base +case class Dummy191(x: Int) extends Base +case class Dummy192(x: Int) extends Base +case class Dummy193(x: Int) extends Base +case class Dummy194(x: Int) extends Base +case class Dummy195(x: Int) extends Base +case class Dummy196(x: Int) extends Base +case class Dummy197(x: Int) extends Base +case class Dummy198(x: Int) extends Base +case class Dummy199(x: Int) extends Base +case class Dummy200(x: Int) extends Base +case class Dummy201(x: Int) extends Base +case class Dummy202(x: Int) extends Base +case class Dummy203(x: Int) extends Base +case class Dummy204(x: Int) extends Base +case class Dummy205(x: Int) extends Base +case class Dummy206(x: Int) extends Base +case class Dummy207(x: Int) extends Base +case class Dummy208(x: Int) extends Base +case class Dummy209(x: Int) extends Base +case class Dummy210(x: Int) extends Base +case class Dummy211(x: Int) extends Base +case class Dummy212(x: Int) extends Base +case class Dummy213(x: Int) extends Base +case class Dummy214(x: Int) extends Base +case class Dummy215(x: Int) extends Base +case class Dummy216(x: Int) extends Base +case class Dummy217(x: Int) extends Base +case class Dummy218(x: Int) extends Base +case class Dummy219(x: Int) extends Base +case class Dummy220(x: Int) extends Base +case class Dummy221(x: Int) extends Base +case class Dummy222(x: Int) extends Base +case class Dummy223(x: Int) extends Base +case class Dummy224(x: Int) extends Base +case class Dummy225(x: Int) extends Base +case class Dummy226(x: Int) extends Base +case class Dummy227(x: Int) extends Base +case class Dummy228(x: Int) extends Base +case class Dummy229(x: Int) extends Base +case class Dummy230(x: Int) extends Base +case class Dummy231(x: Int) extends Base +case class Dummy232(x: Int) extends Base +case class Dummy233(x: Int) extends Base +case class Dummy234(x: Int) extends Base +case class Dummy235(x: Int) extends Base +case class Dummy236(x: Int) extends Base +case class Dummy237(x: Int) extends Base +case class Dummy238(x: Int) extends Base +case class Dummy239(x: Int) extends Base +case class Dummy240(x: Int) extends Base +case class Dummy241(x: Int) extends Base +case class Dummy242(x: Int) extends Base +case class Dummy243(x: Int) extends Base +case class Dummy244(x: Int) extends Base +case class Dummy245(x: Int) extends Base +case class Dummy246(x: Int) extends Base +case class Dummy247(x: Int) extends Base +case class Dummy248(x: Int) extends Base +case class Dummy249(x: Int) extends Base +case class Dummy250(x: Int) extends Base +case class Dummy251(x: Int) extends Base +case class Dummy252(x: Int) extends Base +case class Dummy253(x: Int) extends Base +case class Dummy254(x: Int) extends Base +case class Dummy255(x: Int) extends Base +case class Dummy256(x: Int) extends Base +case class Dummy257(x: Int) extends Base +case class Dummy258(x: Int) extends Base +case class Dummy259(x: Int) extends Base +case class Dummy260(x: Int) extends Base +case class Dummy261(x: Int) extends Base +case class Dummy262(x: Int) extends Base +case class Dummy263(x: Int) extends Base +case class Dummy264(x: Int) extends Base +case class Dummy265(x: Int) extends Base +case class Dummy266(x: Int) extends Base +case class Dummy267(x: Int) extends Base +case class Dummy268(x: Int) extends Base +case class Dummy269(x: Int) extends Base +case class Dummy270(x: Int) extends Base +case class Dummy271(x: Int) extends Base +case class Dummy272(x: Int) extends Base +case class Dummy273(x: Int) extends Base +case class Dummy274(x: Int) extends Base +case class Dummy275(x: Int) extends Base +case class Dummy276(x: Int) extends Base +case class Dummy277(x: Int) extends Base +case class Dummy278(x: Int) extends Base +case class Dummy279(x: Int) extends Base +case class Dummy280(x: Int) extends Base +case class Dummy281(x: Int) extends Base +case class Dummy282(x: Int) extends Base +case class Dummy283(x: Int) extends Base +case class Dummy284(x: Int) extends Base +case class Dummy285(x: Int) extends Base +case class Dummy286(x: Int) extends Base +case class Dummy287(x: Int) extends Base +case class Dummy288(x: Int) extends Base +case class Dummy289(x: Int) extends Base +case class Dummy290(x: Int) extends Base +case class Dummy291(x: Int) extends Base +case class Dummy292(x: Int) extends Base +case class Dummy293(x: Int) extends Base +case class Dummy294(x: Int) extends Base +case class Dummy295(x: Int) extends Base +case class Dummy296(x: Int) extends Base +case class Dummy297(x: Int) extends Base +case class Dummy298(x: Int) extends Base +case class Dummy299(x: Int) extends Base +case class Dummy300(x: Int) extends Base +case class Dummy301(x: Int) extends Base +case class Dummy302(x: Int) extends Base +case class Dummy303(x: Int) extends Base +case class Dummy304(x: Int) extends Base +case class Dummy305(x: Int) extends Base +case class Dummy306(x: Int) extends Base +case class Dummy307(x: Int) extends Base +case class Dummy308(x: Int) extends Base +case class Dummy309(x: Int) extends Base +case class Dummy310(x: Int) extends Base +case class Dummy311(x: Int) extends Base +case class Dummy312(x: Int) extends Base +case class Dummy313(x: Int) extends Base +case class Dummy314(x: Int) extends Base +case class Dummy315(x: Int) extends Base +case class Dummy316(x: Int) extends Base +case class Dummy317(x: Int) extends Base +case class Dummy318(x: Int) extends Base +case class Dummy319(x: Int) extends Base +case class Dummy320(x: Int) extends Base +case class Dummy321(x: Int) extends Base +case class Dummy322(x: Int) extends Base +case class Dummy323(x: Int) extends Base +case class Dummy324(x: Int) extends Base +case class Dummy325(x: Int) extends Base +case class Dummy326(x: Int) extends Base +case class Dummy327(x: Int) extends Base +case class Dummy328(x: Int) extends Base +case class Dummy329(x: Int) extends Base +case class Dummy330(x: Int) extends Base +case class Dummy331(x: Int) extends Base +case class Dummy332(x: Int) extends Base +case class Dummy333(x: Int) extends Base +case class Dummy334(x: Int) extends Base +case class Dummy335(x: Int) extends Base +case class Dummy336(x: Int) extends Base +case class Dummy337(x: Int) extends Base +case class Dummy338(x: Int) extends Base +case class Dummy339(x: Int) extends Base +case class Dummy340(x: Int) extends Base +case class Dummy341(x: Int) extends Base +case class Dummy342(x: Int) extends Base +case class Dummy343(x: Int) extends Base +case class Dummy344(x: Int) extends Base +case class Dummy345(x: Int) extends Base +case class Dummy346(x: Int) extends Base +case class Dummy347(x: Int) extends Base +case class Dummy348(x: Int) extends Base +case class Dummy349(x: Int) extends Base +case class Dummy350(x: Int) extends Base +case class Dummy351(x: Int) extends Base +case class Dummy352(x: Int) extends Base +case class Dummy353(x: Int) extends Base +case class Dummy354(x: Int) extends Base +case class Dummy355(x: Int) extends Base +case class Dummy356(x: Int) extends Base +case class Dummy357(x: Int) extends Base +case class Dummy358(x: Int) extends Base +case class Dummy359(x: Int) extends Base +case class Dummy360(x: Int) extends Base +case class Dummy361(x: Int) extends Base +case class Dummy362(x: Int) extends Base +case class Dummy363(x: Int) extends Base +case class Dummy364(x: Int) extends Base +case class Dummy365(x: Int) extends Base +case class Dummy366(x: Int) extends Base +case class Dummy367(x: Int) extends Base +case class Dummy368(x: Int) extends Base +case class Dummy369(x: Int) extends Base +case class Dummy370(x: Int) extends Base +case class Dummy371(x: Int) extends Base +case class Dummy372(x: Int) extends Base +case class Dummy373(x: Int) extends Base +case class Dummy374(x: Int) extends Base +case class Dummy375(x: Int) extends Base +case class Dummy376(x: Int) extends Base +case class Dummy377(x: Int) extends Base +case class Dummy378(x: Int) extends Base +case class Dummy379(x: Int) extends Base +case class Dummy380(x: Int) extends Base +case class Dummy381(x: Int) extends Base +case class Dummy382(x: Int) extends Base +case class Dummy383(x: Int) extends Base +case class Dummy384(x: Int) extends Base +case class Dummy385(x: Int) extends Base +case class Dummy386(x: Int) extends Base +case class Dummy387(x: Int) extends Base +case class Dummy388(x: Int) extends Base +case class Dummy389(x: Int) extends Base +case class Dummy390(x: Int) extends Base +case class Dummy391(x: Int) extends Base +case class Dummy392(x: Int) extends Base +case class Dummy393(x: Int) extends Base +case class Dummy394(x: Int) extends Base +case class Dummy395(x: Int) extends Base +case class Dummy396(x: Int) extends Base +case class Dummy397(x: Int) extends Base +case class Dummy398(x: Int) extends Base +case class Dummy399(x: Int) extends Base +case class Dummy400(x: Int) extends Base +case class Dummy401(x: Int) extends Base +case class Dummy402(x: Int) extends Base +case class Dummy403(x: Int) extends Base +case class Dummy404(x: Int) extends Base +case class Dummy405(x: Int) extends Base +case class Dummy406(x: Int) extends Base +case class Dummy407(x: Int) extends Base +case class Dummy408(x: Int) extends Base +case class Dummy409(x: Int) extends Base +case class Dummy410(x: Int) extends Base +case class Dummy411(x: Int) extends Base +case class Dummy412(x: Int) extends Base +case class Dummy413(x: Int) extends Base +case class Dummy414(x: Int) extends Base +case class Dummy415(x: Int) extends Base +case class Dummy416(x: Int) extends Base +case class Dummy417(x: Int) extends Base +case class Dummy418(x: Int) extends Base +case class Dummy419(x: Int) extends Base +case class Dummy420(x: Int) extends Base +case class Dummy421(x: Int) extends Base +case class Dummy422(x: Int) extends Base +case class Dummy423(x: Int) extends Base +case class Dummy424(x: Int) extends Base +case class Dummy425(x: Int) extends Base +case class Dummy426(x: Int) extends Base +case class Dummy427(x: Int) extends Base +case class Dummy428(x: Int) extends Base +case class Dummy429(x: Int) extends Base +case class Dummy430(x: Int) extends Base +case class Dummy431(x: Int) extends Base +case class Dummy432(x: Int) extends Base +case class Dummy433(x: Int) extends Base +case class Dummy434(x: Int) extends Base +case class Dummy435(x: Int) extends Base +case class Dummy436(x: Int) extends Base +case class Dummy437(x: Int) extends Base +case class Dummy438(x: Int) extends Base +case class Dummy439(x: Int) extends Base +case class Dummy440(x: Int) extends Base +case class Dummy441(x: Int) extends Base +case class Dummy442(x: Int) extends Base +case class Dummy443(x: Int) extends Base +case class Dummy444(x: Int) extends Base +case class Dummy445(x: Int) extends Base +case class Dummy446(x: Int) extends Base +case class Dummy447(x: Int) extends Base +case class Dummy448(x: Int) extends Base +case class Dummy449(x: Int) extends Base +case class Dummy450(x: Int) extends Base +case class Dummy451(x: Int) extends Base +case class Dummy452(x: Int) extends Base +case class Dummy453(x: Int) extends Base +case class Dummy454(x: Int) extends Base +case class Dummy455(x: Int) extends Base +case class Dummy456(x: Int) extends Base +case class Dummy457(x: Int) extends Base +case class Dummy458(x: Int) extends Base +case class Dummy459(x: Int) extends Base +case class Dummy460(x: Int) extends Base +case class Dummy461(x: Int) extends Base +case class Dummy462(x: Int) extends Base +case class Dummy463(x: Int) extends Base +case class Dummy464(x: Int) extends Base +case class Dummy465(x: Int) extends Base +case class Dummy466(x: Int) extends Base +case class Dummy467(x: Int) extends Base +case class Dummy468(x: Int) extends Base +case class Dummy469(x: Int) extends Base +case class Dummy470(x: Int) extends Base +case class Dummy471(x: Int) extends Base +case class Dummy472(x: Int) extends Base +case class Dummy473(x: Int) extends Base +case class Dummy474(x: Int) extends Base +case class Dummy475(x: Int) extends Base +case class Dummy476(x: Int) extends Base +case class Dummy477(x: Int) extends Base +case class Dummy478(x: Int) extends Base +case class Dummy479(x: Int) extends Base +case class Dummy480(x: Int) extends Base +case class Dummy481(x: Int) extends Base +case class Dummy482(x: Int) extends Base +case class Dummy483(x: Int) extends Base +case class Dummy484(x: Int) extends Base +case class Dummy485(x: Int) extends Base +case class Dummy486(x: Int) extends Base +case class Dummy487(x: Int) extends Base +case class Dummy488(x: Int) extends Base +case class Dummy489(x: Int) extends Base +case class Dummy490(x: Int) extends Base +case class Dummy491(x: Int) extends Base +case class Dummy492(x: Int) extends Base +case class Dummy493(x: Int) extends Base +case class Dummy494(x: Int) extends Base +case class Dummy495(x: Int) extends Base +case class Dummy496(x: Int) extends Base +case class Dummy497(x: Int) extends Base +case class Dummy498(x: Int) extends Base +case class Dummy499(x: Int) extends Base +case class Dummy500(x: Int) extends Base +case class Dummy501(x: Int) extends Base +case class Dummy502(x: Int) extends Base +case class Dummy503(x: Int) extends Base +case class Dummy504(x: Int) extends Base +case class Dummy505(x: Int) extends Base +case class Dummy506(x: Int) extends Base +case class Dummy507(x: Int) extends Base +case class Dummy508(x: Int) extends Base +case class Dummy509(x: Int) extends Base +case class Dummy510(x: Int) extends Base +case class Dummy511(x: Int) extends Base +case class Dummy512(x: Int) extends Base +case class Dummy513(x: Int) extends Base +case class Dummy514(x: Int) extends Base +case class Dummy515(x: Int) extends Base +case class Dummy516(x: Int) extends Base +case class Dummy517(x: Int) extends Base +case class Dummy518(x: Int) extends Base +case class Dummy519(x: Int) extends Base +case class Dummy520(x: Int) extends Base +case class Dummy521(x: Int) extends Base +case class Dummy522(x: Int) extends Base +case class Dummy523(x: Int) extends Base +case class Dummy524(x: Int) extends Base +case class Dummy525(x: Int) extends Base +case class Dummy526(x: Int) extends Base +case class Dummy527(x: Int) extends Base +case class Dummy528(x: Int) extends Base +case class Dummy529(x: Int) extends Base +case class Dummy530(x: Int) extends Base +case class Dummy531(x: Int) extends Base +case class Dummy532(x: Int) extends Base +case class Dummy533(x: Int) extends Base +case class Dummy534(x: Int) extends Base +case class Dummy535(x: Int) extends Base +case class Dummy536(x: Int) extends Base +case class Dummy537(x: Int) extends Base +case class Dummy538(x: Int) extends Base +case class Dummy539(x: Int) extends Base +case class Dummy540(x: Int) extends Base +case class Dummy541(x: Int) extends Base +case class Dummy542(x: Int) extends Base +case class Dummy543(x: Int) extends Base +case class Dummy544(x: Int) extends Base +case class Dummy545(x: Int) extends Base +case class Dummy546(x: Int) extends Base +case class Dummy547(x: Int) extends Base +case class Dummy548(x: Int) extends Base +case class Dummy549(x: Int) extends Base +case class Dummy550(x: Int) extends Base +case class Dummy551(x: Int) extends Base +case class Dummy552(x: Int) extends Base +case class Dummy553(x: Int) extends Base +case class Dummy554(x: Int) extends Base +case class Dummy555(x: Int) extends Base +case class Dummy556(x: Int) extends Base +case class Dummy557(x: Int) extends Base +case class Dummy558(x: Int) extends Base +case class Dummy559(x: Int) extends Base +case class Dummy560(x: Int) extends Base +case class Dummy561(x: Int) extends Base +case class Dummy562(x: Int) extends Base +case class Dummy563(x: Int) extends Base +case class Dummy564(x: Int) extends Base +case class Dummy565(x: Int) extends Base +case class Dummy566(x: Int) extends Base +case class Dummy567(x: Int) extends Base +case class Dummy568(x: Int) extends Base +case class Dummy569(x: Int) extends Base +case class Dummy570(x: Int) extends Base +case class Dummy571(x: Int) extends Base +case class Dummy572(x: Int) extends Base +case class Dummy573(x: Int) extends Base +case class Dummy574(x: Int) extends Base +case class Dummy575(x: Int) extends Base +case class Dummy576(x: Int) extends Base +case class Dummy577(x: Int) extends Base +case class Dummy578(x: Int) extends Base +case class Dummy579(x: Int) extends Base +case class Dummy580(x: Int) extends Base +case class Dummy581(x: Int) extends Base +case class Dummy582(x: Int) extends Base +case class Dummy583(x: Int) extends Base +case class Dummy584(x: Int) extends Base +case class Dummy585(x: Int) extends Base +case class Dummy586(x: Int) extends Base +case class Dummy587(x: Int) extends Base +case class Dummy588(x: Int) extends Base +case class Dummy589(x: Int) extends Base +case class Dummy590(x: Int) extends Base +case class Dummy591(x: Int) extends Base +case class Dummy592(x: Int) extends Base +case class Dummy593(x: Int) extends Base +case class Dummy594(x: Int) extends Base +case class Dummy595(x: Int) extends Base +case class Dummy596(x: Int) extends Base +case class Dummy597(x: Int) extends Base +case class Dummy598(x: Int) extends Base +case class Dummy599(x: Int) extends Base +case class Dummy600(x: Int) extends Base +case class Dummy601(x: Int) extends Base +case class Dummy602(x: Int) extends Base +case class Dummy603(x: Int) extends Base +case class Dummy604(x: Int) extends Base +case class Dummy605(x: Int) extends Base +case class Dummy606(x: Int) extends Base +case class Dummy607(x: Int) extends Base +case class Dummy608(x: Int) extends Base +case class Dummy609(x: Int) extends Base +case class Dummy610(x: Int) extends Base +case class Dummy611(x: Int) extends Base +case class Dummy612(x: Int) extends Base +case class Dummy613(x: Int) extends Base +case class Dummy614(x: Int) extends Base +case class Dummy615(x: Int) extends Base +case class Dummy616(x: Int) extends Base +case class Dummy617(x: Int) extends Base +case class Dummy618(x: Int) extends Base +case class Dummy619(x: Int) extends Base +case class Dummy620(x: Int) extends Base +case class Dummy621(x: Int) extends Base +case class Dummy622(x: Int) extends Base +case class Dummy623(x: Int) extends Base +case class Dummy624(x: Int) extends Base +case class Dummy625(x: Int) extends Base +case class Dummy626(x: Int) extends Base +case class Dummy627(x: Int) extends Base +case class Dummy628(x: Int) extends Base +case class Dummy629(x: Int) extends Base +case class Dummy630(x: Int) extends Base +case class Dummy631(x: Int) extends Base +case class Dummy632(x: Int) extends Base +case class Dummy633(x: Int) extends Base +case class Dummy634(x: Int) extends Base +case class Dummy635(x: Int) extends Base +case class Dummy636(x: Int) extends Base +case class Dummy637(x: Int) extends Base +case class Dummy638(x: Int) extends Base +case class Dummy639(x: Int) extends Base +case class Dummy640(x: Int) extends Base +case class Dummy641(x: Int) extends Base +case class Dummy642(x: Int) extends Base +case class Dummy643(x: Int) extends Base +case class Dummy644(x: Int) extends Base +case class Dummy645(x: Int) extends Base +case class Dummy646(x: Int) extends Base +case class Dummy647(x: Int) extends Base +case class Dummy648(x: Int) extends Base +case class Dummy649(x: Int) extends Base +case class Dummy650(x: Int) extends Base +case class Dummy651(x: Int) extends Base +case class Dummy652(x: Int) extends Base +case class Dummy653(x: Int) extends Base +case class Dummy654(x: Int) extends Base +case class Dummy655(x: Int) extends Base +case class Dummy656(x: Int) extends Base +case class Dummy657(x: Int) extends Base +case class Dummy658(x: Int) extends Base +case class Dummy659(x: Int) extends Base +case class Dummy660(x: Int) extends Base +case class Dummy661(x: Int) extends Base +case class Dummy662(x: Int) extends Base +case class Dummy663(x: Int) extends Base +case class Dummy664(x: Int) extends Base +case class Dummy665(x: Int) extends Base +case class Dummy666(x: Int) extends Base +case class Dummy667(x: Int) extends Base +case class Dummy668(x: Int) extends Base +case class Dummy669(x: Int) extends Base +case class Dummy670(x: Int) extends Base +case class Dummy671(x: Int) extends Base +case class Dummy672(x: Int) extends Base +case class Dummy673(x: Int) extends Base +case class Dummy674(x: Int) extends Base +case class Dummy675(x: Int) extends Base +case class Dummy676(x: Int) extends Base +case class Dummy677(x: Int) extends Base +case class Dummy678(x: Int) extends Base +case class Dummy679(x: Int) extends Base +case class Dummy680(x: Int) extends Base +case class Dummy681(x: Int) extends Base +case class Dummy682(x: Int) extends Base +case class Dummy683(x: Int) extends Base +case class Dummy684(x: Int) extends Base +case class Dummy685(x: Int) extends Base +case class Dummy686(x: Int) extends Base +case class Dummy687(x: Int) extends Base +case class Dummy688(x: Int) extends Base +case class Dummy689(x: Int) extends Base +case class Dummy690(x: Int) extends Base +case class Dummy691(x: Int) extends Base +case class Dummy692(x: Int) extends Base +case class Dummy693(x: Int) extends Base +case class Dummy694(x: Int) extends Base +case class Dummy695(x: Int) extends Base +case class Dummy696(x: Int) extends Base +case class Dummy697(x: Int) extends Base +case class Dummy698(x: Int) extends Base +case class Dummy699(x: Int) extends Base +case class Dummy700(x: Int) extends Base +case class Dummy701(x: Int) extends Base +case class Dummy702(x: Int) extends Base +case class Dummy703(x: Int) extends Base +case class Dummy704(x: Int) extends Base +case class Dummy705(x: Int) extends Base +case class Dummy706(x: Int) extends Base +case class Dummy707(x: Int) extends Base +case class Dummy708(x: Int) extends Base +case class Dummy709(x: Int) extends Base +case class Dummy710(x: Int) extends Base +case class Dummy711(x: Int) extends Base +case class Dummy712(x: Int) extends Base +case class Dummy713(x: Int) extends Base +case class Dummy714(x: Int) extends Base +case class Dummy715(x: Int) extends Base +case class Dummy716(x: Int) extends Base +case class Dummy717(x: Int) extends Base +case class Dummy718(x: Int) extends Base +case class Dummy719(x: Int) extends Base +case class Dummy720(x: Int) extends Base +case class Dummy721(x: Int) extends Base +case class Dummy722(x: Int) extends Base +case class Dummy723(x: Int) extends Base +case class Dummy724(x: Int) extends Base +case class Dummy725(x: Int) extends Base +case class Dummy726(x: Int) extends Base +case class Dummy727(x: Int) extends Base +case class Dummy728(x: Int) extends Base +case class Dummy729(x: Int) extends Base +case class Dummy730(x: Int) extends Base +case class Dummy731(x: Int) extends Base +case class Dummy732(x: Int) extends Base +case class Dummy733(x: Int) extends Base +case class Dummy734(x: Int) extends Base +case class Dummy735(x: Int) extends Base +case class Dummy736(x: Int) extends Base +case class Dummy737(x: Int) extends Base +case class Dummy738(x: Int) extends Base +case class Dummy739(x: Int) extends Base +case class Dummy740(x: Int) extends Base +case class Dummy741(x: Int) extends Base +case class Dummy742(x: Int) extends Base +case class Dummy743(x: Int) extends Base +case class Dummy744(x: Int) extends Base +case class Dummy745(x: Int) extends Base +case class Dummy746(x: Int) extends Base +case class Dummy747(x: Int) extends Base +case class Dummy748(x: Int) extends Base +case class Dummy749(x: Int) extends Base +case class Dummy750(x: Int) extends Base +case class Dummy751(x: Int) extends Base +case class Dummy752(x: Int) extends Base +case class Dummy753(x: Int) extends Base +case class Dummy754(x: Int) extends Base +case class Dummy755(x: Int) extends Base +case class Dummy756(x: Int) extends Base +case class Dummy757(x: Int) extends Base +case class Dummy758(x: Int) extends Base +case class Dummy759(x: Int) extends Base +case class Dummy760(x: Int) extends Base +case class Dummy761(x: Int) extends Base +case class Dummy762(x: Int) extends Base +case class Dummy763(x: Int) extends Base +case class Dummy764(x: Int) extends Base +case class Dummy765(x: Int) extends Base +case class Dummy766(x: Int) extends Base +case class Dummy767(x: Int) extends Base +case class Dummy768(x: Int) extends Base +case class Dummy769(x: Int) extends Base +case class Dummy770(x: Int) extends Base +case class Dummy771(x: Int) extends Base +case class Dummy772(x: Int) extends Base +case class Dummy773(x: Int) extends Base +case class Dummy774(x: Int) extends Base +case class Dummy775(x: Int) extends Base +case class Dummy776(x: Int) extends Base +case class Dummy777(x: Int) extends Base +case class Dummy778(x: Int) extends Base +case class Dummy779(x: Int) extends Base +case class Dummy780(x: Int) extends Base +case class Dummy781(x: Int) extends Base +case class Dummy782(x: Int) extends Base +case class Dummy783(x: Int) extends Base +case class Dummy784(x: Int) extends Base +case class Dummy785(x: Int) extends Base +case class Dummy786(x: Int) extends Base +case class Dummy787(x: Int) extends Base +case class Dummy788(x: Int) extends Base +case class Dummy789(x: Int) extends Base +case class Dummy790(x: Int) extends Base +case class Dummy791(x: Int) extends Base +case class Dummy792(x: Int) extends Base +case class Dummy793(x: Int) extends Base +case class Dummy794(x: Int) extends Base +case class Dummy795(x: Int) extends Base +case class Dummy796(x: Int) extends Base +case class Dummy797(x: Int) extends Base +case class Dummy798(x: Int) extends Base +case class Dummy799(x: Int) extends Base +case class Dummy800(x: Int) extends Base +case class Dummy801(x: Int) extends Base +case class Dummy802(x: Int) extends Base +case class Dummy803(x: Int) extends Base +case class Dummy804(x: Int) extends Base +case class Dummy805(x: Int) extends Base +case class Dummy806(x: Int) extends Base +case class Dummy807(x: Int) extends Base +case class Dummy808(x: Int) extends Base +case class Dummy809(x: Int) extends Base +case class Dummy810(x: Int) extends Base +case class Dummy811(x: Int) extends Base +case class Dummy812(x: Int) extends Base +case class Dummy813(x: Int) extends Base +case class Dummy814(x: Int) extends Base +case class Dummy815(x: Int) extends Base +case class Dummy816(x: Int) extends Base +case class Dummy817(x: Int) extends Base +case class Dummy818(x: Int) extends Base +case class Dummy819(x: Int) extends Base +case class Dummy820(x: Int) extends Base +case class Dummy821(x: Int) extends Base +case class Dummy822(x: Int) extends Base +case class Dummy823(x: Int) extends Base +case class Dummy824(x: Int) extends Base +case class Dummy825(x: Int) extends Base +case class Dummy826(x: Int) extends Base +case class Dummy827(x: Int) extends Base +case class Dummy828(x: Int) extends Base +case class Dummy829(x: Int) extends Base +case class Dummy830(x: Int) extends Base +case class Dummy831(x: Int) extends Base +case class Dummy832(x: Int) extends Base +case class Dummy833(x: Int) extends Base +case class Dummy834(x: Int) extends Base +case class Dummy835(x: Int) extends Base +case class Dummy836(x: Int) extends Base +case class Dummy837(x: Int) extends Base +case class Dummy838(x: Int) extends Base +case class Dummy839(x: Int) extends Base +case class Dummy840(x: Int) extends Base +case class Dummy841(x: Int) extends Base +case class Dummy842(x: Int) extends Base +case class Dummy843(x: Int) extends Base +case class Dummy844(x: Int) extends Base +case class Dummy845(x: Int) extends Base +case class Dummy846(x: Int) extends Base +case class Dummy847(x: Int) extends Base +case class Dummy848(x: Int) extends Base +case class Dummy849(x: Int) extends Base +case class Dummy850(x: Int) extends Base +case class Dummy851(x: Int) extends Base +case class Dummy852(x: Int) extends Base +case class Dummy853(x: Int) extends Base +case class Dummy854(x: Int) extends Base +case class Dummy855(x: Int) extends Base +case class Dummy856(x: Int) extends Base +case class Dummy857(x: Int) extends Base +case class Dummy858(x: Int) extends Base +case class Dummy859(x: Int) extends Base +case class Dummy860(x: Int) extends Base +case class Dummy861(x: Int) extends Base +case class Dummy862(x: Int) extends Base +case class Dummy863(x: Int) extends Base +case class Dummy864(x: Int) extends Base +case class Dummy865(x: Int) extends Base +case class Dummy866(x: Int) extends Base +case class Dummy867(x: Int) extends Base +case class Dummy868(x: Int) extends Base +case class Dummy869(x: Int) extends Base +case class Dummy870(x: Int) extends Base +case class Dummy871(x: Int) extends Base +case class Dummy872(x: Int) extends Base +case class Dummy873(x: Int) extends Base +case class Dummy874(x: Int) extends Base +case class Dummy875(x: Int) extends Base +case class Dummy876(x: Int) extends Base +case class Dummy877(x: Int) extends Base +case class Dummy878(x: Int) extends Base +case class Dummy879(x: Int) extends Base +case class Dummy880(x: Int) extends Base +case class Dummy881(x: Int) extends Base +case class Dummy882(x: Int) extends Base +case class Dummy883(x: Int) extends Base +case class Dummy884(x: Int) extends Base +case class Dummy885(x: Int) extends Base +case class Dummy886(x: Int) extends Base +case class Dummy887(x: Int) extends Base +case class Dummy888(x: Int) extends Base +case class Dummy889(x: Int) extends Base +case class Dummy890(x: Int) extends Base +case class Dummy891(x: Int) extends Base +case class Dummy892(x: Int) extends Base +case class Dummy893(x: Int) extends Base +case class Dummy894(x: Int) extends Base +case class Dummy895(x: Int) extends Base +case class Dummy896(x: Int) extends Base +case class Dummy897(x: Int) extends Base +case class Dummy898(x: Int) extends Base +case class Dummy899(x: Int) extends Base +case class Dummy900(x: Int) extends Base +case class Dummy901(x: Int) extends Base +case class Dummy902(x: Int) extends Base +case class Dummy903(x: Int) extends Base +case class Dummy904(x: Int) extends Base +case class Dummy905(x: Int) extends Base +case class Dummy906(x: Int) extends Base +case class Dummy907(x: Int) extends Base +case class Dummy908(x: Int) extends Base +case class Dummy909(x: Int) extends Base +case class Dummy910(x: Int) extends Base +case class Dummy911(x: Int) extends Base +case class Dummy912(x: Int) extends Base +case class Dummy913(x: Int) extends Base +case class Dummy914(x: Int) extends Base +case class Dummy915(x: Int) extends Base +case class Dummy916(x: Int) extends Base +case class Dummy917(x: Int) extends Base +case class Dummy918(x: Int) extends Base +case class Dummy919(x: Int) extends Base +case class Dummy920(x: Int) extends Base +case class Dummy921(x: Int) extends Base +case class Dummy922(x: Int) extends Base +case class Dummy923(x: Int) extends Base +case class Dummy924(x: Int) extends Base +case class Dummy925(x: Int) extends Base +case class Dummy926(x: Int) extends Base +case class Dummy927(x: Int) extends Base +case class Dummy928(x: Int) extends Base +case class Dummy929(x: Int) extends Base +case class Dummy930(x: Int) extends Base +case class Dummy931(x: Int) extends Base +case class Dummy932(x: Int) extends Base +case class Dummy933(x: Int) extends Base +case class Dummy934(x: Int) extends Base +case class Dummy935(x: Int) extends Base +case class Dummy936(x: Int) extends Base +case class Dummy937(x: Int) extends Base +case class Dummy938(x: Int) extends Base +case class Dummy939(x: Int) extends Base +case class Dummy940(x: Int) extends Base +case class Dummy941(x: Int) extends Base +case class Dummy942(x: Int) extends Base +case class Dummy943(x: Int) extends Base +case class Dummy944(x: Int) extends Base +case class Dummy945(x: Int) extends Base +case class Dummy946(x: Int) extends Base +case class Dummy947(x: Int) extends Base +case class Dummy948(x: Int) extends Base +case class Dummy949(x: Int) extends Base +case class Dummy950(x: Int) extends Base +case class Dummy951(x: Int) extends Base +case class Dummy952(x: Int) extends Base +case class Dummy953(x: Int) extends Base +case class Dummy954(x: Int) extends Base +case class Dummy955(x: Int) extends Base +case class Dummy956(x: Int) extends Base +case class Dummy957(x: Int) extends Base +case class Dummy958(x: Int) extends Base +case class Dummy959(x: Int) extends Base +case class Dummy960(x: Int) extends Base +case class Dummy961(x: Int) extends Base +case class Dummy962(x: Int) extends Base +case class Dummy963(x: Int) extends Base +case class Dummy964(x: Int) extends Base +case class Dummy965(x: Int) extends Base +case class Dummy966(x: Int) extends Base +case class Dummy967(x: Int) extends Base +case class Dummy968(x: Int) extends Base +case class Dummy969(x: Int) extends Base +case class Dummy970(x: Int) extends Base +case class Dummy971(x: Int) extends Base +case class Dummy972(x: Int) extends Base +case class Dummy973(x: Int) extends Base +case class Dummy974(x: Int) extends Base +case class Dummy975(x: Int) extends Base +case class Dummy976(x: Int) extends Base +case class Dummy977(x: Int) extends Base +case class Dummy978(x: Int) extends Base +case class Dummy979(x: Int) extends Base +case class Dummy980(x: Int) extends Base +case class Dummy981(x: Int) extends Base +case class Dummy982(x: Int) extends Base +case class Dummy983(x: Int) extends Base +case class Dummy984(x: Int) extends Base +case class Dummy985(x: Int) extends Base +case class Dummy986(x: Int) extends Base +case class Dummy987(x: Int) extends Base +case class Dummy988(x: Int) extends Base +case class Dummy989(x: Int) extends Base +case class Dummy990(x: Int) extends Base +case class Dummy991(x: Int) extends Base +case class Dummy992(x: Int) extends Base +case class Dummy993(x: Int) extends Base +case class Dummy994(x: Int) extends Base +case class Dummy995(x: Int) extends Base +case class Dummy996(x: Int) extends Base +case class Dummy997(x: Int) extends Base +case class Dummy998(x: Int) extends Base +case class Dummy999(x: Int) extends Base +case class Dummy1000(x: Int) extends Base +case class Dummy1001(x: Int) extends Base +case class Dummy1002(x: Int) extends Base +case class Dummy1003(x: Int) extends Base +case class Dummy1004(x: Int) extends Base +case class Dummy1005(x: Int) extends Base +case class Dummy1006(x: Int) extends Base +case class Dummy1007(x: Int) extends Base +case class Dummy1008(x: Int) extends Base +case class Dummy1009(x: Int) extends Base +case class Dummy1010(x: Int) extends Base +case class Dummy1011(x: Int) extends Base +case class Dummy1012(x: Int) extends Base +case class Dummy1013(x: Int) extends Base +case class Dummy1014(x: Int) extends Base +case class Dummy1015(x: Int) extends Base +case class Dummy1016(x: Int) extends Base +case class Dummy1017(x: Int) extends Base +case class Dummy1018(x: Int) extends Base +case class Dummy1019(x: Int) extends Base +case class Dummy1020(x: Int) extends Base +case class Dummy1021(x: Int) extends Base +case class Dummy1022(x: Int) extends Base +case class Dummy1023(x: Int) extends Base +case class Dummy1024(x: Int) extends Base +case class Dummy1025(x: Int) extends Base +case class Dummy1026(x: Int) extends Base +case class Dummy1027(x: Int) extends Base +case class Dummy1028(x: Int) extends Base +case class Dummy1029(x: Int) extends Base +case class Dummy1030(x: Int) extends Base +case class Dummy1031(x: Int) extends Base +case class Dummy1032(x: Int) extends Base +case class Dummy1033(x: Int) extends Base +case class Dummy1034(x: Int) extends Base +case class Dummy1035(x: Int) extends Base +case class Dummy1036(x: Int) extends Base +case class Dummy1037(x: Int) extends Base +case class Dummy1038(x: Int) extends Base +case class Dummy1039(x: Int) extends Base +case class Dummy1040(x: Int) extends Base +case class Dummy1041(x: Int) extends Base +case class Dummy1042(x: Int) extends Base +case class Dummy1043(x: Int) extends Base +case class Dummy1044(x: Int) extends Base +case class Dummy1045(x: Int) extends Base +case class Dummy1046(x: Int) extends Base +case class Dummy1047(x: Int) extends Base +case class Dummy1048(x: Int) extends Base +case class Dummy1049(x: Int) extends Base +case class Dummy1050(x: Int) extends Base +case class Dummy1051(x: Int) extends Base +case class Dummy1052(x: Int) extends Base +case class Dummy1053(x: Int) extends Base +case class Dummy1054(x: Int) extends Base +case class Dummy1055(x: Int) extends Base +case class Dummy1056(x: Int) extends Base +case class Dummy1057(x: Int) extends Base +case class Dummy1058(x: Int) extends Base +case class Dummy1059(x: Int) extends Base +case class Dummy1060(x: Int) extends Base +case class Dummy1061(x: Int) extends Base +case class Dummy1062(x: Int) extends Base +case class Dummy1063(x: Int) extends Base +case class Dummy1064(x: Int) extends Base +case class Dummy1065(x: Int) extends Base +case class Dummy1066(x: Int) extends Base +case class Dummy1067(x: Int) extends Base +case class Dummy1068(x: Int) extends Base +case class Dummy1069(x: Int) extends Base +case class Dummy1070(x: Int) extends Base +case class Dummy1071(x: Int) extends Base +case class Dummy1072(x: Int) extends Base +case class Dummy1073(x: Int) extends Base +case class Dummy1074(x: Int) extends Base +case class Dummy1075(x: Int) extends Base +case class Dummy1076(x: Int) extends Base +case class Dummy1077(x: Int) extends Base +case class Dummy1078(x: Int) extends Base +case class Dummy1079(x: Int) extends Base +case class Dummy1080(x: Int) extends Base +case class Dummy1081(x: Int) extends Base +case class Dummy1082(x: Int) extends Base +case class Dummy1083(x: Int) extends Base +case class Dummy1084(x: Int) extends Base +case class Dummy1085(x: Int) extends Base +case class Dummy1086(x: Int) extends Base +case class Dummy1087(x: Int) extends Base +case class Dummy1088(x: Int) extends Base +case class Dummy1089(x: Int) extends Base +case class Dummy1090(x: Int) extends Base +case class Dummy1091(x: Int) extends Base +case class Dummy1092(x: Int) extends Base +case class Dummy1093(x: Int) extends Base +case class Dummy1094(x: Int) extends Base +case class Dummy1095(x: Int) extends Base +case class Dummy1096(x: Int) extends Base +case class Dummy1097(x: Int) extends Base +case class Dummy1098(x: Int) extends Base +case class Dummy1099(x: Int) extends Base +case class Dummy1100(x: Int) extends Base +case class Dummy1101(x: Int) extends Base +case class Dummy1102(x: Int) extends Base +case class Dummy1103(x: Int) extends Base +case class Dummy1104(x: Int) extends Base +case class Dummy1105(x: Int) extends Base +case class Dummy1106(x: Int) extends Base +case class Dummy1107(x: Int) extends Base +case class Dummy1108(x: Int) extends Base +case class Dummy1109(x: Int) extends Base +case class Dummy1110(x: Int) extends Base +case class Dummy1111(x: Int) extends Base +case class Dummy1112(x: Int) extends Base +case class Dummy1113(x: Int) extends Base +case class Dummy1114(x: Int) extends Base +case class Dummy1115(x: Int) extends Base +case class Dummy1116(x: Int) extends Base +case class Dummy1117(x: Int) extends Base +case class Dummy1118(x: Int) extends Base +case class Dummy1119(x: Int) extends Base +case class Dummy1120(x: Int) extends Base +case class Dummy1121(x: Int) extends Base +case class Dummy1122(x: Int) extends Base +case class Dummy1123(x: Int) extends Base +case class Dummy1124(x: Int) extends Base +case class Dummy1125(x: Int) extends Base +case class Dummy1126(x: Int) extends Base +case class Dummy1127(x: Int) extends Base +case class Dummy1128(x: Int) extends Base +case class Dummy1129(x: Int) extends Base +case class Dummy1130(x: Int) extends Base +case class Dummy1131(x: Int) extends Base +case class Dummy1132(x: Int) extends Base +case class Dummy1133(x: Int) extends Base +case class Dummy1134(x: Int) extends Base +case class Dummy1135(x: Int) extends Base +case class Dummy1136(x: Int) extends Base +case class Dummy1137(x: Int) extends Base +case class Dummy1138(x: Int) extends Base +case class Dummy1139(x: Int) extends Base +case class Dummy1140(x: Int) extends Base +case class Dummy1141(x: Int) extends Base +case class Dummy1142(x: Int) extends Base +case class Dummy1143(x: Int) extends Base +case class Dummy1144(x: Int) extends Base +case class Dummy1145(x: Int) extends Base +case class Dummy1146(x: Int) extends Base +case class Dummy1147(x: Int) extends Base +case class Dummy1148(x: Int) extends Base +case class Dummy1149(x: Int) extends Base +case class Dummy1150(x: Int) extends Base +case class Dummy1151(x: Int) extends Base +case class Dummy1152(x: Int) extends Base +case class Dummy1153(x: Int) extends Base +case class Dummy1154(x: Int) extends Base +case class Dummy1155(x: Int) extends Base +case class Dummy1156(x: Int) extends Base +case class Dummy1157(x: Int) extends Base +case class Dummy1158(x: Int) extends Base +case class Dummy1159(x: Int) extends Base +case class Dummy1160(x: Int) extends Base +case class Dummy1161(x: Int) extends Base +case class Dummy1162(x: Int) extends Base +case class Dummy1163(x: Int) extends Base +case class Dummy1164(x: Int) extends Base +case class Dummy1165(x: Int) extends Base +case class Dummy1166(x: Int) extends Base +case class Dummy1167(x: Int) extends Base +case class Dummy1168(x: Int) extends Base +case class Dummy1169(x: Int) extends Base +case class Dummy1170(x: Int) extends Base +case class Dummy1171(x: Int) extends Base +case class Dummy1172(x: Int) extends Base +case class Dummy1173(x: Int) extends Base +case class Dummy1174(x: Int) extends Base +case class Dummy1175(x: Int) extends Base +case class Dummy1176(x: Int) extends Base +case class Dummy1177(x: Int) extends Base +case class Dummy1178(x: Int) extends Base +case class Dummy1179(x: Int) extends Base +case class Dummy1180(x: Int) extends Base +case class Dummy1181(x: Int) extends Base +case class Dummy1182(x: Int) extends Base +case class Dummy1183(x: Int) extends Base +case class Dummy1184(x: Int) extends Base +case class Dummy1185(x: Int) extends Base +case class Dummy1186(x: Int) extends Base +case class Dummy1187(x: Int) extends Base +case class Dummy1188(x: Int) extends Base +case class Dummy1189(x: Int) extends Base +case class Dummy1190(x: Int) extends Base +case class Dummy1191(x: Int) extends Base +case class Dummy1192(x: Int) extends Base +case class Dummy1193(x: Int) extends Base +case class Dummy1194(x: Int) extends Base +case class Dummy1195(x: Int) extends Base +case class Dummy1196(x: Int) extends Base +case class Dummy1197(x: Int) extends Base +case class Dummy1198(x: Int) extends Base +case class Dummy1199(x: Int) extends Base +case class Dummy1200(x: Int) extends Base +case class Dummy1201(x: Int) extends Base +case class Dummy1202(x: Int) extends Base +case class Dummy1203(x: Int) extends Base +case class Dummy1204(x: Int) extends Base +case class Dummy1205(x: Int) extends Base +case class Dummy1206(x: Int) extends Base +case class Dummy1207(x: Int) extends Base +case class Dummy1208(x: Int) extends Base +case class Dummy1209(x: Int) extends Base +case class Dummy1210(x: Int) extends Base +case class Dummy1211(x: Int) extends Base +case class Dummy1212(x: Int) extends Base +case class Dummy1213(x: Int) extends Base +case class Dummy1214(x: Int) extends Base +case class Dummy1215(x: Int) extends Base +case class Dummy1216(x: Int) extends Base +case class Dummy1217(x: Int) extends Base +case class Dummy1218(x: Int) extends Base +case class Dummy1219(x: Int) extends Base +case class Dummy1220(x: Int) extends Base +case class Dummy1221(x: Int) extends Base +case class Dummy1222(x: Int) extends Base +case class Dummy1223(x: Int) extends Base +case class Dummy1224(x: Int) extends Base +case class Dummy1225(x: Int) extends Base +case class Dummy1226(x: Int) extends Base +case class Dummy1227(x: Int) extends Base +case class Dummy1228(x: Int) extends Base +case class Dummy1229(x: Int) extends Base +case class Dummy1230(x: Int) extends Base +case class Dummy1231(x: Int) extends Base +case class Dummy1232(x: Int) extends Base +case class Dummy1233(x: Int) extends Base +case class Dummy1234(x: Int) extends Base +case class Dummy1235(x: Int) extends Base +case class Dummy1236(x: Int) extends Base +case class Dummy1237(x: Int) extends Base +case class Dummy1238(x: Int) extends Base +case class Dummy1239(x: Int) extends Base +case class Dummy1240(x: Int) extends Base +case class Dummy1241(x: Int) extends Base +case class Dummy1242(x: Int) extends Base +case class Dummy1243(x: Int) extends Base +case class Dummy1244(x: Int) extends Base +case class Dummy1245(x: Int) extends Base +case class Dummy1246(x: Int) extends Base +case class Dummy1247(x: Int) extends Base +case class Dummy1248(x: Int) extends Base +case class Dummy1249(x: Int) extends Base +case class Dummy1250(x: Int) extends Base +case class Dummy1251(x: Int) extends Base +case class Dummy1252(x: Int) extends Base +case class Dummy1253(x: Int) extends Base +case class Dummy1254(x: Int) extends Base +case class Dummy1255(x: Int) extends Base +case class Dummy1256(x: Int) extends Base +case class Dummy1257(x: Int) extends Base +case class Dummy1258(x: Int) extends Base +case class Dummy1259(x: Int) extends Base +case class Dummy1260(x: Int) extends Base +case class Dummy1261(x: Int) extends Base +case class Dummy1262(x: Int) extends Base +case class Dummy1263(x: Int) extends Base +case class Dummy1264(x: Int) extends Base +case class Dummy1265(x: Int) extends Base +case class Dummy1266(x: Int) extends Base +case class Dummy1267(x: Int) extends Base +case class Dummy1268(x: Int) extends Base +case class Dummy1269(x: Int) extends Base +case class Dummy1270(x: Int) extends Base +case class Dummy1271(x: Int) extends Base +case class Dummy1272(x: Int) extends Base +case class Dummy1273(x: Int) extends Base +case class Dummy1274(x: Int) extends Base +case class Dummy1275(x: Int) extends Base +case class Dummy1276(x: Int) extends Base +case class Dummy1277(x: Int) extends Base +case class Dummy1278(x: Int) extends Base +case class Dummy1279(x: Int) extends Base +case class Dummy1280(x: Int) extends Base +case class Dummy1281(x: Int) extends Base +case class Dummy1282(x: Int) extends Base +case class Dummy1283(x: Int) extends Base +case class Dummy1284(x: Int) extends Base +case class Dummy1285(x: Int) extends Base +case class Dummy1286(x: Int) extends Base +case class Dummy1287(x: Int) extends Base +case class Dummy1288(x: Int) extends Base +case class Dummy1289(x: Int) extends Base +case class Dummy1290(x: Int) extends Base +case class Dummy1291(x: Int) extends Base +case class Dummy1292(x: Int) extends Base +case class Dummy1293(x: Int) extends Base +case class Dummy1294(x: Int) extends Base +case class Dummy1295(x: Int) extends Base +case class Dummy1296(x: Int) extends Base +case class Dummy1297(x: Int) extends Base +case class Dummy1298(x: Int) extends Base +case class Dummy1299(x: Int) extends Base +case class Dummy1300(x: Int) extends Base +case class Dummy1301(x: Int) extends Base +case class Dummy1302(x: Int) extends Base +case class Dummy1303(x: Int) extends Base +case class Dummy1304(x: Int) extends Base +case class Dummy1305(x: Int) extends Base +case class Dummy1306(x: Int) extends Base +case class Dummy1307(x: Int) extends Base +case class Dummy1308(x: Int) extends Base +case class Dummy1309(x: Int) extends Base +case class Dummy1310(x: Int) extends Base +case class Dummy1311(x: Int) extends Base +case class Dummy1312(x: Int) extends Base +case class Dummy1313(x: Int) extends Base +case class Dummy1314(x: Int) extends Base +case class Dummy1315(x: Int) extends Base +case class Dummy1316(x: Int) extends Base +case class Dummy1317(x: Int) extends Base +case class Dummy1318(x: Int) extends Base +case class Dummy1319(x: Int) extends Base +case class Dummy1320(x: Int) extends Base +case class Dummy1321(x: Int) extends Base +case class Dummy1322(x: Int) extends Base +case class Dummy1323(x: Int) extends Base +case class Dummy1324(x: Int) extends Base +case class Dummy1325(x: Int) extends Base +case class Dummy1326(x: Int) extends Base +case class Dummy1327(x: Int) extends Base +case class Dummy1328(x: Int) extends Base +case class Dummy1329(x: Int) extends Base +case class Dummy1330(x: Int) extends Base +case class Dummy1331(x: Int) extends Base +case class Dummy1332(x: Int) extends Base +case class Dummy1333(x: Int) extends Base +case class Dummy1334(x: Int) extends Base +case class Dummy1335(x: Int) extends Base +case class Dummy1336(x: Int) extends Base +case class Dummy1337(x: Int) extends Base +case class Dummy1338(x: Int) extends Base +case class Dummy1339(x: Int) extends Base +case class Dummy1340(x: Int) extends Base +case class Dummy1341(x: Int) extends Base +case class Dummy1342(x: Int) extends Base +case class Dummy1343(x: Int) extends Base +case class Dummy1344(x: Int) extends Base +case class Dummy1345(x: Int) extends Base +case class Dummy1346(x: Int) extends Base +case class Dummy1347(x: Int) extends Base +case class Dummy1348(x: Int) extends Base +case class Dummy1349(x: Int) extends Base +case class Dummy1350(x: Int) extends Base +case class Dummy1351(x: Int) extends Base +case class Dummy1352(x: Int) extends Base +case class Dummy1353(x: Int) extends Base +case class Dummy1354(x: Int) extends Base +case class Dummy1355(x: Int) extends Base +case class Dummy1356(x: Int) extends Base +case class Dummy1357(x: Int) extends Base +case class Dummy1358(x: Int) extends Base +case class Dummy1359(x: Int) extends Base +case class Dummy1360(x: Int) extends Base +case class Dummy1361(x: Int) extends Base +case class Dummy1362(x: Int) extends Base +case class Dummy1363(x: Int) extends Base +case class Dummy1364(x: Int) extends Base +case class Dummy1365(x: Int) extends Base +case class Dummy1366(x: Int) extends Base +case class Dummy1367(x: Int) extends Base +case class Dummy1368(x: Int) extends Base +case class Dummy1369(x: Int) extends Base +case class Dummy1370(x: Int) extends Base +case class Dummy1371(x: Int) extends Base +case class Dummy1372(x: Int) extends Base +case class Dummy1373(x: Int) extends Base +case class Dummy1374(x: Int) extends Base +case class Dummy1375(x: Int) extends Base +case class Dummy1376(x: Int) extends Base +case class Dummy1377(x: Int) extends Base +case class Dummy1378(x: Int) extends Base +case class Dummy1379(x: Int) extends Base +case class Dummy1380(x: Int) extends Base +case class Dummy1381(x: Int) extends Base +case class Dummy1382(x: Int) extends Base +case class Dummy1383(x: Int) extends Base +case class Dummy1384(x: Int) extends Base +case class Dummy1385(x: Int) extends Base +case class Dummy1386(x: Int) extends Base +case class Dummy1387(x: Int) extends Base +case class Dummy1388(x: Int) extends Base +case class Dummy1389(x: Int) extends Base +case class Dummy1390(x: Int) extends Base +case class Dummy1391(x: Int) extends Base +case class Dummy1392(x: Int) extends Base +case class Dummy1393(x: Int) extends Base +case class Dummy1394(x: Int) extends Base +case class Dummy1395(x: Int) extends Base +case class Dummy1396(x: Int) extends Base +case class Dummy1397(x: Int) extends Base +case class Dummy1398(x: Int) extends Base +case class Dummy1399(x: Int) extends Base +case class Dummy1400(x: Int) extends Base +case class Dummy1401(x: Int) extends Base +case class Dummy1402(x: Int) extends Base +case class Dummy1403(x: Int) extends Base +case class Dummy1404(x: Int) extends Base +case class Dummy1405(x: Int) extends Base +case class Dummy1406(x: Int) extends Base +case class Dummy1407(x: Int) extends Base +case class Dummy1408(x: Int) extends Base +case class Dummy1409(x: Int) extends Base +case class Dummy1410(x: Int) extends Base +case class Dummy1411(x: Int) extends Base +case class Dummy1412(x: Int) extends Base +case class Dummy1413(x: Int) extends Base +case class Dummy1414(x: Int) extends Base +case class Dummy1415(x: Int) extends Base +case class Dummy1416(x: Int) extends Base +case class Dummy1417(x: Int) extends Base +case class Dummy1418(x: Int) extends Base +case class Dummy1419(x: Int) extends Base +case class Dummy1420(x: Int) extends Base +case class Dummy1421(x: Int) extends Base +case class Dummy1422(x: Int) extends Base +case class Dummy1423(x: Int) extends Base +case class Dummy1424(x: Int) extends Base +case class Dummy1425(x: Int) extends Base +case class Dummy1426(x: Int) extends Base +case class Dummy1427(x: Int) extends Base +case class Dummy1428(x: Int) extends Base +case class Dummy1429(x: Int) extends Base +case class Dummy1430(x: Int) extends Base +case class Dummy1431(x: Int) extends Base +case class Dummy1432(x: Int) extends Base +case class Dummy1433(x: Int) extends Base +case class Dummy1434(x: Int) extends Base +case class Dummy1435(x: Int) extends Base +case class Dummy1436(x: Int) extends Base +case class Dummy1437(x: Int) extends Base +case class Dummy1438(x: Int) extends Base +case class Dummy1439(x: Int) extends Base +case class Dummy1440(x: Int) extends Base +case class Dummy1441(x: Int) extends Base +case class Dummy1442(x: Int) extends Base +case class Dummy1443(x: Int) extends Base +case class Dummy1444(x: Int) extends Base +case class Dummy1445(x: Int) extends Base +case class Dummy1446(x: Int) extends Base +case class Dummy1447(x: Int) extends Base +case class Dummy1448(x: Int) extends Base +case class Dummy1449(x: Int) extends Base +case class Dummy1450(x: Int) extends Base +case class Dummy1451(x: Int) extends Base +case class Dummy1452(x: Int) extends Base +case class Dummy1453(x: Int) extends Base +case class Dummy1454(x: Int) extends Base +case class Dummy1455(x: Int) extends Base +case class Dummy1456(x: Int) extends Base +case class Dummy1457(x: Int) extends Base +case class Dummy1458(x: Int) extends Base +case class Dummy1459(x: Int) extends Base +case class Dummy1460(x: Int) extends Base +case class Dummy1461(x: Int) extends Base +case class Dummy1462(x: Int) extends Base +case class Dummy1463(x: Int) extends Base +case class Dummy1464(x: Int) extends Base +case class Dummy1465(x: Int) extends Base +case class Dummy1466(x: Int) extends Base +case class Dummy1467(x: Int) extends Base +case class Dummy1468(x: Int) extends Base +case class Dummy1469(x: Int) extends Base +case class Dummy1470(x: Int) extends Base +case class Dummy1471(x: Int) extends Base +case class Dummy1472(x: Int) extends Base +case class Dummy1473(x: Int) extends Base +case class Dummy1474(x: Int) extends Base +case class Dummy1475(x: Int) extends Base +case class Dummy1476(x: Int) extends Base +case class Dummy1477(x: Int) extends Base +case class Dummy1478(x: Int) extends Base +case class Dummy1479(x: Int) extends Base +case class Dummy1480(x: Int) extends Base +case class Dummy1481(x: Int) extends Base +case class Dummy1482(x: Int) extends Base +case class Dummy1483(x: Int) extends Base +case class Dummy1484(x: Int) extends Base +case class Dummy1485(x: Int) extends Base +case class Dummy1486(x: Int) extends Base +case class Dummy1487(x: Int) extends Base +case class Dummy1488(x: Int) extends Base +case class Dummy1489(x: Int) extends Base +case class Dummy1490(x: Int) extends Base +case class Dummy1491(x: Int) extends Base +case class Dummy1492(x: Int) extends Base +case class Dummy1493(x: Int) extends Base +case class Dummy1494(x: Int) extends Base +case class Dummy1495(x: Int) extends Base +case class Dummy1496(x: Int) extends Base +case class Dummy1497(x: Int) extends Base +case class Dummy1498(x: Int) extends Base +case class Dummy1499(x: Int) extends Base +case class Dummy1500(x: Int) extends Base +case class Dummy1501(x: Int) extends Base +case class Dummy1502(x: Int) extends Base +case class Dummy1503(x: Int) extends Base +case class Dummy1504(x: Int) extends Base +case class Dummy1505(x: Int) extends Base +case class Dummy1506(x: Int) extends Base +case class Dummy1507(x: Int) extends Base +case class Dummy1508(x: Int) extends Base +case class Dummy1509(x: Int) extends Base +case class Dummy1510(x: Int) extends Base +case class Dummy1511(x: Int) extends Base +case class Dummy1512(x: Int) extends Base +case class Dummy1513(x: Int) extends Base +case class Dummy1514(x: Int) extends Base +case class Dummy1515(x: Int) extends Base +case class Dummy1516(x: Int) extends Base +case class Dummy1517(x: Int) extends Base +case class Dummy1518(x: Int) extends Base +case class Dummy1519(x: Int) extends Base +case class Dummy1520(x: Int) extends Base +case class Dummy1521(x: Int) extends Base +case class Dummy1522(x: Int) extends Base +case class Dummy1523(x: Int) extends Base +case class Dummy1524(x: Int) extends Base +case class Dummy1525(x: Int) extends Base +case class Dummy1526(x: Int) extends Base +case class Dummy1527(x: Int) extends Base +case class Dummy1528(x: Int) extends Base +case class Dummy1529(x: Int) extends Base +case class Dummy1530(x: Int) extends Base +case class Dummy1531(x: Int) extends Base +case class Dummy1532(x: Int) extends Base +case class Dummy1533(x: Int) extends Base +case class Dummy1534(x: Int) extends Base +case class Dummy1535(x: Int) extends Base +case class Dummy1536(x: Int) extends Base +case class Dummy1537(x: Int) extends Base +case class Dummy1538(x: Int) extends Base +case class Dummy1539(x: Int) extends Base +case class Dummy1540(x: Int) extends Base +case class Dummy1541(x: Int) extends Base +case class Dummy1542(x: Int) extends Base +case class Dummy1543(x: Int) extends Base +case class Dummy1544(x: Int) extends Base +case class Dummy1545(x: Int) extends Base +case class Dummy1546(x: Int) extends Base +case class Dummy1547(x: Int) extends Base +case class Dummy1548(x: Int) extends Base +case class Dummy1549(x: Int) extends Base +case class Dummy1550(x: Int) extends Base +case class Dummy1551(x: Int) extends Base +case class Dummy1552(x: Int) extends Base +case class Dummy1553(x: Int) extends Base +case class Dummy1554(x: Int) extends Base +case class Dummy1555(x: Int) extends Base +case class Dummy1556(x: Int) extends Base +case class Dummy1557(x: Int) extends Base +case class Dummy1558(x: Int) extends Base +case class Dummy1559(x: Int) extends Base +case class Dummy1560(x: Int) extends Base +case class Dummy1561(x: Int) extends Base +case class Dummy1562(x: Int) extends Base +case class Dummy1563(x: Int) extends Base +case class Dummy1564(x: Int) extends Base +case class Dummy1565(x: Int) extends Base +case class Dummy1566(x: Int) extends Base +case class Dummy1567(x: Int) extends Base +case class Dummy1568(x: Int) extends Base +case class Dummy1569(x: Int) extends Base +case class Dummy1570(x: Int) extends Base +case class Dummy1571(x: Int) extends Base +case class Dummy1572(x: Int) extends Base +case class Dummy1573(x: Int) extends Base +case class Dummy1574(x: Int) extends Base +case class Dummy1575(x: Int) extends Base +case class Dummy1576(x: Int) extends Base +case class Dummy1577(x: Int) extends Base +case class Dummy1578(x: Int) extends Base +case class Dummy1579(x: Int) extends Base +case class Dummy1580(x: Int) extends Base +case class Dummy1581(x: Int) extends Base +case class Dummy1582(x: Int) extends Base +case class Dummy1583(x: Int) extends Base +case class Dummy1584(x: Int) extends Base +case class Dummy1585(x: Int) extends Base +case class Dummy1586(x: Int) extends Base +case class Dummy1587(x: Int) extends Base +case class Dummy1588(x: Int) extends Base +case class Dummy1589(x: Int) extends Base +case class Dummy1590(x: Int) extends Base +case class Dummy1591(x: Int) extends Base +case class Dummy1592(x: Int) extends Base +case class Dummy1593(x: Int) extends Base +case class Dummy1594(x: Int) extends Base +case class Dummy1595(x: Int) extends Base +case class Dummy1596(x: Int) extends Base +case class Dummy1597(x: Int) extends Base +case class Dummy1598(x: Int) extends Base +case class Dummy1599(x: Int) extends Base +case class Dummy1600(x: Int) extends Base +case class Dummy1601(x: Int) extends Base +case class Dummy1602(x: Int) extends Base +case class Dummy1603(x: Int) extends Base +case class Dummy1604(x: Int) extends Base +case class Dummy1605(x: Int) extends Base +case class Dummy1606(x: Int) extends Base +case class Dummy1607(x: Int) extends Base +case class Dummy1608(x: Int) extends Base +case class Dummy1609(x: Int) extends Base +case class Dummy1610(x: Int) extends Base +case class Dummy1611(x: Int) extends Base +case class Dummy1612(x: Int) extends Base +case class Dummy1613(x: Int) extends Base +case class Dummy1614(x: Int) extends Base +case class Dummy1615(x: Int) extends Base +case class Dummy1616(x: Int) extends Base +case class Dummy1617(x: Int) extends Base +case class Dummy1618(x: Int) extends Base +case class Dummy1619(x: Int) extends Base +case class Dummy1620(x: Int) extends Base +case class Dummy1621(x: Int) extends Base +case class Dummy1622(x: Int) extends Base +case class Dummy1623(x: Int) extends Base +case class Dummy1624(x: Int) extends Base +case class Dummy1625(x: Int) extends Base +case class Dummy1626(x: Int) extends Base +case class Dummy1627(x: Int) extends Base +case class Dummy1628(x: Int) extends Base +case class Dummy1629(x: Int) extends Base +case class Dummy1630(x: Int) extends Base +case class Dummy1631(x: Int) extends Base +case class Dummy1632(x: Int) extends Base +case class Dummy1633(x: Int) extends Base +case class Dummy1634(x: Int) extends Base +case class Dummy1635(x: Int) extends Base +case class Dummy1636(x: Int) extends Base +case class Dummy1637(x: Int) extends Base +case class Dummy1638(x: Int) extends Base +case class Dummy1639(x: Int) extends Base +case class Dummy1640(x: Int) extends Base +case class Dummy1641(x: Int) extends Base +case class Dummy1642(x: Int) extends Base +case class Dummy1643(x: Int) extends Base +case class Dummy1644(x: Int) extends Base +case class Dummy1645(x: Int) extends Base +case class Dummy1646(x: Int) extends Base +case class Dummy1647(x: Int) extends Base +case class Dummy1648(x: Int) extends Base +case class Dummy1649(x: Int) extends Base +case class Dummy1650(x: Int) extends Base +case class Dummy1651(x: Int) extends Base +case class Dummy1652(x: Int) extends Base +case class Dummy1653(x: Int) extends Base +case class Dummy1654(x: Int) extends Base +case class Dummy1655(x: Int) extends Base +case class Dummy1656(x: Int) extends Base +case class Dummy1657(x: Int) extends Base +case class Dummy1658(x: Int) extends Base +case class Dummy1659(x: Int) extends Base +case class Dummy1660(x: Int) extends Base +case class Dummy1661(x: Int) extends Base +case class Dummy1662(x: Int) extends Base +case class Dummy1663(x: Int) extends Base +case class Dummy1664(x: Int) extends Base +case class Dummy1665(x: Int) extends Base +case class Dummy1666(x: Int) extends Base +case class Dummy1667(x: Int) extends Base +case class Dummy1668(x: Int) extends Base +case class Dummy1669(x: Int) extends Base +case class Dummy1670(x: Int) extends Base +case class Dummy1671(x: Int) extends Base +case class Dummy1672(x: Int) extends Base +case class Dummy1673(x: Int) extends Base +case class Dummy1674(x: Int) extends Base +case class Dummy1675(x: Int) extends Base +case class Dummy1676(x: Int) extends Base +case class Dummy1677(x: Int) extends Base +case class Dummy1678(x: Int) extends Base +case class Dummy1679(x: Int) extends Base +case class Dummy1680(x: Int) extends Base +case class Dummy1681(x: Int) extends Base +case class Dummy1682(x: Int) extends Base +case class Dummy1683(x: Int) extends Base +case class Dummy1684(x: Int) extends Base +case class Dummy1685(x: Int) extends Base +case class Dummy1686(x: Int) extends Base +case class Dummy1687(x: Int) extends Base +case class Dummy1688(x: Int) extends Base +case class Dummy1689(x: Int) extends Base +case class Dummy1690(x: Int) extends Base +case class Dummy1691(x: Int) extends Base +case class Dummy1692(x: Int) extends Base +case class Dummy1693(x: Int) extends Base +case class Dummy1694(x: Int) extends Base +case class Dummy1695(x: Int) extends Base +case class Dummy1696(x: Int) extends Base +case class Dummy1697(x: Int) extends Base +case class Dummy1698(x: Int) extends Base +case class Dummy1699(x: Int) extends Base +case class Dummy1700(x: Int) extends Base +case class Dummy1701(x: Int) extends Base +case class Dummy1702(x: Int) extends Base +case class Dummy1703(x: Int) extends Base +case class Dummy1704(x: Int) extends Base +case class Dummy1705(x: Int) extends Base +case class Dummy1706(x: Int) extends Base +case class Dummy1707(x: Int) extends Base +case class Dummy1708(x: Int) extends Base +case class Dummy1709(x: Int) extends Base +case class Dummy1710(x: Int) extends Base +case class Dummy1711(x: Int) extends Base +case class Dummy1712(x: Int) extends Base +case class Dummy1713(x: Int) extends Base +case class Dummy1714(x: Int) extends Base +case class Dummy1715(x: Int) extends Base +case class Dummy1716(x: Int) extends Base +case class Dummy1717(x: Int) extends Base +case class Dummy1718(x: Int) extends Base +case class Dummy1719(x: Int) extends Base +case class Dummy1720(x: Int) extends Base +case class Dummy1721(x: Int) extends Base +case class Dummy1722(x: Int) extends Base +case class Dummy1723(x: Int) extends Base +case class Dummy1724(x: Int) extends Base +case class Dummy1725(x: Int) extends Base +case class Dummy1726(x: Int) extends Base +case class Dummy1727(x: Int) extends Base +case class Dummy1728(x: Int) extends Base +case class Dummy1729(x: Int) extends Base +case class Dummy1730(x: Int) extends Base +case class Dummy1731(x: Int) extends Base +case class Dummy1732(x: Int) extends Base +case class Dummy1733(x: Int) extends Base +case class Dummy1734(x: Int) extends Base +case class Dummy1735(x: Int) extends Base +case class Dummy1736(x: Int) extends Base +case class Dummy1737(x: Int) extends Base +case class Dummy1738(x: Int) extends Base +case class Dummy1739(x: Int) extends Base +case class Dummy1740(x: Int) extends Base +case class Dummy1741(x: Int) extends Base +case class Dummy1742(x: Int) extends Base +case class Dummy1743(x: Int) extends Base +case class Dummy1744(x: Int) extends Base +case class Dummy1745(x: Int) extends Base +case class Dummy1746(x: Int) extends Base +case class Dummy1747(x: Int) extends Base +case class Dummy1748(x: Int) extends Base +case class Dummy1749(x: Int) extends Base +case class Dummy1750(x: Int) extends Base +case class Dummy1751(x: Int) extends Base +case class Dummy1752(x: Int) extends Base +case class Dummy1753(x: Int) extends Base +case class Dummy1754(x: Int) extends Base +case class Dummy1755(x: Int) extends Base +case class Dummy1756(x: Int) extends Base +case class Dummy1757(x: Int) extends Base +case class Dummy1758(x: Int) extends Base +case class Dummy1759(x: Int) extends Base +case class Dummy1760(x: Int) extends Base +case class Dummy1761(x: Int) extends Base +case class Dummy1762(x: Int) extends Base +case class Dummy1763(x: Int) extends Base +case class Dummy1764(x: Int) extends Base +case class Dummy1765(x: Int) extends Base +case class Dummy1766(x: Int) extends Base +case class Dummy1767(x: Int) extends Base +case class Dummy1768(x: Int) extends Base +case class Dummy1769(x: Int) extends Base +case class Dummy1770(x: Int) extends Base +case class Dummy1771(x: Int) extends Base +case class Dummy1772(x: Int) extends Base +case class Dummy1773(x: Int) extends Base +case class Dummy1774(x: Int) extends Base +case class Dummy1775(x: Int) extends Base +case class Dummy1776(x: Int) extends Base +case class Dummy1777(x: Int) extends Base +case class Dummy1778(x: Int) extends Base +case class Dummy1779(x: Int) extends Base +case class Dummy1780(x: Int) extends Base +case class Dummy1781(x: Int) extends Base +case class Dummy1782(x: Int) extends Base +case class Dummy1783(x: Int) extends Base +case class Dummy1784(x: Int) extends Base +case class Dummy1785(x: Int) extends Base +case class Dummy1786(x: Int) extends Base +case class Dummy1787(x: Int) extends Base +case class Dummy1788(x: Int) extends Base +case class Dummy1789(x: Int) extends Base +case class Dummy1790(x: Int) extends Base +case class Dummy1791(x: Int) extends Base +case class Dummy1792(x: Int) extends Base +case class Dummy1793(x: Int) extends Base +case class Dummy1794(x: Int) extends Base +case class Dummy1795(x: Int) extends Base +case class Dummy1796(x: Int) extends Base +case class Dummy1797(x: Int) extends Base +case class Dummy1798(x: Int) extends Base +case class Dummy1799(x: Int) extends Base +case class Dummy1800(x: Int) extends Base +case class Dummy1801(x: Int) extends Base +case class Dummy1802(x: Int) extends Base +case class Dummy1803(x: Int) extends Base +case class Dummy1804(x: Int) extends Base +case class Dummy1805(x: Int) extends Base +case class Dummy1806(x: Int) extends Base +case class Dummy1807(x: Int) extends Base +case class Dummy1808(x: Int) extends Base +case class Dummy1809(x: Int) extends Base +case class Dummy1810(x: Int) extends Base +case class Dummy1811(x: Int) extends Base +case class Dummy1812(x: Int) extends Base +case class Dummy1813(x: Int) extends Base +case class Dummy1814(x: Int) extends Base +case class Dummy1815(x: Int) extends Base +case class Dummy1816(x: Int) extends Base +case class Dummy1817(x: Int) extends Base +case class Dummy1818(x: Int) extends Base +case class Dummy1819(x: Int) extends Base +case class Dummy1820(x: Int) extends Base +case class Dummy1821(x: Int) extends Base +case class Dummy1822(x: Int) extends Base +case class Dummy1823(x: Int) extends Base +case class Dummy1824(x: Int) extends Base +case class Dummy1825(x: Int) extends Base +case class Dummy1826(x: Int) extends Base +case class Dummy1827(x: Int) extends Base +case class Dummy1828(x: Int) extends Base +case class Dummy1829(x: Int) extends Base +case class Dummy1830(x: Int) extends Base +case class Dummy1831(x: Int) extends Base +case class Dummy1832(x: Int) extends Base +case class Dummy1833(x: Int) extends Base +case class Dummy1834(x: Int) extends Base +case class Dummy1835(x: Int) extends Base +case class Dummy1836(x: Int) extends Base +case class Dummy1837(x: Int) extends Base +case class Dummy1838(x: Int) extends Base +case class Dummy1839(x: Int) extends Base +case class Dummy1840(x: Int) extends Base +case class Dummy1841(x: Int) extends Base +case class Dummy1842(x: Int) extends Base +case class Dummy1843(x: Int) extends Base +case class Dummy1844(x: Int) extends Base +case class Dummy1845(x: Int) extends Base +case class Dummy1846(x: Int) extends Base +case class Dummy1847(x: Int) extends Base +case class Dummy1848(x: Int) extends Base +case class Dummy1849(x: Int) extends Base +case class Dummy1850(x: Int) extends Base +case class Dummy1851(x: Int) extends Base +case class Dummy1852(x: Int) extends Base +case class Dummy1853(x: Int) extends Base +case class Dummy1854(x: Int) extends Base +case class Dummy1855(x: Int) extends Base +case class Dummy1856(x: Int) extends Base +case class Dummy1857(x: Int) extends Base +case class Dummy1858(x: Int) extends Base +case class Dummy1859(x: Int) extends Base +case class Dummy1860(x: Int) extends Base +case class Dummy1861(x: Int) extends Base +case class Dummy1862(x: Int) extends Base +case class Dummy1863(x: Int) extends Base +case class Dummy1864(x: Int) extends Base +case class Dummy1865(x: Int) extends Base +case class Dummy1866(x: Int) extends Base +case class Dummy1867(x: Int) extends Base +case class Dummy1868(x: Int) extends Base +case class Dummy1869(x: Int) extends Base +case class Dummy1870(x: Int) extends Base +case class Dummy1871(x: Int) extends Base +case class Dummy1872(x: Int) extends Base +case class Dummy1873(x: Int) extends Base +case class Dummy1874(x: Int) extends Base +case class Dummy1875(x: Int) extends Base +case class Dummy1876(x: Int) extends Base +case class Dummy1877(x: Int) extends Base +case class Dummy1878(x: Int) extends Base +case class Dummy1879(x: Int) extends Base +case class Dummy1880(x: Int) extends Base +case class Dummy1881(x: Int) extends Base +case class Dummy1882(x: Int) extends Base +case class Dummy1883(x: Int) extends Base +case class Dummy1884(x: Int) extends Base +case class Dummy1885(x: Int) extends Base +case class Dummy1886(x: Int) extends Base +case class Dummy1887(x: Int) extends Base +case class Dummy1888(x: Int) extends Base +case class Dummy1889(x: Int) extends Base +case class Dummy1890(x: Int) extends Base +case class Dummy1891(x: Int) extends Base +case class Dummy1892(x: Int) extends Base +case class Dummy1893(x: Int) extends Base +case class Dummy1894(x: Int) extends Base +case class Dummy1895(x: Int) extends Base +case class Dummy1896(x: Int) extends Base +case class Dummy1897(x: Int) extends Base +case class Dummy1898(x: Int) extends Base +case class Dummy1899(x: Int) extends Base +case class Dummy1900(x: Int) extends Base +case class Dummy1901(x: Int) extends Base +case class Dummy1902(x: Int) extends Base +case class Dummy1903(x: Int) extends Base +case class Dummy1904(x: Int) extends Base +case class Dummy1905(x: Int) extends Base +case class Dummy1906(x: Int) extends Base +case class Dummy1907(x: Int) extends Base +case class Dummy1908(x: Int) extends Base +case class Dummy1909(x: Int) extends Base +case class Dummy1910(x: Int) extends Base +case class Dummy1911(x: Int) extends Base +case class Dummy1912(x: Int) extends Base +case class Dummy1913(x: Int) extends Base +case class Dummy1914(x: Int) extends Base +case class Dummy1915(x: Int) extends Base +case class Dummy1916(x: Int) extends Base +case class Dummy1917(x: Int) extends Base +case class Dummy1918(x: Int) extends Base +case class Dummy1919(x: Int) extends Base +case class Dummy1920(x: Int) extends Base +case class Dummy1921(x: Int) extends Base +case class Dummy1922(x: Int) extends Base +case class Dummy1923(x: Int) extends Base +case class Dummy1924(x: Int) extends Base +case class Dummy1925(x: Int) extends Base +case class Dummy1926(x: Int) extends Base +case class Dummy1927(x: Int) extends Base +case class Dummy1928(x: Int) extends Base +case class Dummy1929(x: Int) extends Base +case class Dummy1930(x: Int) extends Base +case class Dummy1931(x: Int) extends Base +case class Dummy1932(x: Int) extends Base +case class Dummy1933(x: Int) extends Base +case class Dummy1934(x: Int) extends Base +case class Dummy1935(x: Int) extends Base +case class Dummy1936(x: Int) extends Base +case class Dummy1937(x: Int) extends Base +case class Dummy1938(x: Int) extends Base +case class Dummy1939(x: Int) extends Base +case class Dummy1940(x: Int) extends Base +case class Dummy1941(x: Int) extends Base +case class Dummy1942(x: Int) extends Base +case class Dummy1943(x: Int) extends Base +case class Dummy1944(x: Int) extends Base +case class Dummy1945(x: Int) extends Base +case class Dummy1946(x: Int) extends Base +case class Dummy1947(x: Int) extends Base +case class Dummy1948(x: Int) extends Base +case class Dummy1949(x: Int) extends Base +case class Dummy1950(x: Int) extends Base +case class Dummy1951(x: Int) extends Base +case class Dummy1952(x: Int) extends Base +case class Dummy1953(x: Int) extends Base +case class Dummy1954(x: Int) extends Base +case class Dummy1955(x: Int) extends Base +case class Dummy1956(x: Int) extends Base +case class Dummy1957(x: Int) extends Base +case class Dummy1958(x: Int) extends Base +case class Dummy1959(x: Int) extends Base +case class Dummy1960(x: Int) extends Base +case class Dummy1961(x: Int) extends Base +case class Dummy1962(x: Int) extends Base +case class Dummy1963(x: Int) extends Base +case class Dummy1964(x: Int) extends Base +case class Dummy1965(x: Int) extends Base +case class Dummy1966(x: Int) extends Base +case class Dummy1967(x: Int) extends Base +case class Dummy1968(x: Int) extends Base +case class Dummy1969(x: Int) extends Base +case class Dummy1970(x: Int) extends Base +case class Dummy1971(x: Int) extends Base +case class Dummy1972(x: Int) extends Base +case class Dummy1973(x: Int) extends Base +case class Dummy1974(x: Int) extends Base +case class Dummy1975(x: Int) extends Base +case class Dummy1976(x: Int) extends Base +case class Dummy1977(x: Int) extends Base +case class Dummy1978(x: Int) extends Base +case class Dummy1979(x: Int) extends Base +case class Dummy1980(x: Int) extends Base +case class Dummy1981(x: Int) extends Base +case class Dummy1982(x: Int) extends Base +case class Dummy1983(x: Int) extends Base +case class Dummy1984(x: Int) extends Base +case class Dummy1985(x: Int) extends Base +case class Dummy1986(x: Int) extends Base +case class Dummy1987(x: Int) extends Base +case class Dummy1988(x: Int) extends Base +case class Dummy1989(x: Int) extends Base +case class Dummy1990(x: Int) extends Base +case class Dummy1991(x: Int) extends Base +case class Dummy1992(x: Int) extends Base +case class Dummy1993(x: Int) extends Base +case class Dummy1994(x: Int) extends Base +case class Dummy1995(x: Int) extends Base +case class Dummy1996(x: Int) extends Base +case class Dummy1997(x: Int) extends Base +case class Dummy1998(x: Int) extends Base +case class Dummy1999(x: Int) extends Base +def test(y: Base) = y match { + case Dummy0(p) => p + case Dummy1(p) => p + case Dummy2(p) => p + case Dummy3(p) => p + case Dummy4(p) => p + case Dummy5(p) => p + case Dummy6(p) => p + case Dummy7(p) => p + case Dummy8(p) => p + case Dummy9(p) => p + case Dummy10(p) => p + case Dummy11(p) => p + case Dummy12(p) => p + case Dummy13(p) => p + case Dummy14(p) => p + case Dummy15(p) => p + case Dummy16(p) => p + case Dummy17(p) => p + case Dummy18(p) => p + case Dummy19(p) => p + case Dummy20(p) => p + case Dummy21(p) => p + case Dummy22(p) => p + case Dummy23(p) => p + case Dummy24(p) => p + case Dummy25(p) => p + case Dummy26(p) => p + case Dummy27(p) => p + case Dummy28(p) => p + case Dummy29(p) => p + case Dummy30(p) => p + case Dummy31(p) => p + case Dummy32(p) => p + case Dummy33(p) => p + case Dummy34(p) => p + case Dummy35(p) => p + case Dummy36(p) => p + case Dummy37(p) => p + case Dummy38(p) => p + case Dummy39(p) => p + case Dummy40(p) => p + case Dummy41(p) => p + case Dummy42(p) => p + case Dummy43(p) => p + case Dummy44(p) => p + case Dummy45(p) => p + case Dummy46(p) => p + case Dummy47(p) => p + case Dummy48(p) => p + case Dummy49(p) => p + case Dummy50(p) => p + case Dummy51(p) => p + case Dummy52(p) => p + case Dummy53(p) => p + case Dummy54(p) => p + case Dummy55(p) => p + case Dummy56(p) => p + case Dummy57(p) => p + case Dummy58(p) => p + case Dummy59(p) => p + case Dummy60(p) => p + case Dummy61(p) => p + case Dummy62(p) => p + case Dummy63(p) => p + case Dummy64(p) => p + case Dummy65(p) => p + case Dummy66(p) => p + case Dummy67(p) => p + case Dummy68(p) => p + case Dummy69(p) => p + case Dummy70(p) => p + case Dummy71(p) => p + case Dummy72(p) => p + case Dummy73(p) => p + case Dummy74(p) => p + case Dummy75(p) => p + case Dummy76(p) => p + case Dummy77(p) => p + case Dummy78(p) => p + case Dummy79(p) => p + case Dummy80(p) => p + case Dummy81(p) => p + case Dummy82(p) => p + case Dummy83(p) => p + case Dummy84(p) => p + case Dummy85(p) => p + case Dummy86(p) => p + case Dummy87(p) => p + case Dummy88(p) => p + case Dummy89(p) => p + case Dummy90(p) => p + case Dummy91(p) => p + case Dummy92(p) => p + case Dummy93(p) => p + case Dummy94(p) => p + case Dummy95(p) => p + case Dummy96(p) => p + case Dummy97(p) => p + case Dummy98(p) => p + case Dummy99(p) => p + case Dummy100(p) => p + case Dummy101(p) => p + case Dummy102(p) => p + case Dummy103(p) => p + case Dummy104(p) => p + case Dummy105(p) => p + case Dummy106(p) => p + case Dummy107(p) => p + case Dummy108(p) => p + case Dummy109(p) => p + case Dummy110(p) => p + case Dummy111(p) => p + case Dummy112(p) => p + case Dummy113(p) => p + case Dummy114(p) => p + case Dummy115(p) => p + case Dummy116(p) => p + case Dummy117(p) => p + case Dummy118(p) => p + case Dummy119(p) => p + case Dummy120(p) => p + case Dummy121(p) => p + case Dummy122(p) => p + case Dummy123(p) => p + case Dummy124(p) => p + case Dummy125(p) => p + case Dummy126(p) => p + case Dummy127(p) => p + case Dummy128(p) => p + case Dummy129(p) => p + case Dummy130(p) => p + case Dummy131(p) => p + case Dummy132(p) => p + case Dummy133(p) => p + case Dummy134(p) => p + case Dummy135(p) => p + case Dummy136(p) => p + case Dummy137(p) => p + case Dummy138(p) => p + case Dummy139(p) => p + case Dummy140(p) => p + case Dummy141(p) => p + case Dummy142(p) => p + case Dummy143(p) => p + case Dummy144(p) => p + case Dummy145(p) => p + case Dummy146(p) => p + case Dummy147(p) => p + case Dummy148(p) => p + case Dummy149(p) => p + case Dummy150(p) => p + case Dummy151(p) => p + case Dummy152(p) => p + case Dummy153(p) => p + case Dummy154(p) => p + case Dummy155(p) => p + case Dummy156(p) => p + case Dummy157(p) => p + case Dummy158(p) => p + case Dummy159(p) => p + case Dummy160(p) => p + case Dummy161(p) => p + case Dummy162(p) => p + case Dummy163(p) => p + case Dummy164(p) => p + case Dummy165(p) => p + case Dummy166(p) => p + case Dummy167(p) => p + case Dummy168(p) => p + case Dummy169(p) => p + case Dummy170(p) => p + case Dummy171(p) => p + case Dummy172(p) => p + case Dummy173(p) => p + case Dummy174(p) => p + case Dummy175(p) => p + case Dummy176(p) => p + case Dummy177(p) => p + case Dummy178(p) => p + case Dummy179(p) => p + case Dummy180(p) => p + case Dummy181(p) => p + case Dummy182(p) => p + case Dummy183(p) => p + case Dummy184(p) => p + case Dummy185(p) => p + case Dummy186(p) => p + case Dummy187(p) => p + case Dummy188(p) => p + case Dummy189(p) => p + case Dummy190(p) => p + case Dummy191(p) => p + case Dummy192(p) => p + case Dummy193(p) => p + case Dummy194(p) => p + case Dummy195(p) => p + case Dummy196(p) => p + case Dummy197(p) => p + case Dummy198(p) => p + case Dummy199(p) => p + case Dummy200(p) => p + case Dummy201(p) => p + case Dummy202(p) => p + case Dummy203(p) => p + case Dummy204(p) => p + case Dummy205(p) => p + case Dummy206(p) => p + case Dummy207(p) => p + case Dummy208(p) => p + case Dummy209(p) => p + case Dummy210(p) => p + case Dummy211(p) => p + case Dummy212(p) => p + case Dummy213(p) => p + case Dummy214(p) => p + case Dummy215(p) => p + case Dummy216(p) => p + case Dummy217(p) => p + case Dummy218(p) => p + case Dummy219(p) => p + case Dummy220(p) => p + case Dummy221(p) => p + case Dummy222(p) => p + case Dummy223(p) => p + case Dummy224(p) => p + case Dummy225(p) => p + case Dummy226(p) => p + case Dummy227(p) => p + case Dummy228(p) => p + case Dummy229(p) => p + case Dummy230(p) => p + case Dummy231(p) => p + case Dummy232(p) => p + case Dummy233(p) => p + case Dummy234(p) => p + case Dummy235(p) => p + case Dummy236(p) => p + case Dummy237(p) => p + case Dummy238(p) => p + case Dummy239(p) => p + case Dummy240(p) => p + case Dummy241(p) => p + case Dummy242(p) => p + case Dummy243(p) => p + case Dummy244(p) => p + case Dummy245(p) => p + case Dummy246(p) => p + case Dummy247(p) => p + case Dummy248(p) => p + case Dummy249(p) => p + case Dummy250(p) => p + case Dummy251(p) => p + case Dummy252(p) => p + case Dummy253(p) => p + case Dummy254(p) => p + case Dummy255(p) => p + case Dummy256(p) => p + case Dummy257(p) => p + case Dummy258(p) => p + case Dummy259(p) => p + case Dummy260(p) => p + case Dummy261(p) => p + case Dummy262(p) => p + case Dummy263(p) => p + case Dummy264(p) => p + case Dummy265(p) => p + case Dummy266(p) => p + case Dummy267(p) => p + case Dummy268(p) => p + case Dummy269(p) => p + case Dummy270(p) => p + case Dummy271(p) => p + case Dummy272(p) => p + case Dummy273(p) => p + case Dummy274(p) => p + case Dummy275(p) => p + case Dummy276(p) => p + case Dummy277(p) => p + case Dummy278(p) => p + case Dummy279(p) => p + case Dummy280(p) => p + case Dummy281(p) => p + case Dummy282(p) => p + case Dummy283(p) => p + case Dummy284(p) => p + case Dummy285(p) => p + case Dummy286(p) => p + case Dummy287(p) => p + case Dummy288(p) => p + case Dummy289(p) => p + case Dummy290(p) => p + case Dummy291(p) => p + case Dummy292(p) => p + case Dummy293(p) => p + case Dummy294(p) => p + case Dummy295(p) => p + case Dummy296(p) => p + case Dummy297(p) => p + case Dummy298(p) => p + case Dummy299(p) => p + case Dummy300(p) => p + case Dummy301(p) => p + case Dummy302(p) => p + case Dummy303(p) => p + case Dummy304(p) => p + case Dummy305(p) => p + case Dummy306(p) => p + case Dummy307(p) => p + case Dummy308(p) => p + case Dummy309(p) => p + case Dummy310(p) => p + case Dummy311(p) => p + case Dummy312(p) => p + case Dummy313(p) => p + case Dummy314(p) => p + case Dummy315(p) => p + case Dummy316(p) => p + case Dummy317(p) => p + case Dummy318(p) => p + case Dummy319(p) => p + case Dummy320(p) => p + case Dummy321(p) => p + case Dummy322(p) => p + case Dummy323(p) => p + case Dummy324(p) => p + case Dummy325(p) => p + case Dummy326(p) => p + case Dummy327(p) => p + case Dummy328(p) => p + case Dummy329(p) => p + case Dummy330(p) => p + case Dummy331(p) => p + case Dummy332(p) => p + case Dummy333(p) => p + case Dummy334(p) => p + case Dummy335(p) => p + case Dummy336(p) => p + case Dummy337(p) => p + case Dummy338(p) => p + case Dummy339(p) => p + case Dummy340(p) => p + case Dummy341(p) => p + case Dummy342(p) => p + case Dummy343(p) => p + case Dummy344(p) => p + case Dummy345(p) => p + case Dummy346(p) => p + case Dummy347(p) => p + case Dummy348(p) => p + case Dummy349(p) => p + case Dummy350(p) => p + case Dummy351(p) => p + case Dummy352(p) => p + case Dummy353(p) => p + case Dummy354(p) => p + case Dummy355(p) => p + case Dummy356(p) => p + case Dummy357(p) => p + case Dummy358(p) => p + case Dummy359(p) => p + case Dummy360(p) => p + case Dummy361(p) => p + case Dummy362(p) => p + case Dummy363(p) => p + case Dummy364(p) => p + case Dummy365(p) => p + case Dummy366(p) => p + case Dummy367(p) => p + case Dummy368(p) => p + case Dummy369(p) => p + case Dummy370(p) => p + case Dummy371(p) => p + case Dummy372(p) => p + case Dummy373(p) => p + case Dummy374(p) => p + case Dummy375(p) => p + case Dummy376(p) => p + case Dummy377(p) => p + case Dummy378(p) => p + case Dummy379(p) => p + case Dummy380(p) => p + case Dummy381(p) => p + case Dummy382(p) => p + case Dummy383(p) => p + case Dummy384(p) => p + case Dummy385(p) => p + case Dummy386(p) => p + case Dummy387(p) => p + case Dummy388(p) => p + case Dummy389(p) => p + case Dummy390(p) => p + case Dummy391(p) => p + case Dummy392(p) => p + case Dummy393(p) => p + case Dummy394(p) => p + case Dummy395(p) => p + case Dummy396(p) => p + case Dummy397(p) => p + case Dummy398(p) => p + case Dummy399(p) => p + case Dummy400(p) => p + case Dummy401(p) => p + case Dummy402(p) => p + case Dummy403(p) => p + case Dummy404(p) => p + case Dummy405(p) => p + case Dummy406(p) => p + case Dummy407(p) => p + case Dummy408(p) => p + case Dummy409(p) => p + case Dummy410(p) => p + case Dummy411(p) => p + case Dummy412(p) => p + case Dummy413(p) => p + case Dummy414(p) => p + case Dummy415(p) => p + case Dummy416(p) => p + case Dummy417(p) => p + case Dummy418(p) => p + case Dummy419(p) => p + case Dummy420(p) => p + case Dummy421(p) => p + case Dummy422(p) => p + case Dummy423(p) => p + case Dummy424(p) => p + case Dummy425(p) => p + case Dummy426(p) => p + case Dummy427(p) => p + case Dummy428(p) => p + case Dummy429(p) => p + case Dummy430(p) => p + case Dummy431(p) => p + case Dummy432(p) => p + case Dummy433(p) => p + case Dummy434(p) => p + case Dummy435(p) => p + case Dummy436(p) => p + case Dummy437(p) => p + case Dummy438(p) => p + case Dummy439(p) => p + case Dummy440(p) => p + case Dummy441(p) => p + case Dummy442(p) => p + case Dummy443(p) => p + case Dummy444(p) => p + case Dummy445(p) => p + case Dummy446(p) => p + case Dummy447(p) => p + case Dummy448(p) => p + case Dummy449(p) => p + case Dummy450(p) => p + case Dummy451(p) => p + case Dummy452(p) => p + case Dummy453(p) => p + case Dummy454(p) => p + case Dummy455(p) => p + case Dummy456(p) => p + case Dummy457(p) => p + case Dummy458(p) => p + case Dummy459(p) => p + case Dummy460(p) => p + case Dummy461(p) => p + case Dummy462(p) => p + case Dummy463(p) => p + case Dummy464(p) => p + case Dummy465(p) => p + case Dummy466(p) => p + case Dummy467(p) => p + case Dummy468(p) => p + case Dummy469(p) => p + case Dummy470(p) => p + case Dummy471(p) => p + case Dummy472(p) => p + case Dummy473(p) => p + case Dummy474(p) => p + case Dummy475(p) => p + case Dummy476(p) => p + case Dummy477(p) => p + case Dummy478(p) => p + case Dummy479(p) => p + case Dummy480(p) => p + case Dummy481(p) => p + case Dummy482(p) => p + case Dummy483(p) => p + case Dummy484(p) => p + case Dummy485(p) => p + case Dummy486(p) => p + case Dummy487(p) => p + case Dummy488(p) => p + case Dummy489(p) => p + case Dummy490(p) => p + case Dummy491(p) => p + case Dummy492(p) => p + case Dummy493(p) => p + case Dummy494(p) => p + case Dummy495(p) => p + case Dummy496(p) => p + case Dummy497(p) => p + case Dummy498(p) => p + case Dummy499(p) => p + case Dummy500(p) => p + case Dummy501(p) => p + case Dummy502(p) => p + case Dummy503(p) => p + case Dummy504(p) => p + case Dummy505(p) => p + case Dummy506(p) => p + case Dummy507(p) => p + case Dummy508(p) => p + case Dummy509(p) => p + case Dummy510(p) => p + case Dummy511(p) => p + case Dummy512(p) => p + case Dummy513(p) => p + case Dummy514(p) => p + case Dummy515(p) => p + case Dummy516(p) => p + case Dummy517(p) => p + case Dummy518(p) => p + case Dummy519(p) => p + case Dummy520(p) => p + case Dummy521(p) => p + case Dummy522(p) => p + case Dummy523(p) => p + case Dummy524(p) => p + case Dummy525(p) => p + case Dummy526(p) => p + case Dummy527(p) => p + case Dummy528(p) => p + case Dummy529(p) => p + case Dummy530(p) => p + case Dummy531(p) => p + case Dummy532(p) => p + case Dummy533(p) => p + case Dummy534(p) => p + case Dummy535(p) => p + case Dummy536(p) => p + case Dummy537(p) => p + case Dummy538(p) => p + case Dummy539(p) => p + case Dummy540(p) => p + case Dummy541(p) => p + case Dummy542(p) => p + case Dummy543(p) => p + case Dummy544(p) => p + case Dummy545(p) => p + case Dummy546(p) => p + case Dummy547(p) => p + case Dummy548(p) => p + case Dummy549(p) => p + case Dummy550(p) => p + case Dummy551(p) => p + case Dummy552(p) => p + case Dummy553(p) => p + case Dummy554(p) => p + case Dummy555(p) => p + case Dummy556(p) => p + case Dummy557(p) => p + case Dummy558(p) => p + case Dummy559(p) => p + case Dummy560(p) => p + case Dummy561(p) => p + case Dummy562(p) => p + case Dummy563(p) => p + case Dummy564(p) => p + case Dummy565(p) => p + case Dummy566(p) => p + case Dummy567(p) => p + case Dummy568(p) => p + case Dummy569(p) => p + case Dummy570(p) => p + case Dummy571(p) => p + case Dummy572(p) => p + case Dummy573(p) => p + case Dummy574(p) => p + case Dummy575(p) => p + case Dummy576(p) => p + case Dummy577(p) => p + case Dummy578(p) => p + case Dummy579(p) => p + case Dummy580(p) => p + case Dummy581(p) => p + case Dummy582(p) => p + case Dummy583(p) => p + case Dummy584(p) => p + case Dummy585(p) => p + case Dummy586(p) => p + case Dummy587(p) => p + case Dummy588(p) => p + case Dummy589(p) => p + case Dummy590(p) => p + case Dummy591(p) => p + case Dummy592(p) => p + case Dummy593(p) => p + case Dummy594(p) => p + case Dummy595(p) => p + case Dummy596(p) => p + case Dummy597(p) => p + case Dummy598(p) => p + case Dummy599(p) => p + case Dummy600(p) => p + case Dummy601(p) => p + case Dummy602(p) => p + case Dummy603(p) => p + case Dummy604(p) => p + case Dummy605(p) => p + case Dummy606(p) => p + case Dummy607(p) => p + case Dummy608(p) => p + case Dummy609(p) => p + case Dummy610(p) => p + case Dummy611(p) => p + case Dummy612(p) => p + case Dummy613(p) => p + case Dummy614(p) => p + case Dummy615(p) => p + case Dummy616(p) => p + case Dummy617(p) => p + case Dummy618(p) => p + case Dummy619(p) => p + case Dummy620(p) => p + case Dummy621(p) => p + case Dummy622(p) => p + case Dummy623(p) => p + case Dummy624(p) => p + case Dummy625(p) => p + case Dummy626(p) => p + case Dummy627(p) => p + case Dummy628(p) => p + case Dummy629(p) => p + case Dummy630(p) => p + case Dummy631(p) => p + case Dummy632(p) => p + case Dummy633(p) => p + case Dummy634(p) => p + case Dummy635(p) => p + case Dummy636(p) => p + case Dummy637(p) => p + case Dummy638(p) => p + case Dummy639(p) => p + case Dummy640(p) => p + case Dummy641(p) => p + case Dummy642(p) => p + case Dummy643(p) => p + case Dummy644(p) => p + case Dummy645(p) => p + case Dummy646(p) => p + case Dummy647(p) => p + case Dummy648(p) => p + case Dummy649(p) => p + case Dummy650(p) => p + case Dummy651(p) => p + case Dummy652(p) => p + case Dummy653(p) => p + case Dummy654(p) => p + case Dummy655(p) => p + case Dummy656(p) => p + case Dummy657(p) => p + case Dummy658(p) => p + case Dummy659(p) => p + case Dummy660(p) => p + case Dummy661(p) => p + case Dummy662(p) => p + case Dummy663(p) => p + case Dummy664(p) => p + case Dummy665(p) => p + case Dummy666(p) => p + case Dummy667(p) => p + case Dummy668(p) => p + case Dummy669(p) => p + case Dummy670(p) => p + case Dummy671(p) => p + case Dummy672(p) => p + case Dummy673(p) => p + case Dummy674(p) => p + case Dummy675(p) => p + case Dummy676(p) => p + case Dummy677(p) => p + case Dummy678(p) => p + case Dummy679(p) => p + case Dummy680(p) => p + case Dummy681(p) => p + case Dummy682(p) => p + case Dummy683(p) => p + case Dummy684(p) => p + case Dummy685(p) => p + case Dummy686(p) => p + case Dummy687(p) => p + case Dummy688(p) => p + case Dummy689(p) => p + case Dummy690(p) => p + case Dummy691(p) => p + case Dummy692(p) => p + case Dummy693(p) => p + case Dummy694(p) => p + case Dummy695(p) => p + case Dummy696(p) => p + case Dummy697(p) => p + case Dummy698(p) => p + case Dummy699(p) => p + case Dummy700(p) => p + case Dummy701(p) => p + case Dummy702(p) => p + case Dummy703(p) => p + case Dummy704(p) => p + case Dummy705(p) => p + case Dummy706(p) => p + case Dummy707(p) => p + case Dummy708(p) => p + case Dummy709(p) => p + case Dummy710(p) => p + case Dummy711(p) => p + case Dummy712(p) => p + case Dummy713(p) => p + case Dummy714(p) => p + case Dummy715(p) => p + case Dummy716(p) => p + case Dummy717(p) => p + case Dummy718(p) => p + case Dummy719(p) => p + case Dummy720(p) => p + case Dummy721(p) => p + case Dummy722(p) => p + case Dummy723(p) => p + case Dummy724(p) => p + case Dummy725(p) => p + case Dummy726(p) => p + case Dummy727(p) => p + case Dummy728(p) => p + case Dummy729(p) => p + case Dummy730(p) => p + case Dummy731(p) => p + case Dummy732(p) => p + case Dummy733(p) => p + case Dummy734(p) => p + case Dummy735(p) => p + case Dummy736(p) => p + case Dummy737(p) => p + case Dummy738(p) => p + case Dummy739(p) => p + case Dummy740(p) => p + case Dummy741(p) => p + case Dummy742(p) => p + case Dummy743(p) => p + case Dummy744(p) => p + case Dummy745(p) => p + case Dummy746(p) => p + case Dummy747(p) => p + case Dummy748(p) => p + case Dummy749(p) => p + case Dummy750(p) => p + case Dummy751(p) => p + case Dummy752(p) => p + case Dummy753(p) => p + case Dummy754(p) => p + case Dummy755(p) => p + case Dummy756(p) => p + case Dummy757(p) => p + case Dummy758(p) => p + case Dummy759(p) => p + case Dummy760(p) => p + case Dummy761(p) => p + case Dummy762(p) => p + case Dummy763(p) => p + case Dummy764(p) => p + case Dummy765(p) => p + case Dummy766(p) => p + case Dummy767(p) => p + case Dummy768(p) => p + case Dummy769(p) => p + case Dummy770(p) => p + case Dummy771(p) => p + case Dummy772(p) => p + case Dummy773(p) => p + case Dummy774(p) => p + case Dummy775(p) => p + case Dummy776(p) => p + case Dummy777(p) => p + case Dummy778(p) => p + case Dummy779(p) => p + case Dummy780(p) => p + case Dummy781(p) => p + case Dummy782(p) => p + case Dummy783(p) => p + case Dummy784(p) => p + case Dummy785(p) => p + case Dummy786(p) => p + case Dummy787(p) => p + case Dummy788(p) => p + case Dummy789(p) => p + case Dummy790(p) => p + case Dummy791(p) => p + case Dummy792(p) => p + case Dummy793(p) => p + case Dummy794(p) => p + case Dummy795(p) => p + case Dummy796(p) => p + case Dummy797(p) => p + case Dummy798(p) => p + case Dummy799(p) => p + case Dummy800(p) => p + case Dummy801(p) => p + case Dummy802(p) => p + case Dummy803(p) => p + case Dummy804(p) => p + case Dummy805(p) => p + case Dummy806(p) => p + case Dummy807(p) => p + case Dummy808(p) => p + case Dummy809(p) => p + case Dummy810(p) => p + case Dummy811(p) => p + case Dummy812(p) => p + case Dummy813(p) => p + case Dummy814(p) => p + case Dummy815(p) => p + case Dummy816(p) => p + case Dummy817(p) => p + case Dummy818(p) => p + case Dummy819(p) => p + case Dummy820(p) => p + case Dummy821(p) => p + case Dummy822(p) => p + case Dummy823(p) => p + case Dummy824(p) => p + case Dummy825(p) => p + case Dummy826(p) => p + case Dummy827(p) => p + case Dummy828(p) => p + case Dummy829(p) => p + case Dummy830(p) => p + case Dummy831(p) => p + case Dummy832(p) => p + case Dummy833(p) => p + case Dummy834(p) => p + case Dummy835(p) => p + case Dummy836(p) => p + case Dummy837(p) => p + case Dummy838(p) => p + case Dummy839(p) => p + case Dummy840(p) => p + case Dummy841(p) => p + case Dummy842(p) => p + case Dummy843(p) => p + case Dummy844(p) => p + case Dummy845(p) => p + case Dummy846(p) => p + case Dummy847(p) => p + case Dummy848(p) => p + case Dummy849(p) => p + case Dummy850(p) => p + case Dummy851(p) => p + case Dummy852(p) => p + case Dummy853(p) => p + case Dummy854(p) => p + case Dummy855(p) => p + case Dummy856(p) => p + case Dummy857(p) => p + case Dummy858(p) => p + case Dummy859(p) => p + case Dummy860(p) => p + case Dummy861(p) => p + case Dummy862(p) => p + case Dummy863(p) => p + case Dummy864(p) => p + case Dummy865(p) => p + case Dummy866(p) => p + case Dummy867(p) => p + case Dummy868(p) => p + case Dummy869(p) => p + case Dummy870(p) => p + case Dummy871(p) => p + case Dummy872(p) => p + case Dummy873(p) => p + case Dummy874(p) => p + case Dummy875(p) => p + case Dummy876(p) => p + case Dummy877(p) => p + case Dummy878(p) => p + case Dummy879(p) => p + case Dummy880(p) => p + case Dummy881(p) => p + case Dummy882(p) => p + case Dummy883(p) => p + case Dummy884(p) => p + case Dummy885(p) => p + case Dummy886(p) => p + case Dummy887(p) => p + case Dummy888(p) => p + case Dummy889(p) => p + case Dummy890(p) => p + case Dummy891(p) => p + case Dummy892(p) => p + case Dummy893(p) => p + case Dummy894(p) => p + case Dummy895(p) => p + case Dummy896(p) => p + case Dummy897(p) => p + case Dummy898(p) => p + case Dummy899(p) => p + case Dummy900(p) => p + case Dummy901(p) => p + case Dummy902(p) => p + case Dummy903(p) => p + case Dummy904(p) => p + case Dummy905(p) => p + case Dummy906(p) => p + case Dummy907(p) => p + case Dummy908(p) => p + case Dummy909(p) => p + case Dummy910(p) => p + case Dummy911(p) => p + case Dummy912(p) => p + case Dummy913(p) => p + case Dummy914(p) => p + case Dummy915(p) => p + case Dummy916(p) => p + case Dummy917(p) => p + case Dummy918(p) => p + case Dummy919(p) => p + case Dummy920(p) => p + case Dummy921(p) => p + case Dummy922(p) => p + case Dummy923(p) => p + case Dummy924(p) => p + case Dummy925(p) => p + case Dummy926(p) => p + case Dummy927(p) => p + case Dummy928(p) => p + case Dummy929(p) => p + case Dummy930(p) => p + case Dummy931(p) => p + case Dummy932(p) => p + case Dummy933(p) => p + case Dummy934(p) => p + case Dummy935(p) => p + case Dummy936(p) => p + case Dummy937(p) => p + case Dummy938(p) => p + case Dummy939(p) => p + case Dummy940(p) => p + case Dummy941(p) => p + case Dummy942(p) => p + case Dummy943(p) => p + case Dummy944(p) => p + case Dummy945(p) => p + case Dummy946(p) => p + case Dummy947(p) => p + case Dummy948(p) => p + case Dummy949(p) => p + case Dummy950(p) => p + case Dummy951(p) => p + case Dummy952(p) => p + case Dummy953(p) => p + case Dummy954(p) => p + case Dummy955(p) => p + case Dummy956(p) => p + case Dummy957(p) => p + case Dummy958(p) => p + case Dummy959(p) => p + case Dummy960(p) => p + case Dummy961(p) => p + case Dummy962(p) => p + case Dummy963(p) => p + case Dummy964(p) => p + case Dummy965(p) => p + case Dummy966(p) => p + case Dummy967(p) => p + case Dummy968(p) => p + case Dummy969(p) => p + case Dummy970(p) => p + case Dummy971(p) => p + case Dummy972(p) => p + case Dummy973(p) => p + case Dummy974(p) => p + case Dummy975(p) => p + case Dummy976(p) => p + case Dummy977(p) => p + case Dummy978(p) => p + case Dummy979(p) => p + case Dummy980(p) => p + case Dummy981(p) => p + case Dummy982(p) => p + case Dummy983(p) => p + case Dummy984(p) => p + case Dummy985(p) => p + case Dummy986(p) => p + case Dummy987(p) => p + case Dummy988(p) => p + case Dummy989(p) => p + case Dummy990(p) => p + case Dummy991(p) => p + case Dummy992(p) => p + case Dummy993(p) => p + case Dummy994(p) => p + case Dummy995(p) => p + case Dummy996(p) => p + case Dummy997(p) => p + case Dummy998(p) => p + case Dummy999(p) => p + case Dummy1000(p) => p + case Dummy1001(p) => p + case Dummy1002(p) => p + case Dummy1003(p) => p + case Dummy1004(p) => p + case Dummy1005(p) => p + case Dummy1006(p) => p + case Dummy1007(p) => p + case Dummy1008(p) => p + case Dummy1009(p) => p + case Dummy1010(p) => p + case Dummy1011(p) => p + case Dummy1012(p) => p + case Dummy1013(p) => p + case Dummy1014(p) => p + case Dummy1015(p) => p + case Dummy1016(p) => p + case Dummy1017(p) => p + case Dummy1018(p) => p + case Dummy1019(p) => p + case Dummy1020(p) => p + case Dummy1021(p) => p + case Dummy1022(p) => p + case Dummy1023(p) => p + case Dummy1024(p) => p + case Dummy1025(p) => p + case Dummy1026(p) => p + case Dummy1027(p) => p + case Dummy1028(p) => p + case Dummy1029(p) => p + case Dummy1030(p) => p + case Dummy1031(p) => p + case Dummy1032(p) => p + case Dummy1033(p) => p + case Dummy1034(p) => p + case Dummy1035(p) => p + case Dummy1036(p) => p + case Dummy1037(p) => p + case Dummy1038(p) => p + case Dummy1039(p) => p + case Dummy1040(p) => p + case Dummy1041(p) => p + case Dummy1042(p) => p + case Dummy1043(p) => p + case Dummy1044(p) => p + case Dummy1045(p) => p + case Dummy1046(p) => p + case Dummy1047(p) => p + case Dummy1048(p) => p + case Dummy1049(p) => p + case Dummy1050(p) => p + case Dummy1051(p) => p + case Dummy1052(p) => p + case Dummy1053(p) => p + case Dummy1054(p) => p + case Dummy1055(p) => p + case Dummy1056(p) => p + case Dummy1057(p) => p + case Dummy1058(p) => p + case Dummy1059(p) => p + case Dummy1060(p) => p + case Dummy1061(p) => p + case Dummy1062(p) => p + case Dummy1063(p) => p + case Dummy1064(p) => p + case Dummy1065(p) => p + case Dummy1066(p) => p + case Dummy1067(p) => p + case Dummy1068(p) => p + case Dummy1069(p) => p + case Dummy1070(p) => p + case Dummy1071(p) => p + case Dummy1072(p) => p + case Dummy1073(p) => p + case Dummy1074(p) => p + case Dummy1075(p) => p + case Dummy1076(p) => p + case Dummy1077(p) => p + case Dummy1078(p) => p + case Dummy1079(p) => p + case Dummy1080(p) => p + case Dummy1081(p) => p + case Dummy1082(p) => p + case Dummy1083(p) => p + case Dummy1084(p) => p + case Dummy1085(p) => p + case Dummy1086(p) => p + case Dummy1087(p) => p + case Dummy1088(p) => p + case Dummy1089(p) => p + case Dummy1090(p) => p + case Dummy1091(p) => p + case Dummy1092(p) => p + case Dummy1093(p) => p + case Dummy1094(p) => p + case Dummy1095(p) => p + case Dummy1096(p) => p + case Dummy1097(p) => p + case Dummy1098(p) => p + case Dummy1099(p) => p + case Dummy1100(p) => p + case Dummy1101(p) => p + case Dummy1102(p) => p + case Dummy1103(p) => p + case Dummy1104(p) => p + case Dummy1105(p) => p + case Dummy1106(p) => p + case Dummy1107(p) => p + case Dummy1108(p) => p + case Dummy1109(p) => p + case Dummy1110(p) => p + case Dummy1111(p) => p + case Dummy1112(p) => p + case Dummy1113(p) => p + case Dummy1114(p) => p + case Dummy1115(p) => p + case Dummy1116(p) => p + case Dummy1117(p) => p + case Dummy1118(p) => p + case Dummy1119(p) => p + case Dummy1120(p) => p + case Dummy1121(p) => p + case Dummy1122(p) => p + case Dummy1123(p) => p + case Dummy1124(p) => p + case Dummy1125(p) => p + case Dummy1126(p) => p + case Dummy1127(p) => p + case Dummy1128(p) => p + case Dummy1129(p) => p + case Dummy1130(p) => p + case Dummy1131(p) => p + case Dummy1132(p) => p + case Dummy1133(p) => p + case Dummy1134(p) => p + case Dummy1135(p) => p + case Dummy1136(p) => p + case Dummy1137(p) => p + case Dummy1138(p) => p + case Dummy1139(p) => p + case Dummy1140(p) => p + case Dummy1141(p) => p + case Dummy1142(p) => p + case Dummy1143(p) => p + case Dummy1144(p) => p + case Dummy1145(p) => p + case Dummy1146(p) => p + case Dummy1147(p) => p + case Dummy1148(p) => p + case Dummy1149(p) => p + case Dummy1150(p) => p + case Dummy1151(p) => p + case Dummy1152(p) => p + case Dummy1153(p) => p + case Dummy1154(p) => p + case Dummy1155(p) => p + case Dummy1156(p) => p + case Dummy1157(p) => p + case Dummy1158(p) => p + case Dummy1159(p) => p + case Dummy1160(p) => p + case Dummy1161(p) => p + case Dummy1162(p) => p + case Dummy1163(p) => p + case Dummy1164(p) => p + case Dummy1165(p) => p + case Dummy1166(p) => p + case Dummy1167(p) => p + case Dummy1168(p) => p + case Dummy1169(p) => p + case Dummy1170(p) => p + case Dummy1171(p) => p + case Dummy1172(p) => p + case Dummy1173(p) => p + case Dummy1174(p) => p + case Dummy1175(p) => p + case Dummy1176(p) => p + case Dummy1177(p) => p + case Dummy1178(p) => p + case Dummy1179(p) => p + case Dummy1180(p) => p + case Dummy1181(p) => p + case Dummy1182(p) => p + case Dummy1183(p) => p + case Dummy1184(p) => p + case Dummy1185(p) => p + case Dummy1186(p) => p + case Dummy1187(p) => p + case Dummy1188(p) => p + case Dummy1189(p) => p + case Dummy1190(p) => p + case Dummy1191(p) => p + case Dummy1192(p) => p + case Dummy1193(p) => p + case Dummy1194(p) => p + case Dummy1195(p) => p + case Dummy1196(p) => p + case Dummy1197(p) => p + case Dummy1198(p) => p + case Dummy1199(p) => p + case Dummy1200(p) => p + case Dummy1201(p) => p + case Dummy1202(p) => p + case Dummy1203(p) => p + case Dummy1204(p) => p + case Dummy1205(p) => p + case Dummy1206(p) => p + case Dummy1207(p) => p + case Dummy1208(p) => p + case Dummy1209(p) => p + case Dummy1210(p) => p + case Dummy1211(p) => p + case Dummy1212(p) => p + case Dummy1213(p) => p + case Dummy1214(p) => p + case Dummy1215(p) => p + case Dummy1216(p) => p + case Dummy1217(p) => p + case Dummy1218(p) => p + case Dummy1219(p) => p + case Dummy1220(p) => p + case Dummy1221(p) => p + case Dummy1222(p) => p + case Dummy1223(p) => p + case Dummy1224(p) => p + case Dummy1225(p) => p + case Dummy1226(p) => p + case Dummy1227(p) => p + case Dummy1228(p) => p + case Dummy1229(p) => p + case Dummy1230(p) => p + case Dummy1231(p) => p + case Dummy1232(p) => p + case Dummy1233(p) => p + case Dummy1234(p) => p + case Dummy1235(p) => p + case Dummy1236(p) => p + case Dummy1237(p) => p + case Dummy1238(p) => p + case Dummy1239(p) => p + case Dummy1240(p) => p + case Dummy1241(p) => p + case Dummy1242(p) => p + case Dummy1243(p) => p + case Dummy1244(p) => p + case Dummy1245(p) => p + case Dummy1246(p) => p + case Dummy1247(p) => p + case Dummy1248(p) => p + case Dummy1249(p) => p + case Dummy1250(p) => p + case Dummy1251(p) => p + case Dummy1252(p) => p + case Dummy1253(p) => p + case Dummy1254(p) => p + case Dummy1255(p) => p + case Dummy1256(p) => p + case Dummy1257(p) => p + case Dummy1258(p) => p + case Dummy1259(p) => p + case Dummy1260(p) => p + case Dummy1261(p) => p + case Dummy1262(p) => p + case Dummy1263(p) => p + case Dummy1264(p) => p + case Dummy1265(p) => p + case Dummy1266(p) => p + case Dummy1267(p) => p + case Dummy1268(p) => p + case Dummy1269(p) => p + case Dummy1270(p) => p + case Dummy1271(p) => p + case Dummy1272(p) => p + case Dummy1273(p) => p + case Dummy1274(p) => p + case Dummy1275(p) => p + case Dummy1276(p) => p + case Dummy1277(p) => p + case Dummy1278(p) => p + case Dummy1279(p) => p + case Dummy1280(p) => p + case Dummy1281(p) => p + case Dummy1282(p) => p + case Dummy1283(p) => p + case Dummy1284(p) => p + case Dummy1285(p) => p + case Dummy1286(p) => p + case Dummy1287(p) => p + case Dummy1288(p) => p + case Dummy1289(p) => p + case Dummy1290(p) => p + case Dummy1291(p) => p + case Dummy1292(p) => p + case Dummy1293(p) => p + case Dummy1294(p) => p + case Dummy1295(p) => p + case Dummy1296(p) => p + case Dummy1297(p) => p + case Dummy1298(p) => p + case Dummy1299(p) => p + case Dummy1300(p) => p + case Dummy1301(p) => p + case Dummy1302(p) => p + case Dummy1303(p) => p + case Dummy1304(p) => p + case Dummy1305(p) => p + case Dummy1306(p) => p + case Dummy1307(p) => p + case Dummy1308(p) => p + case Dummy1309(p) => p + case Dummy1310(p) => p + case Dummy1311(p) => p + case Dummy1312(p) => p + case Dummy1313(p) => p + case Dummy1314(p) => p + case Dummy1315(p) => p + case Dummy1316(p) => p + case Dummy1317(p) => p + case Dummy1318(p) => p + case Dummy1319(p) => p + case Dummy1320(p) => p + case Dummy1321(p) => p + case Dummy1322(p) => p + case Dummy1323(p) => p + case Dummy1324(p) => p + case Dummy1325(p) => p + case Dummy1326(p) => p + case Dummy1327(p) => p + case Dummy1328(p) => p + case Dummy1329(p) => p + case Dummy1330(p) => p + case Dummy1331(p) => p + case Dummy1332(p) => p + case Dummy1333(p) => p + case Dummy1334(p) => p + case Dummy1335(p) => p + case Dummy1336(p) => p + case Dummy1337(p) => p + case Dummy1338(p) => p + case Dummy1339(p) => p + case Dummy1340(p) => p + case Dummy1341(p) => p + case Dummy1342(p) => p + case Dummy1343(p) => p + case Dummy1344(p) => p + case Dummy1345(p) => p + case Dummy1346(p) => p + case Dummy1347(p) => p + case Dummy1348(p) => p + case Dummy1349(p) => p + case Dummy1350(p) => p + case Dummy1351(p) => p + case Dummy1352(p) => p + case Dummy1353(p) => p + case Dummy1354(p) => p + case Dummy1355(p) => p + case Dummy1356(p) => p + case Dummy1357(p) => p + case Dummy1358(p) => p + case Dummy1359(p) => p + case Dummy1360(p) => p + case Dummy1361(p) => p + case Dummy1362(p) => p + case Dummy1363(p) => p + case Dummy1364(p) => p + case Dummy1365(p) => p + case Dummy1366(p) => p + case Dummy1367(p) => p + case Dummy1368(p) => p + case Dummy1369(p) => p + case Dummy1370(p) => p + case Dummy1371(p) => p + case Dummy1372(p) => p + case Dummy1373(p) => p + case Dummy1374(p) => p + case Dummy1375(p) => p + case Dummy1376(p) => p + case Dummy1377(p) => p + case Dummy1378(p) => p + case Dummy1379(p) => p + case Dummy1380(p) => p + case Dummy1381(p) => p + case Dummy1382(p) => p + case Dummy1383(p) => p + case Dummy1384(p) => p + case Dummy1385(p) => p + case Dummy1386(p) => p + case Dummy1387(p) => p + case Dummy1388(p) => p + case Dummy1389(p) => p + case Dummy1390(p) => p + case Dummy1391(p) => p + case Dummy1392(p) => p + case Dummy1393(p) => p + case Dummy1394(p) => p + case Dummy1395(p) => p + case Dummy1396(p) => p + case Dummy1397(p) => p + case Dummy1398(p) => p + case Dummy1399(p) => p + case Dummy1400(p) => p + case Dummy1401(p) => p + case Dummy1402(p) => p + case Dummy1403(p) => p + case Dummy1404(p) => p + case Dummy1405(p) => p + case Dummy1406(p) => p + case Dummy1407(p) => p + case Dummy1408(p) => p + case Dummy1409(p) => p + case Dummy1410(p) => p + case Dummy1411(p) => p + case Dummy1412(p) => p + case Dummy1413(p) => p + case Dummy1414(p) => p + case Dummy1415(p) => p + case Dummy1416(p) => p + case Dummy1417(p) => p + case Dummy1418(p) => p + case Dummy1419(p) => p + case Dummy1420(p) => p + case Dummy1421(p) => p + case Dummy1422(p) => p + case Dummy1423(p) => p + case Dummy1424(p) => p + case Dummy1425(p) => p + case Dummy1426(p) => p + case Dummy1427(p) => p + case Dummy1428(p) => p + case Dummy1429(p) => p + case Dummy1430(p) => p + case Dummy1431(p) => p + case Dummy1432(p) => p + case Dummy1433(p) => p + case Dummy1434(p) => p + case Dummy1435(p) => p + case Dummy1436(p) => p + case Dummy1437(p) => p + case Dummy1438(p) => p + case Dummy1439(p) => p + case Dummy1440(p) => p + case Dummy1441(p) => p + case Dummy1442(p) => p + case Dummy1443(p) => p + case Dummy1444(p) => p + case Dummy1445(p) => p + case Dummy1446(p) => p + case Dummy1447(p) => p + case Dummy1448(p) => p + case Dummy1449(p) => p + case Dummy1450(p) => p + case Dummy1451(p) => p + case Dummy1452(p) => p + case Dummy1453(p) => p + case Dummy1454(p) => p + case Dummy1455(p) => p + case Dummy1456(p) => p + case Dummy1457(p) => p + case Dummy1458(p) => p + case Dummy1459(p) => p + case Dummy1460(p) => p + case Dummy1461(p) => p + case Dummy1462(p) => p + case Dummy1463(p) => p + case Dummy1464(p) => p + case Dummy1465(p) => p + case Dummy1466(p) => p + case Dummy1467(p) => p + case Dummy1468(p) => p + case Dummy1469(p) => p + case Dummy1470(p) => p + case Dummy1471(p) => p + case Dummy1472(p) => p + case Dummy1473(p) => p + case Dummy1474(p) => p + case Dummy1475(p) => p + case Dummy1476(p) => p + case Dummy1477(p) => p + case Dummy1478(p) => p + case Dummy1479(p) => p + case Dummy1480(p) => p + case Dummy1481(p) => p + case Dummy1482(p) => p + case Dummy1483(p) => p + case Dummy1484(p) => p + case Dummy1485(p) => p + case Dummy1486(p) => p + case Dummy1487(p) => p + case Dummy1488(p) => p + case Dummy1489(p) => p + case Dummy1490(p) => p + case Dummy1491(p) => p + case Dummy1492(p) => p + case Dummy1493(p) => p + case Dummy1494(p) => p + case Dummy1495(p) => p + case Dummy1496(p) => p + case Dummy1497(p) => p + case Dummy1498(p) => p + case Dummy1499(p) => p + case Dummy1500(p) => p + case Dummy1501(p) => p + case Dummy1502(p) => p + case Dummy1503(p) => p + case Dummy1504(p) => p + case Dummy1505(p) => p + case Dummy1506(p) => p + case Dummy1507(p) => p + case Dummy1508(p) => p + case Dummy1509(p) => p + case Dummy1510(p) => p + case Dummy1511(p) => p + case Dummy1512(p) => p + case Dummy1513(p) => p + case Dummy1514(p) => p + case Dummy1515(p) => p + case Dummy1516(p) => p + case Dummy1517(p) => p + case Dummy1518(p) => p + case Dummy1519(p) => p + case Dummy1520(p) => p + case Dummy1521(p) => p + case Dummy1522(p) => p + case Dummy1523(p) => p + case Dummy1524(p) => p + case Dummy1525(p) => p + case Dummy1526(p) => p + case Dummy1527(p) => p + case Dummy1528(p) => p + case Dummy1529(p) => p + case Dummy1530(p) => p + case Dummy1531(p) => p + case Dummy1532(p) => p + case Dummy1533(p) => p + case Dummy1534(p) => p + case Dummy1535(p) => p + case Dummy1536(p) => p + case Dummy1537(p) => p + case Dummy1538(p) => p + case Dummy1539(p) => p + case Dummy1540(p) => p + case Dummy1541(p) => p + case Dummy1542(p) => p + case Dummy1543(p) => p + case Dummy1544(p) => p + case Dummy1545(p) => p + case Dummy1546(p) => p + case Dummy1547(p) => p + case Dummy1548(p) => p + case Dummy1549(p) => p + case Dummy1550(p) => p + case Dummy1551(p) => p + case Dummy1552(p) => p + case Dummy1553(p) => p + case Dummy1554(p) => p + case Dummy1555(p) => p + case Dummy1556(p) => p + case Dummy1557(p) => p + case Dummy1558(p) => p + case Dummy1559(p) => p + case Dummy1560(p) => p + case Dummy1561(p) => p + case Dummy1562(p) => p + case Dummy1563(p) => p + case Dummy1564(p) => p + case Dummy1565(p) => p + case Dummy1566(p) => p + case Dummy1567(p) => p + case Dummy1568(p) => p + case Dummy1569(p) => p + case Dummy1570(p) => p + case Dummy1571(p) => p + case Dummy1572(p) => p + case Dummy1573(p) => p + case Dummy1574(p) => p + case Dummy1575(p) => p + case Dummy1576(p) => p + case Dummy1577(p) => p + case Dummy1578(p) => p + case Dummy1579(p) => p + case Dummy1580(p) => p + case Dummy1581(p) => p + case Dummy1582(p) => p + case Dummy1583(p) => p + case Dummy1584(p) => p + case Dummy1585(p) => p + case Dummy1586(p) => p + case Dummy1587(p) => p + case Dummy1588(p) => p + case Dummy1589(p) => p + case Dummy1590(p) => p + case Dummy1591(p) => p + case Dummy1592(p) => p + case Dummy1593(p) => p + case Dummy1594(p) => p + case Dummy1595(p) => p + case Dummy1596(p) => p + case Dummy1597(p) => p + case Dummy1598(p) => p + case Dummy1599(p) => p + case Dummy1600(p) => p + case Dummy1601(p) => p + case Dummy1602(p) => p + case Dummy1603(p) => p + case Dummy1604(p) => p + case Dummy1605(p) => p + case Dummy1606(p) => p + case Dummy1607(p) => p + case Dummy1608(p) => p + case Dummy1609(p) => p + case Dummy1610(p) => p + case Dummy1611(p) => p + case Dummy1612(p) => p + case Dummy1613(p) => p + case Dummy1614(p) => p + case Dummy1615(p) => p + case Dummy1616(p) => p + case Dummy1617(p) => p + case Dummy1618(p) => p + case Dummy1619(p) => p + case Dummy1620(p) => p + case Dummy1621(p) => p + case Dummy1622(p) => p + case Dummy1623(p) => p + case Dummy1624(p) => p + case Dummy1625(p) => p + case Dummy1626(p) => p + case Dummy1627(p) => p + case Dummy1628(p) => p + case Dummy1629(p) => p + case Dummy1630(p) => p + case Dummy1631(p) => p + case Dummy1632(p) => p + case Dummy1633(p) => p + case Dummy1634(p) => p + case Dummy1635(p) => p + case Dummy1636(p) => p + case Dummy1637(p) => p + case Dummy1638(p) => p + case Dummy1639(p) => p + case Dummy1640(p) => p + case Dummy1641(p) => p + case Dummy1642(p) => p + case Dummy1643(p) => p + case Dummy1644(p) => p + case Dummy1645(p) => p + case Dummy1646(p) => p + case Dummy1647(p) => p + case Dummy1648(p) => p + case Dummy1649(p) => p + case Dummy1650(p) => p + case Dummy1651(p) => p + case Dummy1652(p) => p + case Dummy1653(p) => p + case Dummy1654(p) => p + case Dummy1655(p) => p + case Dummy1656(p) => p + case Dummy1657(p) => p + case Dummy1658(p) => p + case Dummy1659(p) => p + case Dummy1660(p) => p + case Dummy1661(p) => p + case Dummy1662(p) => p + case Dummy1663(p) => p + case Dummy1664(p) => p + case Dummy1665(p) => p + case Dummy1666(p) => p + case Dummy1667(p) => p + case Dummy1668(p) => p + case Dummy1669(p) => p + case Dummy1670(p) => p + case Dummy1671(p) => p + case Dummy1672(p) => p + case Dummy1673(p) => p + case Dummy1674(p) => p + case Dummy1675(p) => p + case Dummy1676(p) => p + case Dummy1677(p) => p + case Dummy1678(p) => p + case Dummy1679(p) => p + case Dummy1680(p) => p + case Dummy1681(p) => p + case Dummy1682(p) => p + case Dummy1683(p) => p + case Dummy1684(p) => p + case Dummy1685(p) => p + case Dummy1686(p) => p + case Dummy1687(p) => p + case Dummy1688(p) => p + case Dummy1689(p) => p + case Dummy1690(p) => p + case Dummy1691(p) => p + case Dummy1692(p) => p + case Dummy1693(p) => p + case Dummy1694(p) => p + case Dummy1695(p) => p + case Dummy1696(p) => p + case Dummy1697(p) => p + case Dummy1698(p) => p + case Dummy1699(p) => p + case Dummy1700(p) => p + case Dummy1701(p) => p + case Dummy1702(p) => p + case Dummy1703(p) => p + case Dummy1704(p) => p + case Dummy1705(p) => p + case Dummy1706(p) => p + case Dummy1707(p) => p + case Dummy1708(p) => p + case Dummy1709(p) => p + case Dummy1710(p) => p + case Dummy1711(p) => p + case Dummy1712(p) => p + case Dummy1713(p) => p + case Dummy1714(p) => p + case Dummy1715(p) => p + case Dummy1716(p) => p + case Dummy1717(p) => p + case Dummy1718(p) => p + case Dummy1719(p) => p + case Dummy1720(p) => p + case Dummy1721(p) => p + case Dummy1722(p) => p + case Dummy1723(p) => p + case Dummy1724(p) => p + case Dummy1725(p) => p + case Dummy1726(p) => p + case Dummy1727(p) => p + case Dummy1728(p) => p + case Dummy1729(p) => p + case Dummy1730(p) => p + case Dummy1731(p) => p + case Dummy1732(p) => p + case Dummy1733(p) => p + case Dummy1734(p) => p + case Dummy1735(p) => p + case Dummy1736(p) => p + case Dummy1737(p) => p + case Dummy1738(p) => p + case Dummy1739(p) => p + case Dummy1740(p) => p + case Dummy1741(p) => p + case Dummy1742(p) => p + case Dummy1743(p) => p + case Dummy1744(p) => p + case Dummy1745(p) => p + case Dummy1746(p) => p + case Dummy1747(p) => p + case Dummy1748(p) => p + case Dummy1749(p) => p + case Dummy1750(p) => p + case Dummy1751(p) => p + case Dummy1752(p) => p + case Dummy1753(p) => p + case Dummy1754(p) => p + case Dummy1755(p) => p + case Dummy1756(p) => p + case Dummy1757(p) => p + case Dummy1758(p) => p + case Dummy1759(p) => p + case Dummy1760(p) => p + case Dummy1761(p) => p + case Dummy1762(p) => p + case Dummy1763(p) => p + case Dummy1764(p) => p + case Dummy1765(p) => p + case Dummy1766(p) => p + case Dummy1767(p) => p + case Dummy1768(p) => p + case Dummy1769(p) => p + case Dummy1770(p) => p + case Dummy1771(p) => p + case Dummy1772(p) => p + case Dummy1773(p) => p + case Dummy1774(p) => p + case Dummy1775(p) => p + case Dummy1776(p) => p + case Dummy1777(p) => p + case Dummy1778(p) => p + case Dummy1779(p) => p + case Dummy1780(p) => p + case Dummy1781(p) => p + case Dummy1782(p) => p + case Dummy1783(p) => p + case Dummy1784(p) => p + case Dummy1785(p) => p + case Dummy1786(p) => p + case Dummy1787(p) => p + case Dummy1788(p) => p + case Dummy1789(p) => p + case Dummy1790(p) => p + case Dummy1791(p) => p + case Dummy1792(p) => p + case Dummy1793(p) => p + case Dummy1794(p) => p + case Dummy1795(p) => p + case Dummy1796(p) => p + case Dummy1797(p) => p + case Dummy1798(p) => p + case Dummy1799(p) => p + case Dummy1800(p) => p + case Dummy1801(p) => p + case Dummy1802(p) => p + case Dummy1803(p) => p + case Dummy1804(p) => p + case Dummy1805(p) => p + case Dummy1806(p) => p + case Dummy1807(p) => p + case Dummy1808(p) => p + case Dummy1809(p) => p + case Dummy1810(p) => p + case Dummy1811(p) => p + case Dummy1812(p) => p + case Dummy1813(p) => p + case Dummy1814(p) => p + case Dummy1815(p) => p + case Dummy1816(p) => p + case Dummy1817(p) => p + case Dummy1818(p) => p + case Dummy1819(p) => p + case Dummy1820(p) => p + case Dummy1821(p) => p + case Dummy1822(p) => p + case Dummy1823(p) => p + case Dummy1824(p) => p + case Dummy1825(p) => p + case Dummy1826(p) => p + case Dummy1827(p) => p + case Dummy1828(p) => p + case Dummy1829(p) => p + case Dummy1830(p) => p + case Dummy1831(p) => p + case Dummy1832(p) => p + case Dummy1833(p) => p + case Dummy1834(p) => p + case Dummy1835(p) => p + case Dummy1836(p) => p + case Dummy1837(p) => p + case Dummy1838(p) => p + case Dummy1839(p) => p + case Dummy1840(p) => p + case Dummy1841(p) => p + case Dummy1842(p) => p + case Dummy1843(p) => p + case Dummy1844(p) => p + case Dummy1845(p) => p + case Dummy1846(p) => p + case Dummy1847(p) => p + case Dummy1848(p) => p + case Dummy1849(p) => p + case Dummy1850(p) => p + case Dummy1851(p) => p + case Dummy1852(p) => p + case Dummy1853(p) => p + case Dummy1854(p) => p + case Dummy1855(p) => p + case Dummy1856(p) => p + case Dummy1857(p) => p + case Dummy1858(p) => p + case Dummy1859(p) => p + case Dummy1860(p) => p + case Dummy1861(p) => p + case Dummy1862(p) => p + case Dummy1863(p) => p + case Dummy1864(p) => p + case Dummy1865(p) => p + case Dummy1866(p) => p + case Dummy1867(p) => p + case Dummy1868(p) => p + case Dummy1869(p) => p + case Dummy1870(p) => p + case Dummy1871(p) => p + case Dummy1872(p) => p + case Dummy1873(p) => p + case Dummy1874(p) => p + case Dummy1875(p) => p + case Dummy1876(p) => p + case Dummy1877(p) => p + case Dummy1878(p) => p + case Dummy1879(p) => p + case Dummy1880(p) => p + case Dummy1881(p) => p + case Dummy1882(p) => p + case Dummy1883(p) => p + case Dummy1884(p) => p + case Dummy1885(p) => p + case Dummy1886(p) => p + case Dummy1887(p) => p + case Dummy1888(p) => p + case Dummy1889(p) => p + case Dummy1890(p) => p + case Dummy1891(p) => p + case Dummy1892(p) => p + case Dummy1893(p) => p + case Dummy1894(p) => p + case Dummy1895(p) => p + case Dummy1896(p) => p + case Dummy1897(p) => p + case Dummy1898(p) => p + case Dummy1899(p) => p + case Dummy1900(p) => p + case Dummy1901(p) => p + case Dummy1902(p) => p + case Dummy1903(p) => p + case Dummy1904(p) => p + case Dummy1905(p) => p + case Dummy1906(p) => p + case Dummy1907(p) => p + case Dummy1908(p) => p + case Dummy1909(p) => p + case Dummy1910(p) => p + case Dummy1911(p) => p + case Dummy1912(p) => p + case Dummy1913(p) => p + case Dummy1914(p) => p + case Dummy1915(p) => p + case Dummy1916(p) => p + case Dummy1917(p) => p + case Dummy1918(p) => p + case Dummy1919(p) => p + case Dummy1920(p) => p + case Dummy1921(p) => p + case Dummy1922(p) => p + case Dummy1923(p) => p + case Dummy1924(p) => p + case Dummy1925(p) => p + case Dummy1926(p) => p + case Dummy1927(p) => p + case Dummy1928(p) => p + case Dummy1929(p) => p + case Dummy1930(p) => p + case Dummy1931(p) => p + case Dummy1932(p) => p + case Dummy1933(p) => p + case Dummy1934(p) => p + case Dummy1935(p) => p + case Dummy1936(p) => p + case Dummy1937(p) => p + case Dummy1938(p) => p + case Dummy1939(p) => p + case Dummy1940(p) => p + case Dummy1941(p) => p + case Dummy1942(p) => p + case Dummy1943(p) => p + case Dummy1944(p) => p + case Dummy1945(p) => p + case Dummy1946(p) => p + case Dummy1947(p) => p + case Dummy1948(p) => p + case Dummy1949(p) => p + case Dummy1950(p) => p + case Dummy1951(p) => p + case Dummy1952(p) => p + case Dummy1953(p) => p + case Dummy1954(p) => p + case Dummy1955(p) => p + case Dummy1956(p) => p + case Dummy1957(p) => p + case Dummy1958(p) => p + case Dummy1959(p) => p + case Dummy1960(p) => p + case Dummy1961(p) => p + case Dummy1962(p) => p + case Dummy1963(p) => p + case Dummy1964(p) => p + case Dummy1965(p) => p + case Dummy1966(p) => p + case Dummy1967(p) => p + case Dummy1968(p) => p + case Dummy1969(p) => p + case Dummy1970(p) => p + case Dummy1971(p) => p + case Dummy1972(p) => p + case Dummy1973(p) => p + case Dummy1974(p) => p + case Dummy1975(p) => p + case Dummy1976(p) => p + case Dummy1977(p) => p + case Dummy1978(p) => p + case Dummy1979(p) => p + case Dummy1980(p) => p + case Dummy1981(p) => p + case Dummy1982(p) => p + case Dummy1983(p) => p + case Dummy1984(p) => p + case Dummy1985(p) => p + case Dummy1986(p) => p + case Dummy1987(p) => p + case Dummy1988(p) => p + case Dummy1989(p) => p + case Dummy1990(p) => p + case Dummy1991(p) => p + case Dummy1992(p) => p + case Dummy1993(p) => p + case Dummy1994(p) => p + case Dummy1995(p) => p + case Dummy1996(p) => p + case Dummy1997(p) => p + case Dummy1998(p) => p + case Dummy1999(p) => p +} +} diff --git a/test/disabled/presentation/akka/src/akka/dispatch/Dispatchers.scala b/test/disabled/presentation/akka/src/akka/dispatch/Dispatchers.scala index 7dd1bf6218..a567d0bcb0 100644 --- a/test/disabled/presentation/akka/src/akka/dispatch/Dispatchers.scala +++ b/test/disabled/presentation/akka/src/akka/dispatch/Dispatchers.scala @@ -89,7 +89,7 @@ object Dispatchers { new ThreadBasedDispatcher(actor, mailboxCapacity, pushTimeOut) /** - * Creates a executor-based event-driven dispatcher serving multiple (millions) of actors through a thread pool. + * Creates an executor-based event-driven dispatcher serving multiple (millions) of actors through a thread pool. * <p/> * Has a fluent builder interface for configuring its semantics. */ @@ -97,7 +97,7 @@ object Dispatchers { ThreadPoolConfigDispatcherBuilder(config => new ExecutorBasedEventDrivenDispatcher(name, config), ThreadPoolConfig()) /** - * Creates a executor-based event-driven dispatcher serving multiple (millions) of actors through a thread pool. + * Creates an executor-based event-driven dispatcher serving multiple (millions) of actors through a thread pool. * <p/> * Has a fluent builder interface for configuring its semantics. */ @@ -106,7 +106,7 @@ object Dispatchers { new ExecutorBasedEventDrivenDispatcher(name, throughput, THROUGHPUT_DEADLINE_TIME_MILLIS, mailboxType, config), ThreadPoolConfig()) /** - * Creates a executor-based event-driven dispatcher serving multiple (millions) of actors through a thread pool. + * Creates an executor-based event-driven dispatcher serving multiple (millions) of actors through a thread pool. * <p/> * Has a fluent builder interface for configuring its semantics. */ @@ -115,7 +115,7 @@ object Dispatchers { new ExecutorBasedEventDrivenDispatcher(name, throughput, throughputDeadlineMs, mailboxType, config), ThreadPoolConfig()) /** - * Creates a executor-based event-driven dispatcher, with work-stealing, serving multiple (millions) of actors through a thread pool. + * Creates an executor-based event-driven dispatcher, with work-stealing, serving multiple (millions) of actors through a thread pool. * <p/> * Has a fluent builder interface for configuring its semantics. */ @@ -123,7 +123,7 @@ object Dispatchers { ThreadPoolConfigDispatcherBuilder(config => new ExecutorBasedEventDrivenWorkStealingDispatcher(name, config), ThreadPoolConfig()) /** - * Creates a executor-based event-driven dispatcher, with work-stealing, serving multiple (millions) of actors through a thread pool. + * Creates an executor-based event-driven dispatcher, with work-stealing, serving multiple (millions) of actors through a thread pool. * <p/> * Has a fluent builder interface for configuring its semantics. */ @@ -132,7 +132,7 @@ object Dispatchers { new ExecutorBasedEventDrivenWorkStealingDispatcher(name, throughput, THROUGHPUT_DEADLINE_TIME_MILLIS, MAILBOX_TYPE, config), ThreadPoolConfig()) /** - * Creates a executor-based event-driven dispatcher, with work-stealing, serving multiple (millions) of actors through a thread pool. + * Creates an executor-based event-driven dispatcher, with work-stealing, serving multiple (millions) of actors through a thread pool. * <p/> * Has a fluent builder interface for configuring its semantics. */ @@ -141,7 +141,7 @@ object Dispatchers { new ExecutorBasedEventDrivenWorkStealingDispatcher(name, throughput, THROUGHPUT_DEADLINE_TIME_MILLIS, mailboxType, config), ThreadPoolConfig()) /** - * Creates a executor-based event-driven dispatcher, with work-stealing, serving multiple (millions) of actors through a thread pool. + * Creates an executor-based event-driven dispatcher, with work-stealing, serving multiple (millions) of actors through a thread pool. * <p/> * Has a fluent builder interface for configuring its semantics. */ @@ -224,4 +224,4 @@ class ExecutorBasedEventDrivenWorkStealingDispatcherConfigurator extends Message mailboxType(config), threadPoolConfig)).build } -}
\ No newline at end of file +} diff --git a/test/disabled/run/t6987.check b/test/disabled/run/t6987.check new file mode 100644 index 0000000000..86fc96c679 --- /dev/null +++ b/test/disabled/run/t6987.check @@ -0,0 +1 @@ +got successful verbose results! diff --git a/test/disabled/run/t6987.scala b/test/disabled/run/t6987.scala new file mode 100644 index 0000000000..37e91d61ae --- /dev/null +++ b/test/disabled/run/t6987.scala @@ -0,0 +1,43 @@ +import java.io._ +import tools.nsc.{CompileClient, CompileServer} +import java.util.concurrent.{CountDownLatch, TimeUnit} + +object Test extends App { + val startupLatch = new CountDownLatch(1) + // we have to explicitly launch our server because when the client launches a server it uses + // the "scala" shell command meaning whatever version of scala (and whatever version of libraries) + // happens to be in the path gets used + val t = new Thread(new Runnable { + def run() = { + CompileServer.execute(() => startupLatch.countDown(), Array[String]()) + } + }) + t setDaemon true + t.start() + if (!startupLatch.await(2, TimeUnit.MINUTES)) + sys error "Timeout waiting for server to start" + + val baos = new ByteArrayOutputStream() + val ps = new PrintStream(baos) + + val success = (scala.Console withOut ps) { + // shut down the server via the client using the verbose flag + CompileClient.process(Array("-shutdown", "-verbose")) + } + + // now make sure we got success and a verbose result + val msg = baos.toString() + + if (success) { + if (msg contains "Settings after normalizing paths") { + println("got successful verbose results!") + } else { + println("did not get the string expected, full results were:") + println(msg) + } + } else { + println("got a failure. Full results were:") + println(msg) + } + scala.Console.flush +} diff --git a/test/files/disabled/run/t4602.scala b/test/files/disabled/run/t4602.scala new file mode 100644 index 0000000000..73ba231ccf --- /dev/null +++ b/test/files/disabled/run/t4602.scala @@ -0,0 +1,57 @@ +import java.io.{File, FileOutputStream, BufferedOutputStream, FileWriter, ByteArrayOutputStream, PrintStream} +import tools.nsc.{CompileClient, CompileServer} +import java.util.concurrent.{CountDownLatch, TimeUnit} + +object Test extends App { + val startupLatch = new CountDownLatch(1) + // we have to explicitly launch our server because when the client launches a server it uses + // the "scala" shell command meaning whatever version of scala (and whatever version of libraries) + // happens to be in the path gets used + val t = new Thread(new Runnable { + def run() = { + CompileServer.execute(() => startupLatch.countDown(), Array[String]()) + } + }) + t setDaemon true + t.start() + if (!startupLatch.await(2, TimeUnit.MINUTES)) + sys error "Timeout waiting for server to start" + + val baos = new ByteArrayOutputStream() + val ps = new PrintStream(baos) + + val outdir = scala.reflect.io.Directory(sys.props("partest.output")) + + val dirNameAndPath = (1 to 2).toList map {number => + val name = s"Hello${number}" + val dir = outdir / number.toString + (dir, name, dir / s"${name}.scala") + } + + dirNameAndPath foreach {case (dir, name, path) => + dir.createDirectory() + val file = path.jfile + val out = new FileWriter(file) + try + out.write(s"object ${name}\n") + finally + out.close + } + + val success = (scala.Console withOut ps) { + dirNameAndPath foreach {case (path, name, _) => + CompileClient.process(Array("-verbose", "-current-dir", path.toString, s"${name}.scala")) + } + + CompileClient.process(Array("-shutdown")) + } + + // now make sure we got success and the correct normalized paths + val msg = baos.toString() + + assert(success, s"got a failure. Full results were: \n${msg}") + dirNameAndPath foreach {case (_, _, path) => + val expected = s"Input files after normalizing paths: ${path}" + assert(msg contains expected, s"could not find '${expected}' in output. Full results were: \n${msg}") + } +} diff --git a/test/files/jvm/bytecode-test-example.check b/test/files/jvm/bytecode-test-example.check new file mode 100644 index 0000000000..0cfbf08886 --- /dev/null +++ b/test/files/jvm/bytecode-test-example.check @@ -0,0 +1 @@ +2 diff --git a/test/files/jvm/bytecode-test-example/Foo_1.scala b/test/files/jvm/bytecode-test-example/Foo_1.scala new file mode 100644 index 0000000000..4f679d156f --- /dev/null +++ b/test/files/jvm/bytecode-test-example/Foo_1.scala @@ -0,0 +1,9 @@ +class Foo_1 { + def foo(x: AnyRef): Int = { + val bool = x == null + if (x != null) + 1 + else + 0 + } +} diff --git a/test/files/jvm/bytecode-test-example/Test.scala b/test/files/jvm/bytecode-test-example/Test.scala new file mode 100644 index 0000000000..d668059cb7 --- /dev/null +++ b/test/files/jvm/bytecode-test-example/Test.scala @@ -0,0 +1,32 @@ +import scala.tools.partest.BytecodeTest + +import scala.tools.nsc.util.JavaClassPath +import java.io.InputStream +import scala.tools.asm +import asm.ClassReader +import asm.tree.{ClassNode, InsnList} +import scala.collection.JavaConverters._ + +object Test extends BytecodeTest { + def show: Unit = { + val classNode = loadClassNode("Foo_1") + val methodNode = getMethod(classNode, "foo") + println(countNullChecks(methodNode.instructions)) + } + + def countNullChecks(insnList: InsnList): Int = { + /** Is given instruction a null check? + * NOTE + * This will detect direct null compparsion as in + * if (x == null) ... + * and not indirect as in + * val foo = null + * if (x == foo) ... + */ + def isNullCheck(node: asm.tree.AbstractInsnNode): Boolean = { + val opcode = node.getOpcode + (opcode == asm.Opcodes.IFNULL) || (opcode == asm.Opcodes.IFNONNULL) + } + insnList.iterator.asScala.count(isNullCheck) + } +} diff --git a/test/files/jvm/manifests-new.scala b/test/files/jvm/manifests-new.scala index f730be67bb..3937fdec69 100644 --- a/test/files/jvm/manifests-new.scala +++ b/test/files/jvm/manifests-new.scala @@ -56,7 +56,7 @@ object Test1 extends TestUtil { } object Test2 { - import scala.util.Marshal._ + import Marshal._ println("()="+load[Unit](dump(()))) println("true="+load[Boolean](dump(true))) println("a="+load[Char](dump('a'))) @@ -88,6 +88,38 @@ object Test2 { println() } +object Marshal { + import java.io._ + import scala.reflect.ClassTag + + def dump[A](o: A)(implicit t: ClassTag[A]): Array[Byte] = { + val ba = new ByteArrayOutputStream(512) + val out = new ObjectOutputStream(ba) + out.writeObject(t) + out.writeObject(o) + out.close() + ba.toByteArray() + } + + @throws(classOf[IOException]) + @throws(classOf[ClassCastException]) + @throws(classOf[ClassNotFoundException]) + def load[A](buffer: Array[Byte])(implicit expected: ClassTag[A]): A = { + val in = new ObjectInputStream(new ByteArrayInputStream(buffer)) + val found = in.readObject.asInstanceOf[ClassTag[_]] + try { + found.runtimeClass.asSubclass(expected.runtimeClass) + in.readObject.asInstanceOf[A] + } catch { + case _: ClassCastException => + in.close() + throw new ClassCastException("type mismatch;"+ + "\n found : "+found+ + "\n required: "+expected) + } + } +} + trait TestUtil { import java.io._ def write[A](o: A): Array[Byte] = { diff --git a/test/files/jvm/manifests-old.scala b/test/files/jvm/manifests-old.scala index 241966fd9d..bb1928f094 100644 --- a/test/files/jvm/manifests-old.scala +++ b/test/files/jvm/manifests-old.scala @@ -55,7 +55,7 @@ object Test1 extends TestUtil { } object Test2 { - import scala.util.Marshal._ + import Marshal._ println("()="+load[Unit](dump(()))) println("true="+load[Boolean](dump(true))) println("a="+load[Char](dump('a'))) @@ -87,6 +87,38 @@ object Test2 { println() } +object Marshal { + import java.io._ + import scala.reflect.ClassTag + + def dump[A](o: A)(implicit t: ClassTag[A]): Array[Byte] = { + val ba = new ByteArrayOutputStream(512) + val out = new ObjectOutputStream(ba) + out.writeObject(t) + out.writeObject(o) + out.close() + ba.toByteArray() + } + + @throws(classOf[IOException]) + @throws(classOf[ClassCastException]) + @throws(classOf[ClassNotFoundException]) + def load[A](buffer: Array[Byte])(implicit expected: ClassTag[A]): A = { + val in = new ObjectInputStream(new ByteArrayInputStream(buffer)) + val found = in.readObject.asInstanceOf[ClassTag[_]] + try { + found.runtimeClass.asSubclass(expected.runtimeClass) + in.readObject.asInstanceOf[A] + } catch { + case _: ClassCastException => + in.close() + throw new ClassCastException("type mismatch;"+ + "\n found : "+found+ + "\n required: "+expected) + } + } +} + trait TestUtil { import java.io._ def write[A](o: A): Array[Byte] = { diff --git a/test/files/jvm/scala-concurrent-tck.scala b/test/files/jvm/scala-concurrent-tck.scala index b529bca38a..b2b4183564 100644 --- a/test/files/jvm/scala-concurrent-tck.scala +++ b/test/files/jvm/scala-concurrent-tck.scala @@ -134,6 +134,12 @@ trait FutureCallbacks extends TestBase { assert(false) } } + + def testThatNestedCallbacksDoNotYieldStackOverflow(): Unit = { + val promise = Promise[Int] + (0 to 10000).map(Future(_)).foldLeft(promise.future)((f1, f2) => f2.flatMap(i => f1)) + promise.success(-1) + } testOnSuccess() testOnSuccessWhenCompleted() @@ -143,6 +149,7 @@ trait FutureCallbacks extends TestBase { // testOnFailureWhenSpecialThrowable(6, new scala.util.control.ControlThrowable { }) //TODO: this test is currently problematic, because NonFatal does not match InterruptedException //testOnFailureWhenSpecialThrowable(7, new InterruptedException) + testThatNestedCallbacksDoNotYieldStackOverflow() testOnFailureWhenTimeoutException() } diff --git a/test/files/jvm/throws-annot-from-java.check b/test/files/jvm/throws-annot-from-java.check new file mode 100644 index 0000000000..be3ba412f8 --- /dev/null +++ b/test/files/jvm/throws-annot-from-java.check @@ -0,0 +1,47 @@ +Type in expressions to have them evaluated. +Type :help for more information. + +scala> :power +** Power User mode enabled - BEEP WHIR GYVE ** +** :phase has been set to 'typer'. ** +** scala.tools.nsc._ has been imported ** +** global._, definitions._ also imported ** +** Try :help, :vals, power.<tab> ** + +scala> :paste +// Entering paste mode (ctrl-D to finish) + +{ + val clazz = rootMirror.getClassByName(newTermName("test.ThrowsDeclaration_2")); + { + val method = clazz.info.member(newTermName("foo")) + val throwsAnn = method.annotations.head + val atp = throwsAnn.atp + println("foo") + println("atp.typeParams.isEmpty: " + atp.typeParams.isEmpty) + println(throwsAnn) + } + println + + { + val method = clazz.info.member(newTermName("bar")) + val throwsAnn = method.annotations.head + val Literal(const) = throwsAnn.args.head + val tp = const.typeValue + println("bar") + println("tp.typeParams.isEmpty: " + tp.typeParams.isEmpty) + println(throwsAnn) + } +} + +// Exiting paste mode, now interpreting. + +foo +atp.typeParams.isEmpty: true +throws[IllegalStateException](classOf[java.lang.IllegalStateException]) + +bar +tp.typeParams.isEmpty: true +throws[test.PolymorphicException[_]](classOf[test.PolymorphicException]) + +scala> diff --git a/test/files/jvm/throws-annot-from-java/PolymorphicException_1.scala b/test/files/jvm/throws-annot-from-java/PolymorphicException_1.scala new file mode 100644 index 0000000000..58fa536f0b --- /dev/null +++ b/test/files/jvm/throws-annot-from-java/PolymorphicException_1.scala @@ -0,0 +1,3 @@ +package test + +class PolymorphicException[T] extends Exception diff --git a/test/files/jvm/throws-annot-from-java/Test_3.scala b/test/files/jvm/throws-annot-from-java/Test_3.scala new file mode 100644 index 0000000000..de1d984573 --- /dev/null +++ b/test/files/jvm/throws-annot-from-java/Test_3.scala @@ -0,0 +1,29 @@ +import scala.tools.partest.ReplTest + +object Test extends ReplTest { + def code = """:power +:paste +{ + val clazz = rootMirror.getClassByName(newTermName("test.ThrowsDeclaration_2")); + { + val method = clazz.info.member(newTermName("foo")) + val throwsAnn = method.annotations.head + val atp = throwsAnn.atp + println("foo") + println("atp.typeParams.isEmpty: " + atp.typeParams.isEmpty) + println(throwsAnn) + } + println + + { + val method = clazz.info.member(newTermName("bar")) + val throwsAnn = method.annotations.head + val Literal(const) = throwsAnn.args.head + val tp = const.typeValue + println("bar") + println("tp.typeParams.isEmpty: " + tp.typeParams.isEmpty) + println(throwsAnn) + } +} +""" +} diff --git a/test/files/jvm/throws-annot-from-java/ThrowsDeclaration_2.java b/test/files/jvm/throws-annot-from-java/ThrowsDeclaration_2.java new file mode 100644 index 0000000000..3708fe626b --- /dev/null +++ b/test/files/jvm/throws-annot-from-java/ThrowsDeclaration_2.java @@ -0,0 +1,6 @@ +package test; + +public class ThrowsDeclaration_2 { + public void foo() throws IllegalStateException {}; + public void bar() throws PolymorphicException {}; +} diff --git a/test/files/neg/annot-nonconst.check b/test/files/neg/annot-nonconst.check index b43e58a0ca..5b3da7a13c 100644 --- a/test/files/neg/annot-nonconst.check +++ b/test/files/neg/annot-nonconst.check @@ -8,7 +8,7 @@ make your annotation visible at runtime. If that is what you want, you must write the annotation class in Java. class Ann2(value: String) extends annotation.ClassfileAnnotation ^ -annot-nonconst.scala:6: error: annotation argument needs to be a constant; found: n +annot-nonconst.scala:6: error: annotation argument needs to be a constant; found: Test.this.n @Length(n) def foo = "foo" ^ annot-nonconst.scala:7: error: annotation argument cannot be null diff --git a/test/files/neg/catch-all.check b/test/files/neg/catch-all.check index 2d58dd99a8..aaf51480c3 100644 --- a/test/files/neg/catch-all.check +++ b/test/files/neg/catch-all.check @@ -1,13 +1,10 @@ -catch-all.scala:2: warning: This catches all Throwables, which often has undesirable consequences. -If intentional, use `case _ : Throwable` to clear this warning. +catch-all.scala:2: warning: This catches all Throwables. If this is really intended, use `case _ : Throwable` to clear this warning. try { "warn" } catch { case _ => } ^ -catch-all.scala:4: warning: This catches all Throwables, which often has undesirable consequences. -If intentional, use `case x : Throwable` to clear this warning. +catch-all.scala:4: warning: This catches all Throwables. If this is really intended, use `case x : Throwable` to clear this warning. try { "warn" } catch { case x => } ^ -catch-all.scala:6: warning: This catches all Throwables, which often has undesirable consequences. -If intentional, use `case x : Throwable` to clear this warning. +catch-all.scala:6: warning: This catches all Throwables. If this is really intended, use `case x : Throwable` to clear this warning. try { "warn" } catch { case _: RuntimeException => ; case x => } ^ error: No warnings can be incurred under -Xfatal-warnings. diff --git a/test/files/neg/javaConversions-2.10-ambiguity.check b/test/files/neg/javaConversions-2.10-ambiguity.check deleted file mode 100644 index c064a22964..0000000000 --- a/test/files/neg/javaConversions-2.10-ambiguity.check +++ /dev/null @@ -1,6 +0,0 @@ -javaConversions-2.10-ambiguity.scala:8: error: type mismatch; - found : scala.collection.concurrent.Map[String,String] - required: scala.collection.mutable.ConcurrentMap[String,String] - assertType[mutable.ConcurrentMap[String, String]](a) - ^ -one error found diff --git a/test/files/neg/names-defaults-neg.check b/test/files/neg/names-defaults-neg.check index 6f9dc7d127..f6bd703e1f 100644 --- a/test/files/neg/names-defaults-neg.check +++ b/test/files/neg/names-defaults-neg.check @@ -134,9 +134,17 @@ names-defaults-neg.scala:144: error: variable definition needs type because 'x' names-defaults-neg.scala:147: error: variable definition needs type because 'x' is used as a named argument in its body. object t6 { var x = t.f(x = 1) } ^ +names-defaults-neg.scala:147: warning: type-checking the invocation of method f checks if the named argument expression 'x = ...' is a valid assignment +in the current scope. The resulting type inference error (see above) can be fixed by providing an explicit type in the local definition for x. + object t6 { var x = t.f(x = 1) } + ^ names-defaults-neg.scala:150: error: variable definition needs type because 'x' is used as a named argument in its body. class t9 { var x = t.f(x = 1) } ^ +names-defaults-neg.scala:150: warning: type-checking the invocation of method f checks if the named argument expression 'x = ...' is a valid assignment +in the current scope. The resulting type inference error (see above) can be fixed by providing an explicit type in the local definition for x. + class t9 { var x = t.f(x = 1) } + ^ names-defaults-neg.scala:164: error: variable definition needs type because 'x' is used as a named argument in its body. def u3 { var x = u.f(x = 1) } ^ @@ -156,5 +164,5 @@ in the current scope. The resulting type inference error (see above) can be fixe names-defaults-neg.scala:180: error: reference to x is ambiguous; it is both a method parameter and a variable in scope. class u18 { var x: Int = u.f(x = 1) } ^ -two warnings found +four warnings found 41 errors found diff --git a/test/files/neg/nested-annotation.check b/test/files/neg/nested-annotation.check new file mode 100644 index 0000000000..ca263943fe --- /dev/null +++ b/test/files/neg/nested-annotation.check @@ -0,0 +1,10 @@ +nested-annotation.scala:3: warning: Implementation restriction: subclassing Classfile does not +make your annotation visible at runtime. If that is what +you want, you must write the annotation class in Java. +class ComplexAnnotation(val value: Annotation) extends ClassfileAnnotation + ^ +nested-annotation.scala:8: error: nested classfile annotations must be defined in java; found: inline + @ComplexAnnotation(new inline) def bippy(): Int = 1 + ^ +one warning found +one error found diff --git a/test/files/neg/nested-annotation.scala b/test/files/neg/nested-annotation.scala new file mode 100644 index 0000000000..35c0cd3b75 --- /dev/null +++ b/test/files/neg/nested-annotation.scala @@ -0,0 +1,9 @@ +import annotation._ + +class ComplexAnnotation(val value: Annotation) extends ClassfileAnnotation + +class A { + // It's hard to induce this error because @ComplexAnnotation(@inline) is a parse + // error so it never gets out of the parser, but: + @ComplexAnnotation(new inline) def bippy(): Int = 1 +} diff --git a/test/files/neg/nonlocal-warning.check b/test/files/neg/nonlocal-warning.check index 67b3b10095..5202df655a 100644 --- a/test/files/neg/nonlocal-warning.check +++ b/test/files/neg/nonlocal-warning.check @@ -1,5 +1,4 @@ -nonlocal-warning.scala:4: warning: This catches all Throwables, which often has undesirable consequences. -If intentional, use `case x : Throwable` to clear this warning. +nonlocal-warning.scala:4: warning: This catches all Throwables. If this is really intended, use `case x : Throwable` to clear this warning. catch { case x => 11 } ^ nonlocal-warning.scala:2: warning: catch block may intercept non-local return from method foo diff --git a/test/files/neg/t2641.check b/test/files/neg/t2641.check index 909f4f0cf3..a0a960f0ea 100644 --- a/test/files/neg/t2641.check +++ b/test/files/neg/t2641.check @@ -1,15 +1,7 @@ t2641.scala:18: error: wrong number of type arguments for ManagedSeq, should be 2 with TraversableViewLike[A, ManagedSeqStrict[A], ManagedSeq[A]] ^ -t2641.scala:16: error: illegal inheritance; - self-type ManagedSeq does not conform to ManagedSeqStrict[A]'s selftype ManagedSeqStrict[A] - extends ManagedSeqStrict[A] - ^ -t2641.scala:17: error: illegal inheritance; - self-type ManagedSeq does not conform to scala.collection.TraversableView[A,ManagedSeqStrict[A]]'s selftype scala.collection.TraversableView[A,ManagedSeqStrict[A]] - with TraversableView[A, ManagedSeqStrict[A]] - ^ -t2641.scala:27: error: value managedIterator is not a member of ManagedSeq +t2641.scala:27: error: value managedIterator is not a member of ManagedSeq[A,Coll] override def managedIterator = self.managedIterator slice (from, until) ^ -four errors found +two errors found diff --git a/test/files/neg/t4851.check b/test/files/neg/t4851.check index 0fd66b9efe..4f2919807e 100644 --- a/test/files/neg/t4851.check +++ b/test/files/neg/t4851.check @@ -40,6 +40,12 @@ S.scala:10: warning: Adapting argument list by inserting (): this is unlikely to after adaptation: new J2((): Unit) val z2 = new J2() ^ +S.scala:14: warning: Adapting argument list by creating a 3-tuple: this may not be what you want. + signature: Test.anyId(a: Any): Any + given arguments: 1, 2, 3 + after adaptation: Test.anyId((1, 2, 3): (Int, Int, Int)) + val w1 = anyId(1, 2 ,3) + ^ error: No warnings can be incurred under -Xfatal-warnings. -7 warnings found +8 warnings found one error found diff --git a/test/files/neg/t4851/S.scala b/test/files/neg/t4851/S.scala index 1550892967..0a442ac7a9 100644 --- a/test/files/neg/t4851/S.scala +++ b/test/files/neg/t4851/S.scala @@ -10,6 +10,9 @@ object Test { val z2 = new J2() val z3 = new J2(()) + def anyId(a: Any) = a + val w1 = anyId(1, 2 ,3) + def main(args: Array[String]): Unit = { println(x1) println(x2) @@ -19,5 +22,7 @@ object Test { println(z1) println(z2) println(z3) + + println(w1) } } diff --git a/test/files/neg/t5182.check b/test/files/neg/t5182.check new file mode 100644 index 0000000000..3161f92680 --- /dev/null +++ b/test/files/neg/t5182.check @@ -0,0 +1,7 @@ +t5182.scala:2: error: unknown annotation argument name: qwe + @java.lang.Deprecated(qwe = "wer") def ok(q:Int) = 1 + ^ +t5182.scala:3: error: classfile annotation arguments have to be supplied as named arguments + @java.lang.Deprecated("wer") def whereAmI(q:Int) = 1 + ^ +two errors found diff --git a/test/files/neg/t5182.flags b/test/files/neg/t5182.flags new file mode 100644 index 0000000000..85d8eb2ba2 --- /dev/null +++ b/test/files/neg/t5182.flags @@ -0,0 +1 @@ +-Xfatal-warnings diff --git a/test/files/neg/t5182.scala b/test/files/neg/t5182.scala new file mode 100644 index 0000000000..0687e99efb --- /dev/null +++ b/test/files/neg/t5182.scala @@ -0,0 +1,5 @@ +class test { + @java.lang.Deprecated(qwe = "wer") def ok(q:Int) = 1 + @java.lang.Deprecated("wer") def whereAmI(q:Int) = 1 + @java.lang.Deprecated() def bippy(q:Int) = 1 +} diff --git a/test/files/neg/t5543.check b/test/files/neg/t5543.check new file mode 100644 index 0000000000..b61de0f78b --- /dev/null +++ b/test/files/neg/t5543.check @@ -0,0 +1,10 @@ +t5543.scala:3: error: not found: type T + def this(x: T) { this() } + ^ +t5543.scala:11: error: not found: value x + def this(a: Int, b: Int = x) { + ^ +t5543.scala:18: error: not found: value x + def this(a: Int = x) { this() } + ^ +three errors found diff --git a/test/files/neg/t5543.scala b/test/files/neg/t5543.scala new file mode 100644 index 0000000000..4e03e6e114 --- /dev/null +++ b/test/files/neg/t5543.scala @@ -0,0 +1,19 @@ +class C1 { + type T + def this(x: T) { this() } +} + +class C1a[T] { + def this(x: T) { this() } // works, no error here +} + +class C2(x: Int) { + def this(a: Int, b: Int = x) { + this(b) + } +} + +class C3 { + val x = 0 + def this(a: Int = x) { this() } +} diff --git a/test/files/neg/t5753/Impls$class.class b/test/files/neg/t5753/Impls$class.class Binary files differdeleted file mode 100644 index 476329174e..0000000000 --- a/test/files/neg/t5753/Impls$class.class +++ /dev/null diff --git a/test/files/neg/t5753/Impls.class b/test/files/neg/t5753/Impls.class Binary files differdeleted file mode 100644 index dfcf89ed44..0000000000 --- a/test/files/neg/t5753/Impls.class +++ /dev/null diff --git a/test/files/neg/t6040.check b/test/files/neg/t6040.check index f6757f97e3..f91df0c46d 100644 --- a/test/files/neg/t6040.check +++ b/test/files/neg/t6040.check @@ -1,7 +1,9 @@ -error: extension of type scala.Dynamic needs to be enabled +t6040.scala:1: error: extension of type scala.Dynamic needs to be enabled by making the implicit value language.dynamics visible. This can be achieved by adding the import clause 'import scala.language.dynamics' or by setting the compiler option -language:dynamics. See the Scala docs for value scala.language.dynamics for a discussion why the feature needs to be explicitly enabled. +class X extends Dynamic + ^ one error found diff --git a/test/files/neg/t6083.check b/test/files/neg/t6083.check new file mode 100644 index 0000000000..c9b5ba05d3 --- /dev/null +++ b/test/files/neg/t6083.check @@ -0,0 +1,10 @@ +t6083.scala:6: warning: Implementation restriction: subclassing Classfile does not +make your annotation visible at runtime. If that is what +you want, you must write the annotation class in Java. +class annot(value: String) extends annotation.ClassfileAnnotation + ^ +t6083.scala:7: error: annotation argument needs to be a constant; found: conv.i2s(101) +@annot(101) class C + ^ +one warning found +one error found diff --git a/test/files/neg/t6083.scala b/test/files/neg/t6083.scala new file mode 100644 index 0000000000..1de18e6527 --- /dev/null +++ b/test/files/neg/t6083.scala @@ -0,0 +1,7 @@ +object conv { + implicit def i2s(i: Int): String = "" +} +import conv._ + +class annot(value: String) extends annotation.ClassfileAnnotation +@annot(101) class C diff --git a/test/files/neg/t6231.check b/test/files/neg/t6231.check new file mode 100644 index 0000000000..b27961d393 --- /dev/null +++ b/test/files/neg/t6231.check @@ -0,0 +1,6 @@ +t6231.scala:4: error: Implementation restriction: local trait Bug$X$1 is unable to automatically capture the +free variable value ev$1 on behalf of anonymous class anonfun$qux$1. You can manually assign it to a val inside the trait, +and refer that that val in anonymous class anonfun$qux$1. For more details, see SI-6231. + def qux = { () => ev } + ^ +one error found diff --git a/test/files/neg/t6231.scala b/test/files/neg/t6231.scala new file mode 100644 index 0000000000..1e5b4e0e1a --- /dev/null +++ b/test/files/neg/t6231.scala @@ -0,0 +1,15 @@ +object Bug { + def bar(ev: Any) = { + trait X { + def qux = { () => ev } + } + new X {}.qux() + + // workaround + trait Y { + val ev2 = ev // manually capture `ev` so that `ev2` is added to the trait interface. + def qux = { () => ev2 } + } + } +} + diff --git a/test/files/neg/t6406-regextract.check b/test/files/neg/t6406-regextract.check index 19425a68b0..4fea66f760 100644 --- a/test/files/neg/t6406-regextract.check +++ b/test/files/neg/t6406-regextract.check @@ -1,6 +1,7 @@ -t6406-regextract.scala:4: warning: method unapplySeq in class Regex is deprecated: Extracting a match result from anything but a CharSequence or Match is deprecated +t6406-regextract.scala:4: error: cannot resolve overloaded unapply List(1) collect { case r(i) => i } ^ -error: No warnings can be incurred under -Xfatal-warnings. -one warning found -one error found +t6406-regextract.scala:4: error: not found: value i + List(1) collect { case r(i) => i } + ^ +two errors found diff --git a/test/files/neg/t6443c.check b/test/files/neg/t6443c.check new file mode 100644 index 0000000000..7cf8d23f4b --- /dev/null +++ b/test/files/neg/t6443c.check @@ -0,0 +1,7 @@ +t6443c.scala:16: error: double definition: +method foo:(d: B.D)(a: Any)(d2: d.type)Unit and +method foo:(d: B.D)(a: Any, d2: d.type)Unit at line 11 +have same type after erasure: (d: B.D, a: Object, d2: B.D)Unit + def foo(d: D)(a: Any)(d2: d.type): Unit = () + ^ +one error found diff --git a/test/files/neg/t6443c.scala b/test/files/neg/t6443c.scala new file mode 100644 index 0000000000..817224e043 --- /dev/null +++ b/test/files/neg/t6443c.scala @@ -0,0 +1,21 @@ +trait A { + type D >: Null <: C + def foo(d: D)(a: Any, d2: d.type): Unit + trait C { + def bar: Unit = foo(null)(null, null) + } +} +object B extends A { + class D extends C + + def foo(d: D)(a: Any, d2: d.type): Unit = () // Bridge method required here! + + // No bridge method should be added, but we'll be happy enough if + // the "same type after erasure" error kicks in before the duplicated + // bridge causes a problem. + def foo(d: D)(a: Any)(d2: d.type): Unit = () +} + +object Test extends App { + new B.D().bar +} diff --git a/test/files/neg/t6666.check b/test/files/neg/t6666.check new file mode 100644 index 0000000000..d0378173ea --- /dev/null +++ b/test/files/neg/t6666.check @@ -0,0 +1,40 @@ +t6666.scala:23: error: Implementation restriction: access of method x$2 in object O1 from anonymous class 2, would require illegal premature access to object O1 + F.byname(x) + ^ +t6666.scala:30: error: Implementation restriction: access of value x$3 in object O2 from anonymous class 3, would require illegal premature access to object O2 + F.byname(x) + ^ +t6666.scala:37: error: Implementation restriction: access of method x$4 in object O3 from anonymous class 4, would require illegal premature access to object O3 + F.hof(() => x) + ^ +t6666.scala:50: error: Implementation restriction: access of method x$6 in class C1 from anonymous class 7, would require illegal premature access to the unconstructed `this` of class C1 + F.byname(x) + ^ +t6666.scala:54: error: Implementation restriction: access of value x$7 in class C2 from anonymous class 8, would require illegal premature access to the unconstructed `this` of class C2 + F.byname(x) + ^ +t6666.scala:58: error: Implementation restriction: access of method x$8 in class C3 from anonymous class 9, would require illegal premature access to the unconstructed `this` of class C3 + F.hof(() => x) + ^ +t6666.scala:62: error: Implementation restriction: access of method x$9 in class C4 from object Nested$5, would require illegal premature access to the unconstructed `this` of class C4 + object Nested { def xx = x} + ^ +t6666.scala:68: error: Implementation restriction: access of method x$10 in class C5 from object Nested$6, would require illegal premature access to the unconstructed `this` of class C5 + object Nested { def xx = x} + ^ +t6666.scala:83: error: Implementation restriction: access of method x$12 in class C11 from anonymous class 12, would require illegal premature access to the unconstructed `this` of class C11 + F.byname(x) + ^ +t6666.scala:102: error: Implementation restriction: access of method x$13 in class C13 from anonymous class 13, would require illegal premature access to the unconstructed `this` of class C13 + F.hof(() => x) + ^ +t6666.scala:111: error: Implementation restriction: access of method x$14 in class C14 from object Nested$7, would require illegal premature access to the unconstructed `this` of class C14 + object Nested { def xx = x} + ^ +t6666.scala:122: error: Implementation restriction: access of method x$15 in class C15 from object Nested$8, would require illegal premature access to the unconstructed `this` of class C15 + object Nested { def xx = x} + ^ +t6666.scala:131: error: Implementation restriction: access of method foo$1 in class COuter from class CInner$1, would require illegal premature access to the unconstructed `this` of class COuter + class CInner extends C({foo}) + ^ +13 errors found diff --git a/test/files/neg/t6666.scala b/test/files/neg/t6666.scala new file mode 100644 index 0000000000..d37ffaf141 --- /dev/null +++ b/test/files/neg/t6666.scala @@ -0,0 +1,132 @@ +class C(a: Any) +object F { + def byname(a: => Any) = println(a) + def hof(a: () => Any) = println(a()) +} + +class COkay extends C(0) { + def this(a: Any) { + this() + def x = "".toString + F.byname(x) + } +} + +// +// The thunk's apply method accesses the MODULE$ +// field before it is set. +// +// 0: getstatic #23; //Field O1$.MODULE$:LO1$; +// 3: invokevirtual #26; //Method O1$.O1$$x$1:()Ljava/lang/String; +object O1 extends C({ + def x = "".toString + F.byname(x) +}) + +// java.lang.NullPointerException +// at O2$$anonfun$$init$$1.apply(<console>:11) +object O2 extends C({ + lazy val x = "".toString + F.byname(x) +}) + +// java.lang.NullPointerException +// at O3$$anonfun$$init$$1.apply(<console>:11) +object O3 extends C({ + def x = "".toString + F.hof(() => x) +}) + +// Okay, the nested classes don't get an outer pointer passed, +// just an extra param for `x: String`. +object O6 extends C({ + val x = "".toString + F.byname(x); F.hof(() => x); (new { val xx = x }.xx) +}) + + +class C1 extends C({ + def x = "".toString + F.byname(x) +}) +class C2 extends C({ + lazy val x = "".toString + F.byname(x) +}) +class C3 extends C({ + def x = "".toString + F.hof(() => x) +}) +class C4 extends C({ + def x = "".toString + object Nested { def xx = x} + Nested.xx +}) +class C5 extends C({ + def x = "".toString + val y = { + object Nested { def xx = x} + Nested.xx + } +}) + +// okay, for same reason as O6 +class C6 extends C({ + val x = "".toString + F.byname(x); F.hof(() => x); (new { val xx = x }.xx) +}) + +class C11(a: Any) { + def this() = { + this({ + def x = "".toString + F.byname(x) + }) + } +} + +// Crashes earlier in lazyVals. +// class C12(a: Any) { +// def this() = { +// this({ +// lazy val x = "".toString +// F.byname(x) +// }) +// } +// } + +class C13(a: Any) { + def this() = { + this({ + def x = "".toString + F.hof(() => x) + }) + } +} + +class C14(a: Any) { + def this() = { + this({ + def x = "".toString + object Nested { def xx = x} + Nested.xx + }) + } +} + +class C15(a: Any) { + def this() = { + this({ + def x = "".toString + val y = { + object Nested { def xx = x} + Nested.xx + } + }) + } +} + +class COuter extends C({ + def foo = 0 + class CInner extends C({foo}) +})
\ No newline at end of file diff --git a/test/files/neg/t6728.check b/test/files/neg/t6728.check new file mode 100644 index 0000000000..d853d6f724 --- /dev/null +++ b/test/files/neg/t6728.check @@ -0,0 +1,4 @@ +t6728.scala:4: error: '(' expected but '}' found. + } + ^ +one error found diff --git a/test/files/neg/t6728.scala b/test/files/neg/t6728.scala new file mode 100644 index 0000000000..ba0b1a0fdf --- /dev/null +++ b/test/files/neg/t6728.scala @@ -0,0 +1,5 @@ +object X { + while(true) { + for + } +} diff --git a/test/files/neg/t6829.check b/test/files/neg/t6829.check index 8ee6d182eb..7c3c66e0f2 100644 --- a/test/files/neg/t6829.check +++ b/test/files/neg/t6829.check @@ -1,6 +1,6 @@ t6829.scala:35: error: type mismatch; found : AgentSimulation.this.state.type (with underlying type G#State) - required: _10.State + required: _9.State lazy val actions: Map[G#Agent,G#Action] = agents.map(a => a -> a.chooseAction(state)).toMap ^ t6829.scala:45: error: trait AgentSimulation takes type parameters @@ -17,12 +17,12 @@ t6829.scala:49: error: not found: value nextState ^ t6829.scala:50: error: type mismatch; found : s.type (with underlying type Any) - required: _54.State where val _54: G + required: _53.State where val _53: G val r = rewards(agent).r(s,a,s2) ^ t6829.scala:51: error: type mismatch; found : s.type (with underlying type Any) - required: _51.State + required: _50.State agent.learn(s,a,s2,r): G#Agent ^ t6829.scala:53: error: not found: value nextState diff --git a/test/files/neg/t6902.check b/test/files/neg/t6902.check new file mode 100644 index 0000000000..ed0ed75303 --- /dev/null +++ b/test/files/neg/t6902.check @@ -0,0 +1,12 @@ +t6902.scala:4: warning: unreachable code + case Some(b) => 3 // no warning was emitted + ^ +t6902.scala:9: warning: unreachable code + case Some(b) => 3 // no warning was emitted + ^ +t6902.scala:21: warning: unreachable code + case 1 => 3 // crash + ^ +error: No warnings can be incurred under -Xfatal-warnings. +three warnings found +one error found diff --git a/test/files/neg/t6902.flags b/test/files/neg/t6902.flags new file mode 100644 index 0000000000..e8fb65d50c --- /dev/null +++ b/test/files/neg/t6902.flags @@ -0,0 +1 @@ +-Xfatal-warnings
\ No newline at end of file diff --git a/test/files/neg/t6902.scala b/test/files/neg/t6902.scala new file mode 100644 index 0000000000..ce5ff8b6fb --- /dev/null +++ b/test/files/neg/t6902.scala @@ -0,0 +1,23 @@ +object Test { + Some(Some(1)) collect { + case Some(a) => 2 + case Some(b) => 3 // no warning was emitted + } + + (Some(1): @ unchecked) match { + case Some(a) => 2 + case Some(b) => 3 // no warning was emitted + } + + // A variation of SI-6011, which eluded the fix + // in 2.10.0. + // + // duplicate keys in SWITCH, can't pick arbitrarily one of them to evict, see SI-6011. + // at scala.reflect.internal.SymbolTable.abort(SymbolTable.scala:50) + // at scala.tools.nsc.Global.abort(Global.scala:249) + // at scala.tools.nsc.backend.jvm.GenASM$JPlainBuilder$jcode$.emitSWITCH(GenASM.scala:1850) + ((1: Byte): @unchecked @annotation.switch) match { + case 1 => 2 + case 1 => 3 // crash + } +} diff --git a/test/files/neg/t6952.check b/test/files/neg/t6952.check new file mode 100644 index 0000000000..f1e1881404 --- /dev/null +++ b/test/files/neg/t6952.check @@ -0,0 +1,13 @@ +t6952.scala:2: error: extension of type scala.Dynamic needs to be enabled +by making the implicit value language.dynamics visible. +This can be achieved by adding the import clause 'import scala.language.dynamics' +or by setting the compiler option -language:dynamics. +See the Scala docs for value scala.language.dynamics for a discussion +why the feature needs to be explicitly enabled. +trait B extends Dynamic + ^ +t6952.scala:3: error: extension of type scala.Dynamic needs to be enabled +by making the implicit value language.dynamics visible. +trait C extends A with Dynamic + ^ +two errors found diff --git a/test/files/neg/t6952.scala b/test/files/neg/t6952.scala new file mode 100644 index 0000000000..257ea3be68 --- /dev/null +++ b/test/files/neg/t6952.scala @@ -0,0 +1,4 @@ +trait A +trait B extends Dynamic +trait C extends A with Dynamic +trait D extends B diff --git a/test/files/neg/t6963.check b/test/files/neg/t6963.check deleted file mode 100644 index cc4a7a48fc..0000000000 --- a/test/files/neg/t6963.check +++ /dev/null @@ -1,4 +0,0 @@ -warning: -Xmigration is deprecated: This setting is no longer useful and will be removed. Please remove it from your build. -error: No warnings can be incurred under -Xfatal-warnings. -one warning found -one error found diff --git a/test/files/neg/t6963.flags b/test/files/neg/t6963.flags deleted file mode 100644 index 0b6d71496a..0000000000 --- a/test/files/neg/t6963.flags +++ /dev/null @@ -1 +0,0 @@ --Xmigration -deprecation -Xfatal-warnings
\ No newline at end of file diff --git a/test/files/neg/t6963.scala b/test/files/neg/t6963.scala deleted file mode 100644 index 4da52764f5..0000000000 --- a/test/files/neg/t6963.scala +++ /dev/null @@ -1,3 +0,0 @@ - -object test { -} diff --git a/test/files/neg/t6963a.check b/test/files/neg/t6963a.check new file mode 100644 index 0000000000..5858e7740a --- /dev/null +++ b/test/files/neg/t6963a.check @@ -0,0 +1,7 @@ +t6963a.scala:4: warning: method scanRight in trait TraversableLike has changed semantics in version 2.9.0: +The behavior of `scanRight` has changed. The previous behavior can be reproduced with scanRight.reverse. + List(1,2,3,4,5).scanRight(0)(_+_) + ^ +error: No warnings can be incurred under -Xfatal-warnings. +one warning found +one error found diff --git a/test/files/neg/t6963a.flags b/test/files/neg/t6963a.flags new file mode 100644 index 0000000000..4c61ed9430 --- /dev/null +++ b/test/files/neg/t6963a.flags @@ -0,0 +1 @@ +-Xfatal-warnings -Xmigration:2.7 diff --git a/test/files/neg/t6963a.scala b/test/files/neg/t6963a.scala new file mode 100644 index 0000000000..b3366b2557 --- /dev/null +++ b/test/files/neg/t6963a.scala @@ -0,0 +1,5 @@ +object Test { + import scala.collection.mutable._ + + List(1,2,3,4,5).scanRight(0)(_+_) +} diff --git a/test/files/pos/annotations.scala b/test/files/pos/annotations.scala index 501e2a6bd3..4832ce4ecd 100644 --- a/test/files/pos/annotations.scala +++ b/test/files/pos/annotations.scala @@ -2,7 +2,7 @@ class ann(i: Int) extends scala.annotation.Annotation class cfann(x: String) extends annotation.ClassfileAnnotation // annotations on abstract types -abstract class C1[@cloneable +T, U, V[_]] +abstract class C1[@annotation.elidable(0) +T, U, V[_]] abstract class C2[@deprecated @ann(1) T <: Number, V] diff --git a/test/files/pos/annotations2.scala b/test/files/pos/annotations2.scala new file mode 100644 index 0000000000..3bce7f8ac4 --- /dev/null +++ b/test/files/pos/annotations2.scala @@ -0,0 +1,31 @@ + +class B[T](x: (T, T)) { + def this(xx: (T, Any, Any)) = this((xx._1, xx._1)) +} +class BAnn[T](x: (T, T)) extends scala.annotation.StaticAnnotation { + def this(xx: (T, Any, Any)) = this((xx._1, xx._1)) +} +class CAnn[T](x: (T, T)) extends scala.annotation.StaticAnnotation { + def this(xx: Class[T]) = this((xx.newInstance(), xx.newInstance())) +} + +class A1 { + val b1 = new B((1, 2, 3)) + val b2 = new B((1, 2)) + val b3 = new B[Int]((1, 2, 3)) + val b4 = new B[Int]((1, 2)) +} + +class A2 { + @BAnn((1, 2, 3)) val b1 = null + @BAnn((1, 2)) val b2 = null + @BAnn[Int]((1, 2, 3)) val b3 = null + @BAnn[Int]((1, 2)) val b4 = null +} + +class A3 { + @CAnn(classOf[Int]) val b1 = null + @CAnn((1, 2)) val b2 = null + @CAnn[Int](classOf[Int]) val b3 = null + @CAnn[Int]((1, 2)) val b4 = null +} diff --git a/test/files/neg/javaConversions-2.10-ambiguity.scala b/test/files/pos/javaConversions-2.10-ambiguity.scala index e856846a29..c4aad6cbfc 100644 --- a/test/files/neg/javaConversions-2.10-ambiguity.scala +++ b/test/files/pos/javaConversions-2.10-ambiguity.scala @@ -5,6 +5,6 @@ import java.util.concurrent.{ConcurrentHashMap => CHM} object Bar { def assertType[T](t: T) = t val a = new CHM[String, String]() += (("", "")) - assertType[mutable.ConcurrentMap[String, String]](a) + assertType[concurrent.Map[String, String]](a) } // vim: set et: diff --git a/test/files/pos/javaConversions-2.10-regression.scala b/test/files/pos/javaConversions-2.10-regression.scala index e1b81015ba..7c7ff03b55 100644 --- a/test/files/pos/javaConversions-2.10-regression.scala +++ b/test/files/pos/javaConversions-2.10-regression.scala @@ -3,10 +3,10 @@ import JavaConversions._ import java.util.concurrent.{ConcurrentHashMap => CHM} object Foo { - def buildCache2_9_simple[K <: AnyRef, V <: AnyRef]: mutable.ConcurrentMap[K, V] = - asScalaConcurrentMap(new CHM()) + def buildCache2_9_simple[K <: AnyRef, V <: AnyRef]: concurrent.Map[K, V] = + mapAsScalaConcurrentMap(new CHM()) - def buildCache2_9_implicit[K <: AnyRef, V <: AnyRef]: mutable.ConcurrentMap[K, V] = + def buildCache2_9_implicit[K <: AnyRef, V <: AnyRef]: concurrent.Map[K, V] = new CHM[K, V]() } diff --git a/test/files/pos/kinds.scala b/test/files/pos/kinds.scala new file mode 100644 index 0000000000..6d6da0c8b6 --- /dev/null +++ b/test/files/pos/kinds.scala @@ -0,0 +1,13 @@ +trait IllKind1 { + def g(s: String): String = s + def f: String = ??? + def f[C](c: C): String = g(f) +} + +trait IllKind2 { + def b1: Char = ??? + def b2: Byte = ??? + + def f1 = "abc" contains b1 + def f2 = "abc" contains b2 +} diff --git a/test/files/pos/lubs.scala b/test/files/pos/lubs.scala new file mode 100644 index 0000000000..d7651f86b0 --- /dev/null +++ b/test/files/pos/lubs.scala @@ -0,0 +1,3 @@ +object Test { + List(new { def f = 1; def g = 1}, new { def f = 2}).map(_.f) +} diff --git a/test/files/pos/presuperContext.scala b/test/files/pos/presuperContext.scala new file mode 100644 index 0000000000..cc34263073 --- /dev/null +++ b/test/files/pos/presuperContext.scala @@ -0,0 +1,13 @@ +class A { + class C extends { val x: A = this } with AnyRef +} + +class B(x: Int) + +class D { + class C(x: Int) extends B({val test: D = this; x}) { + def this() { + this({val test: D = this; 1}) + } + } +} diff --git a/test/files/pos/spec-annotations.scala b/test/files/pos/spec-annotations.scala index 6c1f737470..b23abf48e8 100644 --- a/test/files/pos/spec-annotations.scala +++ b/test/files/pos/spec-annotations.scala @@ -1,7 +1,7 @@ class ann(i: Int) extends scala.annotation.Annotation // annotations on abstract types -abstract class C1[@cloneable +T, U, V[_]] +abstract class C1[@annotation.elidable(0) +T, U, V[_]] abstract class C2[@deprecated @ann(1) T <: Number, V] diff --git a/test/files/pos/spec-arrays.scala b/test/files/pos/spec-arrays.scala index 84f6eef071..7ae2cb1efb 100644 --- a/test/files/pos/spec-arrays.scala +++ b/test/files/pos/spec-arrays.scala @@ -177,38 +177,11 @@ class ScalaSpec3Test extends Test { } } -object TestJava extends scala.testing.Benchmark { - def run() { - (new JavaTest).run() - } -} - -object TestSpec extends scala.testing.Benchmark { - def run() { - (new ScalaSpecTest).run() - } -} - -object TestSpec2 extends scala.testing.Benchmark { - def run() { - (new ScalaSpec2Test).run() - } -} - -object TestGen extends scala.testing.Benchmark { - def run() { - (new ScalaGenTest).run() - } -} - -object TestWrap extends scala.testing.Benchmark { - def run() { - (new ScalaWrapTest).run() - } -} - -object TestSpec3 extends scala.testing.Benchmark { - def run() { - (new ScalaSpec3Test).run() - } +object TestRunner { + (new JavaTest).run() + (new ScalaSpecTest).run() + (new ScalaSpec2Test).run() + (new ScalaGenTest).run() + (new ScalaWrapTest).run() + (new ScalaSpec3Test).run() } diff --git a/test/files/pos/spec-funs.scala b/test/files/pos/spec-funs.scala index 611ec0ef62..b9acbe171a 100644 --- a/test/files/pos/spec-funs.scala +++ b/test/files/pos/spec-funs.scala @@ -54,10 +54,7 @@ final class ClosureTest { } } -object TestInt extends scala.testing.Benchmark { - def run() = (new IntTest).run() -} - -object TestClosure extends scala.testing.Benchmark { - def run() = (new ClosureTest).run() +object TestRunner { + (new IntTest).run() + (new ClosureTest).run() } diff --git a/test/files/pos/t0422.scala b/test/files/pos/t0422.scala index cb3ba279d4..2adfa392d2 100644 --- a/test/files/pos/t0422.scala +++ b/test/files/pos/t0422.scala @@ -1,5 +1,4 @@ -import scala.util.regexp.WordExp; -import scala.util.automata.WordBerrySethi; +package scala.xml.dtd.impl object BoolWordExp extends WordExp { type _labelT = MyLabels; diff --git a/test/files/pos/t1014.scala b/test/files/pos/t1014.scala index 1ac87b225b..3fc10d10dc 100644 --- a/test/files/pos/t1014.scala +++ b/test/files/pos/t1014.scala @@ -1,6 +1,8 @@ import scala.xml.{NodeSeq, Elem} -class EO extends App with Moo{ +class EO extends App with Moo { + // return type is Flog, inherited from overridden method. + // implicit conversions are applied because expected type `pt` is `Flog` when `computeType(rhs, pt)`. def cat = <cat>dog</cat> implicit def nodeSeqToFlog(in: Elem): Flog = new Flog(in) diff --git a/test/files/pos/t1803.flags b/test/files/pos/t1803.flags new file mode 100644 index 0000000000..d1a8244169 --- /dev/null +++ b/test/files/pos/t1803.flags @@ -0,0 +1 @@ +-Yinfer-argument-types
\ No newline at end of file diff --git a/test/files/pos/t1803.scala b/test/files/pos/t1803.scala new file mode 100644 index 0000000000..42f4e784a3 --- /dev/null +++ b/test/files/pos/t1803.scala @@ -0,0 +1,2 @@ +class A { def foo[A](a: A) = a } +class B extends A { override def foo[A](b) = b } diff --git a/test/files/pos/t2421b_pos.scala b/test/files/pos/t2421b_pos.scala index 8b848abb75..0df3461662 100644 --- a/test/files/pos/t2421b_pos.scala +++ b/test/files/pos/t2421b_pos.scala @@ -11,7 +11,7 @@ object Test { f } -/* bug: +/* bug: error: ambiguous implicit values: both method b in object Test1 of type [X <: Test1.B]Test1.F[X] and method a in object Test1 of type => Test1.F[Test1.A] diff --git a/test/files/pos/t2484.scala b/test/files/pos/t2484.scala index 7d1b7cb03c..29f798edf9 100755 --- a/test/files/pos/t2484.scala +++ b/test/files/pos/t2484.scala @@ -1,7 +1,9 @@ +import concurrent.ExecutionContext.Implicits.global + class Admin extends javax.swing.JApplet { val jScrollPane = new javax.swing.JScrollPane (null, 0, 0) def t2484: Unit = { - scala.concurrent.ops.spawn {jScrollPane.synchronized { + scala.concurrent.future {jScrollPane.synchronized { def someFunction () = {} //scala.concurrent.ops.spawn {someFunction ()} jScrollPane.addComponentListener (new java.awt.event.ComponentAdapter {override def componentShown (e: java.awt.event.ComponentEvent) = { diff --git a/test/files/pos/t2698.scala b/test/files/pos/t2698.scala index 0e2662de61..7de50a13d6 100644 --- a/test/files/pos/t2698.scala +++ b/test/files/pos/t2698.scala @@ -1,5 +1,6 @@ +package scala.xml.dtd.impl + import scala.collection._ -import scala.util.regexp._ abstract class S2 { val lang: WordExp diff --git a/test/files/pos/t342.scala b/test/files/pos/t342.scala deleted file mode 100644 index 752b24d2ba..0000000000 --- a/test/files/pos/t342.scala +++ /dev/null @@ -1,8 +0,0 @@ -object Main extends App { - - object Foo extends Enumeration(0, "Bar") { // 2 - val Bar = Value - } - import Foo._; - Console.println(Bar) -} diff --git a/test/files/pos/t3864/tuples_1.scala b/test/files/pos/t3864/tuples_1.scala index 1d19af6e41..5e97f8452b 100644 --- a/test/files/pos/t3864/tuples_1.scala +++ b/test/files/pos/t3864/tuples_1.scala @@ -1,11 +1,11 @@ -trait PimpedType[X] { +trait EnrichedType[X] { val value: X } trait Tuples { - -trait Tuple15W[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O] extends PimpedType[Tuple15[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O]] { + +trait Tuple15W[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O] extends EnrichedType[Tuple15[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O]] { def fold[Z](f: => (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O) => Z): Z = {import value._; f(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15)} def toIndexedSeq[Z](implicit ev: value.type <:< Tuple15[Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z]): IndexedSeq[Z] = {val zs = ev(value); import zs._; IndexedSeq(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15)} def mapElements[AA, BB, CC, DD, EE, FF, GG, HH, II, JJ, KK, LL, MM, NN, OO](_1: (A => AA) = identity[A] _, _2: (B => BB) = identity[B] _, _3: (C => CC) = identity[C] _, _4: (D => DD) = identity[D] _, _5: (E => EE) = identity[E] _, _6: (F => FF) = identity[F] _, _7: (G => GG) = identity[G] _, _8: (H => HH) = identity[H] _, _9: (I => II) = identity[I] _, _10: (J => JJ) = identity[J] _, _11: (K => KK) = identity[K] _, _12: (L => LL) = identity[L] _, _13: (M => MM) = identity[M] _, _14: (N => NN) = identity[N] _, _15: (O => OO) = identity[O] _): (AA, BB, CC, DD, EE, FF, GG, HH, II, JJ, KK, LL, MM, NN, OO) = (_1(value._1), _2(value._2), _3(value._3), _4(value._4), _5(value._5), _6(value._6), _7(value._7), _8(value._8), _9(value._9), _10(value._10), _11(value._11), _12(value._12), _13(value._13), _14(value._14), _15(value._15)) @@ -13,8 +13,8 @@ trait Tuple15W[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O] extends PimpedType[T implicit def ToTuple15W[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O](t: (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O)): Tuple15W[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O] = new { val value = t } with Tuple15W[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O] - -trait Tuple16W[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P] extends PimpedType[Tuple16[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P]] { + +trait Tuple16W[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P] extends EnrichedType[Tuple16[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P]] { def fold[Z](f: => (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P) => Z): Z = {import value._; f(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16)} def toIndexedSeq[Z](implicit ev: value.type <:< Tuple16[Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z]): IndexedSeq[Z] = {val zs = ev(value); import zs._; IndexedSeq(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16)} def mapElements[AA, BB, CC, DD, EE, FF, GG, HH, II, JJ, KK, LL, MM, NN, OO, PP](_1: (A => AA) = identity[A] _, _2: (B => BB) = identity[B] _, _3: (C => CC) = identity[C] _, _4: (D => DD) = identity[D] _, _5: (E => EE) = identity[E] _, _6: (F => FF) = identity[F] _, _7: (G => GG) = identity[G] _, _8: (H => HH) = identity[H] _, _9: (I => II) = identity[I] _, _10: (J => JJ) = identity[J] _, _11: (K => KK) = identity[K] _, _12: (L => LL) = identity[L] _, _13: (M => MM) = identity[M] _, _14: (N => NN) = identity[N] _, _15: (O => OO) = identity[O] _, _16: (P => PP) = identity[P] _): (AA, BB, CC, DD, EE, FF, GG, HH, II, JJ, KK, LL, MM, NN, OO, PP) = (_1(value._1), _2(value._2), _3(value._3), _4(value._4), _5(value._5), _6(value._6), _7(value._7), _8(value._8), _9(value._9), _10(value._10), _11(value._11), _12(value._12), _13(value._13), _14(value._14), _15(value._15), _16(value._16)) @@ -22,8 +22,8 @@ trait Tuple16W[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P] extends PimpedTyp implicit def ToTuple16W[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P](t: (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P)): Tuple16W[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P] = new { val value = t } with Tuple16W[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P] - -trait Tuple17W[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q] extends PimpedType[Tuple17[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q]] { + +trait Tuple17W[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q] extends EnrichedType[Tuple17[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q]] { def fold[Z](f: => (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q) => Z): Z = {import value._; f(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17)} def toIndexedSeq[Z](implicit ev: value.type <:< Tuple17[Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z]): IndexedSeq[Z] = {val zs = ev(value); import zs._; IndexedSeq(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17)} def mapElements[AA, BB, CC, DD, EE, FF, GG, HH, II, JJ, KK, LL, MM, NN, OO, PP, QQ](_1: (A => AA) = identity[A] _, _2: (B => BB) = identity[B] _, _3: (C => CC) = identity[C] _, _4: (D => DD) = identity[D] _, _5: (E => EE) = identity[E] _, _6: (F => FF) = identity[F] _, _7: (G => GG) = identity[G] _, _8: (H => HH) = identity[H] _, _9: (I => II) = identity[I] _, _10: (J => JJ) = identity[J] _, _11: (K => KK) = identity[K] _, _12: (L => LL) = identity[L] _, _13: (M => MM) = identity[M] _, _14: (N => NN) = identity[N] _, _15: (O => OO) = identity[O] _, _16: (P => PP) = identity[P] _, _17: (Q => QQ) = identity[Q] _): (AA, BB, CC, DD, EE, FF, GG, HH, II, JJ, KK, LL, MM, NN, OO, PP, QQ) = (_1(value._1), _2(value._2), _3(value._3), _4(value._4), _5(value._5), _6(value._6), _7(value._7), _8(value._8), _9(value._9), _10(value._10), _11(value._11), _12(value._12), _13(value._13), _14(value._14), _15(value._15), _16(value._16), _17(value._17)) @@ -31,8 +31,8 @@ trait Tuple17W[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q] extends Pimped implicit def ToTuple17W[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q](t: (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q)): Tuple17W[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q] = new { val value = t } with Tuple17W[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q] - -trait Tuple18W[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R] extends PimpedType[Tuple18[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R]] { + +trait Tuple18W[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R] extends EnrichedType[Tuple18[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R]] { def fold[Z](f: => (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R) => Z): Z = {import value._; f(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18)} def toIndexedSeq[Z](implicit ev: value.type <:< Tuple18[Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z]): IndexedSeq[Z] = {val zs = ev(value); import zs._; IndexedSeq(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18)} def mapElements[AA, BB, CC, DD, EE, FF, GG, HH, II, JJ, KK, LL, MM, NN, OO, PP, QQ, RR](_1: (A => AA) = identity[A] _, _2: (B => BB) = identity[B] _, _3: (C => CC) = identity[C] _, _4: (D => DD) = identity[D] _, _5: (E => EE) = identity[E] _, _6: (F => FF) = identity[F] _, _7: (G => GG) = identity[G] _, _8: (H => HH) = identity[H] _, _9: (I => II) = identity[I] _, _10: (J => JJ) = identity[J] _, _11: (K => KK) = identity[K] _, _12: (L => LL) = identity[L] _, _13: (M => MM) = identity[M] _, _14: (N => NN) = identity[N] _, _15: (O => OO) = identity[O] _, _16: (P => PP) = identity[P] _, _17: (Q => QQ) = identity[Q] _, _18: (R => RR) = identity[R] _): (AA, BB, CC, DD, EE, FF, GG, HH, II, JJ, KK, LL, MM, NN, OO, PP, QQ, RR) = (_1(value._1), _2(value._2), _3(value._3), _4(value._4), _5(value._5), _6(value._6), _7(value._7), _8(value._8), _9(value._9), _10(value._10), _11(value._11), _12(value._12), _13(value._13), _14(value._14), _15(value._15), _16(value._16), _17(value._17), _18(value._18)) @@ -40,8 +40,8 @@ trait Tuple18W[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R] extends Pim implicit def ToTuple18W[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R](t: (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R)): Tuple18W[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R] = new { val value = t } with Tuple18W[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R] - -trait Tuple19W[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S] extends PimpedType[Tuple19[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S]] { + +trait Tuple19W[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S] extends EnrichedType[Tuple19[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S]] { def fold[Z](f: => (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S) => Z): Z = {import value._; f(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19)} def toIndexedSeq[Z](implicit ev: value.type <:< Tuple19[Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z]): IndexedSeq[Z] = {val zs = ev(value); import zs._; IndexedSeq(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19)} def mapElements[AA, BB, CC, DD, EE, FF, GG, HH, II, JJ, KK, LL, MM, NN, OO, PP, QQ, RR, SS](_1: (A => AA) = identity[A] _, _2: (B => BB) = identity[B] _, _3: (C => CC) = identity[C] _, _4: (D => DD) = identity[D] _, _5: (E => EE) = identity[E] _, _6: (F => FF) = identity[F] _, _7: (G => GG) = identity[G] _, _8: (H => HH) = identity[H] _, _9: (I => II) = identity[I] _, _10: (J => JJ) = identity[J] _, _11: (K => KK) = identity[K] _, _12: (L => LL) = identity[L] _, _13: (M => MM) = identity[M] _, _14: (N => NN) = identity[N] _, _15: (O => OO) = identity[O] _, _16: (P => PP) = identity[P] _, _17: (Q => QQ) = identity[Q] _, _18: (R => RR) = identity[R] _, _19: (S => SS) = identity[S] _): (AA, BB, CC, DD, EE, FF, GG, HH, II, JJ, KK, LL, MM, NN, OO, PP, QQ, RR, SS) = (_1(value._1), _2(value._2), _3(value._3), _4(value._4), _5(value._5), _6(value._6), _7(value._7), _8(value._8), _9(value._9), _10(value._10), _11(value._11), _12(value._12), _13(value._13), _14(value._14), _15(value._15), _16(value._16), _17(value._17), _18(value._18), _19(value._19)) @@ -49,8 +49,8 @@ trait Tuple19W[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S] extends implicit def ToTuple19W[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S](t: (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S)): Tuple19W[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S] = new { val value = t } with Tuple19W[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S] - -trait Tuple20W[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T] extends PimpedType[Tuple20[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T]] { + +trait Tuple20W[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T] extends EnrichedType[Tuple20[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T]] { def fold[Z](f: => (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T) => Z): Z = {import value._; f(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20)} def toIndexedSeq[Z](implicit ev: value.type <:< Tuple20[Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z]): IndexedSeq[Z] = {val zs = ev(value); import zs._; IndexedSeq(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20)} def mapElements[AA, BB, CC, DD, EE, FF, GG, HH, II, JJ, KK, LL, MM, NN, OO, PP, QQ, RR, SS, TT](_1: (A => AA) = identity[A] _, _2: (B => BB) = identity[B] _, _3: (C => CC) = identity[C] _, _4: (D => DD) = identity[D] _, _5: (E => EE) = identity[E] _, _6: (F => FF) = identity[F] _, _7: (G => GG) = identity[G] _, _8: (H => HH) = identity[H] _, _9: (I => II) = identity[I] _, _10: (J => JJ) = identity[J] _, _11: (K => KK) = identity[K] _, _12: (L => LL) = identity[L] _, _13: (M => MM) = identity[M] _, _14: (N => NN) = identity[N] _, _15: (O => OO) = identity[O] _, _16: (P => PP) = identity[P] _, _17: (Q => QQ) = identity[Q] _, _18: (R => RR) = identity[R] _, _19: (S => SS) = identity[S] _, _20: (T => TT) = identity[T] _): (AA, BB, CC, DD, EE, FF, GG, HH, II, JJ, KK, LL, MM, NN, OO, PP, QQ, RR, SS, TT) = (_1(value._1), _2(value._2), _3(value._3), _4(value._4), _5(value._5), _6(value._6), _7(value._7), _8(value._8), _9(value._9), _10(value._10), _11(value._11), _12(value._12), _13(value._13), _14(value._14), _15(value._15), _16(value._16), _17(value._17), _18(value._18), _19(value._19), _20(value._20)) @@ -58,8 +58,8 @@ trait Tuple20W[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T] exten implicit def ToTuple20W[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T](t: (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T)): Tuple20W[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T] = new { val value = t } with Tuple20W[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T] - -trait Tuple21W[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U] extends PimpedType[Tuple21[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U]] { + +trait Tuple21W[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U] extends EnrichedType[Tuple21[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U]] { def fold[Z](f: => (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U) => Z): Z = {import value._; f(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21)} def toIndexedSeq[Z](implicit ev: value.type <:< Tuple21[Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z]): IndexedSeq[Z] = {val zs = ev(value); import zs._; IndexedSeq(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21)} def mapElements[AA, BB, CC, DD, EE, FF, GG, HH, II, JJ, KK, LL, MM, NN, OO, PP, QQ, RR, SS, TT, UU](_1: (A => AA) = identity[A] _, _2: (B => BB) = identity[B] _, _3: (C => CC) = identity[C] _, _4: (D => DD) = identity[D] _, _5: (E => EE) = identity[E] _, _6: (F => FF) = identity[F] _, _7: (G => GG) = identity[G] _, _8: (H => HH) = identity[H] _, _9: (I => II) = identity[I] _, _10: (J => JJ) = identity[J] _, _11: (K => KK) = identity[K] _, _12: (L => LL) = identity[L] _, _13: (M => MM) = identity[M] _, _14: (N => NN) = identity[N] _, _15: (O => OO) = identity[O] _, _16: (P => PP) = identity[P] _, _17: (Q => QQ) = identity[Q] _, _18: (R => RR) = identity[R] _, _19: (S => SS) = identity[S] _, _20: (T => TT) = identity[T] _, _21: (U => UU) = identity[U] _): (AA, BB, CC, DD, EE, FF, GG, HH, II, JJ, KK, LL, MM, NN, OO, PP, QQ, RR, SS, TT, UU) = (_1(value._1), _2(value._2), _3(value._3), _4(value._4), _5(value._5), _6(value._6), _7(value._7), _8(value._8), _9(value._9), _10(value._10), _11(value._11), _12(value._12), _13(value._13), _14(value._14), _15(value._15), _16(value._16), _17(value._17), _18(value._18), _19(value._19), _20(value._20), _21(value._21)) @@ -67,12 +67,12 @@ trait Tuple21W[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U] ex implicit def ToTuple21W[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U](t: (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U)): Tuple21W[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U] = new { val value = t } with Tuple21W[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U] - -trait Tuple22W[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V] extends PimpedType[Tuple22[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V]] { + +trait Tuple22W[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V] extends EnrichedType[Tuple22[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V]] { def fold[Z](f: => (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V) => Z): Z = {import value._; f(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22)} def toIndexedSeq[Z](implicit ev: value.type <:< Tuple22[Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z, Z]): IndexedSeq[Z] = {val zs = ev(value); import zs._; IndexedSeq(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22)} def mapElements[AA, BB, CC, DD, EE, FF, GG, HH, II, JJ, KK, LL, MM, NN, OO, PP, QQ, RR, SS, TT, UU, VV](_1: (A => AA) = identity[A] _, _2: (B => BB) = identity[B] _, _3: (C => CC) = identity[C] _, _4: (D => DD) = identity[D] _, _5: (E => EE) = identity[E] _, _6: (F => FF) = identity[F] _, _7: (G => GG) = identity[G] _, _8: (H => HH) = identity[H] _, _9: (I => II) = identity[I] _, _10: (J => JJ) = identity[J] _, _11: (K => KK) = identity[K] _, _12: (L => LL) = identity[L] _, _13: (M => MM) = identity[M] _, _14: (N => NN) = identity[N] _, _15: (O => OO) = identity[O] _, _16: (P => PP) = identity[P] _, _17: (Q => QQ) = identity[Q] _, _18: (R => RR) = identity[R] _, _19: (S => SS) = identity[S] _, _20: (T => TT) = identity[T] _, _21: (U => UU) = identity[U] _, _22: (V => VV) = identity[V] _): (AA, BB, CC, DD, EE, FF, GG, HH, II, JJ, KK, LL, MM, NN, OO, PP, QQ, RR, SS, TT, UU, VV) = (_1(value._1), _2(value._2), _3(value._3), _4(value._4), _5(value._5), _6(value._6), _7(value._7), _8(value._8), _9(value._9), _10(value._10), _11(value._11), _12(value._12), _13(value._13), _14(value._14), _15(value._15), _16(value._16), _17(value._17), _18(value._18), _19(value._19), _20(value._20), _21(value._21), _22(value._22)) } implicit def ToTuple22W[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V](t: (A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V)): Tuple22W[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V] = new { val value = t } with Tuple22W[A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V] -}
\ No newline at end of file +} diff --git a/test/files/pos/t422.scala b/test/files/pos/t422.scala deleted file mode 100644 index cb3ba279d4..0000000000 --- a/test/files/pos/t422.scala +++ /dev/null @@ -1,17 +0,0 @@ -import scala.util.regexp.WordExp; -import scala.util.automata.WordBerrySethi; - -object BoolWordExp extends WordExp { - type _labelT = MyLabels; - type _regexpT = RegExp; - abstract class MyLabels extends Label ; - case class MyLabel(c:Char) extends MyLabels; -} - -object MyTranslator extends WordBerrySethi { - override val lang = BoolWordExp; - import lang._; - override protected def seenLabel( r:RegExp, i:Int, label: _labelT ): Unit = { - super.seenLabel(r,i,label) - } -} diff --git a/test/pending/pos/t4859.scala b/test/files/pos/t4859.scala index ec5abd966d..284a39b7ab 100644 --- a/test/pending/pos/t4859.scala +++ b/test/files/pos/t4859.scala @@ -1,5 +1,7 @@ object O { + // error: C is not a legal prefix for a constructor C().CC() + // but this works. D().DD() } diff --git a/test/files/pos/t5223.scala b/test/files/pos/t5223.scala index 0b2528e367..d81daa9907 100644 --- a/test/files/pos/t5223.scala +++ b/test/files/pos/t5223.scala @@ -2,5 +2,5 @@ import scala.reflect.runtime.universe._ object Foo extends App { reify{def printf(format: String, args: Any*): String = null } - reify{def printf(format: String, args: Any*): String = ("abc": @cloneable)} + reify{def printf(format: String, args: Any*): String = ("abc": @deprecated)} }
\ No newline at end of file diff --git a/test/files/pos/t5809.scala b/test/files/pos/t5809.scala index 4bcd743faa..6101f546b3 100644 --- a/test/files/pos/t5809.scala +++ b/test/files/pos/t5809.scala @@ -1,5 +1,5 @@ package object foo { - implicit class PimpedInt(foo: Int) { + implicit class EnrichedInt(foo: Int) { def bar = ??? def bippy = foo } diff --git a/test/files/pos/t5877.scala b/test/files/pos/t5877.scala index c7827df99f..939013cd01 100644 --- a/test/files/pos/t5877.scala +++ b/test/files/pos/t5877.scala @@ -7,8 +7,8 @@ package foo { } package object foo { - // Crasher: No synthetics for method PimpedFoo2: synthetics contains - implicit class PimpedFoo2(value: Foo) { + // Crasher: No synthetics for method EnrichedFoo2: synthetics contains + implicit class EnrichedFoo2(value: Foo) { def huzzah = "" } } diff --git a/test/files/pos/t5877b.scala b/test/files/pos/t5877b.scala index 6b8cbd473e..43a2ea2f06 100644 --- a/test/files/pos/t5877b.scala +++ b/test/files/pos/t5877b.scala @@ -7,7 +7,7 @@ object Test { } object `package` { - implicit class PimpedFoo2(value: Foo) { + implicit class EnrichedFoo2(value: Foo) { def huzzah = "" } } diff --git a/test/files/pos/t6516.scala b/test/files/pos/t6516.scala new file mode 100644 index 0000000000..c004055de2 --- /dev/null +++ b/test/files/pos/t6516.scala @@ -0,0 +1,19 @@ +import scala.language.experimental.macros +import scala.reflect.macros.Context +import scala.collection.TraversableLike + +// This one compiles +object Test { + type Alias[T, CC[_]] = Context { type PrefixType = TraversableLike[T, CC[T]] } + def f() = macro f_impl + def f_impl(c: Alias[Int, List])() = ??? +} + +// This one doesn't +object Test2 { + type Ctx = scala.reflect.macros.Context + type Alias[T, CC[_]] = Ctx { type PrefixType = TraversableLike[T, CC[T]] } + + def f() = macro f_impl + def f_impl(c: Alias[Int, List])() = ??? +} diff --git a/test/files/pos/t6601/PrivateValueClass_1.scala b/test/files/pos/t6601/PrivateValueClass_1.scala new file mode 100644 index 0000000000..85c3687137 --- /dev/null +++ b/test/files/pos/t6601/PrivateValueClass_1.scala @@ -0,0 +1 @@ +class V private (val a: Any) extends AnyVal
\ No newline at end of file diff --git a/test/files/pos/t6601/UsePrivateValueClass_2.scala b/test/files/pos/t6601/UsePrivateValueClass_2.scala new file mode 100644 index 0000000000..461b8397b2 --- /dev/null +++ b/test/files/pos/t6601/UsePrivateValueClass_2.scala @@ -0,0 +1,10 @@ +object Test { + // After the first attempt to make seprately compiled value + // classes respect the privacy of constructors, we got: + // + // exception when typing v.a().==(v.a())/class scala.reflect.internal.Trees$Apply + // constructor V in class V cannot be accessed in object Test in file test/files/pos/t6601/UsePrivateValueClass_2.scala + // scala.reflect.internal.Types$TypeError: constructor V in class V cannot be accessed in object Test + def foo(v: V) = v.a == v.a + def bar(v: V) = v == v +} diff --git a/test/files/pos/t6651.scala b/test/files/pos/t6651.scala new file mode 100644 index 0000000000..55a3b74e4c --- /dev/null +++ b/test/files/pos/t6651.scala @@ -0,0 +1,33 @@ +class YouAreYourself[A <: AnyRef](val you: A) extends AnyVal { + def yourself: you.type = you +} + +object Test { + val s = "" + val s1: s.type = new YouAreYourself[s.type](s).yourself +} + +trait Path { + type Dep <: AnyRef +} + +final class ValueClass[P <: Path](val path: P) extends AnyVal { + import path.Dep + + def apply(dep: Dep)(d2: dep.type, foo: Int): (Dep, d2.type) = (d2, d2) + + // This generates dodgy code; note `ValueClass.this`: + // + // final def bounds$extension[D >: Nothing <: ValueClass.this.path.Dep, + // P >: Nothing <: Path] + // ($this: ValueClass[P]) + // (dep: D) + // (d2: dep.type, foo: Int): (D, d2.type) = scala.Tuple2.apply[D, d2.type](d2, d2); + // + // Nothing crashes down the line, but it certainly doesn't conform to best-practices. + // + // An better alternative would be to add a type parameter for the (singleton) type of + // the wrapped value. + def bounds[D <: Dep](dep: D)(d2: dep.type, foo: Int): (D, d2.type) = (d2, d2) +} + diff --git a/test/files/pos/t6891.flags b/test/files/pos/t6891.flags new file mode 100644 index 0000000000..fe048006aa --- /dev/null +++ b/test/files/pos/t6891.flags @@ -0,0 +1 @@ +-Ycheck:extmethods -Xfatal-warnings
\ No newline at end of file diff --git a/test/files/pos/t6891.scala b/test/files/pos/t6891.scala new file mode 100644 index 0000000000..bed2d0d777 --- /dev/null +++ b/test/files/pos/t6891.scala @@ -0,0 +1,26 @@ +object O { + implicit class Foo[A](val value: String) extends AnyVal { + def bippy() = { + @annotation.tailrec def loop(x: A): Unit = loop(x) + () + } + + def boppy() = { + @annotation.tailrec def loop(x: value.type): Unit = loop(x) + () + } + + def beppy[C](c: => C) = { + () => c + @annotation.tailrec def loop(x: value.type): Unit = loop(x) + () => c + () + } + } + // uncaught exception during compilation: Types$TypeError("type mismatch; + // found : A(in method bippy$extension) + // required: A(in class Foo)") @ scala.tools.nsc.typechecker.Contexts$Context.issueCommon(Contexts.scala:396) + // error: scala.reflect.internal.Types$TypeError: type mismatch; + // found : A(in method bippy$extension) + // required: A(in class Foo) +} diff --git a/test/files/pos/t6942.flags b/test/files/pos/t6942.flags new file mode 100644 index 0000000000..e8fb65d50c --- /dev/null +++ b/test/files/pos/t6942.flags @@ -0,0 +1 @@ +-Xfatal-warnings
\ No newline at end of file diff --git a/test/files/pos/t6942/Bar.java b/test/files/pos/t6942/Bar.java new file mode 100644 index 0000000000..592f62efb4 --- /dev/null +++ b/test/files/pos/t6942/Bar.java @@ -0,0 +1,235 @@ +package foo; + +public enum Bar { + ANGUILLA /*("US")*/, + ANTIGUA_AND_BARBUDA /*("US")*/, + ARGENTINA /*("US")*/, + ARUBA /*("US")*/, + BAHAMAS /*("US")*/, + BARBADOS /*("US")*/, + BELIZE /*("US")*/, + BERMUDA /*("US")*/, + BOLIVIA /*("US")*/, + BRAZIL /*("US")*/, + BRITISH_VIRGIN_ISLANDS /*("US")*/, + CANADA /*("US")*/, + CAYMAN_ISLANDS /*("US")*/, + CHILE /*("US")*/, + CHRISTMAS_ISLANDS /*("US")*/, + COCOS /*("US")*/, + COLOMBIA /*("US")*/, + COSTA_RICA /*("US")*/, + CUBA /*("US")*/, + DOMINICA /*("US")*/, + DOMINICAN_REPUBLIC /*("US")*/, + ECUADOR /*("US")*/, + EL_SALVADOR /*("US")*/, + FALKLAND_ISLANDS /*("US")*/, + GRENADA /*("US")*/, + GUADALOUPE /*("US")*/, + GUATEMALA /*("US")*/, + HAITI /*("US")*/, + HONDURAS /*("US")*/, + NETHERLANDS_ANTILLES /*("US")*/, + NICARAGUA /*("US")*/, + PANAMA /*("US")*/, + PARAGUAY /*("US")*/, + PERU /*("US")*/, + PUERTO_RICO /*("US")*/, + JAMAICA /*("US")*/, + MARTINIQUE /*("US")*/, + MEXICO /*("US")*/, + MONTSERRAT /*("US")*/, + ST_KITTS /*("US")*/, + ST_LUCIA /*("US")*/, + ST_VINCENT /*("US")*/, + SUPRA_NATIONAL /*("US")*/, + TRINIDAD /*("US")*/, + TURKS_AND_CAICOS /*("US")*/, + UNITED_STATES /*("US")*/, + URUGUAY /*("US")*/, + VENEZUELA /*("US")*/, + VIRGIN_ISLANDS /*("US")*/, + + AUSTRALIA /*("AP")*/, + BANGLADESH /*("AP")*/, + BHUTAN /*("AP")*/, + CAMBODIA /*("AP")*/, + CHINA /*("AP")*/, + COOK_ISLANDS /*("AP")*/, + EAST_TIMOR /*("AP")*/, + FIJI /*("AP")*/, + GUAM /*("AP")*/, + HONG_KONG /*("AP")*/, + INDIA /*("AP")*/, + INDONESIA /*("AP")*/, + JAPAN /*("AP")*/, + KIRIBATI /*("AP")*/, + LAOS /*("AP")*/, + MACAU /*("AP")*/, + MALAYSIA /*("AP")*/, + MICRONESIA /*("AP")*/, + MONGOLIA /*("AP")*/, + MYANMAR /*("AP")*/, + NEPAL /*("AP")*/, + NEW_CALEDONIA /*("AP")*/, + NEW_ZEALAND /*("AP")*/, + NORFOLK_ISLAND /*("AP")*/, + NORTH_KOREA /*("AP")*/, + PAKISTAN /*("AP")*/, + PALAU /*("AP")*/, + PAPUA_NEW_GUINEA /*("AP")*/, + PHILIPPINES /*("AP")*/, + PITCAIRN_ISLANDS /*("AP")*/, + SAMOA /*("AP")*/, + WEST_SAMOA /*("AP")*/, + SINGAPORE /*("AP")*/, + SOUTH_KOREA /*("AP")*/, + SRI_LANKA /*("AP")*/, + TAIWAN /*("AP")*/, + THAILAND /*("AP")*/, + TOKELAU /*("AP")*/, + TONGA /*("AP")*/, + TUVALU /*("AP")*/, + VANUATU /*("AP")*/, + VIETNAM /*("AP")*/, + + AFGHANISTAN /*("EU")*/, + ALBANIA /*("EU")*/, + ALGERIA /*("EU")*/, + ANDORRA /*("EU")*/, + ANGOLA /*("EU")*/, + ARMENIA /*("EU")*/, + AUSTRIA /*("EU")*/, + AZERBAIJAN /*("EU")*/, + BAHRAIN /*("EU")*/, + BELARUS /*("EU")*/, + BELGIUM /*("EU")*/, + BENIN /*("EU")*/, + BOSNIA_AND_HERZEGOVINA /*("EU")*/, + BOTSWANA /*("EU")*/, + BOUVET_ISLAND /*("EU")*/, + BRUNEI /*("EU")*/, + BULGARIA /*("EU")*/, + BURKINA_FASO /*("EU")*/, + BURUNDI /*("EU")*/, + CAMEROON /*("EU")*/, + CAPE_VERDE /*("EU")*/, + CHAD /*("EU")*/, + COMOROS /*("EU")*/, + CONGO /*("EU")*/, + CROATIA /*("EU")*/, + CYPRUS /*("EU")*/, + CZECH_REPUBLIC /*("EU")*/, + DR_CONGO /*("EU")*/, + DENMARK /*("EU")*/, + DJIBOUTI /*("EU")*/, + EGYPT /*("EU")*/, + EQUATORIAL_GUINEA /*("EU")*/, + ERITREA /*("EU")*/, + ESTONIA /*("EU")*/, + ETHIOPIA /*("EU")*/, + FAEROE_ISLANDS /*("EU")*/, + FINLAND /*("EU")*/, + FRANCE /*("EU")*/, + FRENCH_GUIANA /*("EU")*/, + GABON /*("EU")*/, + GAMBIA /*("EU")*/, + GEORGIA /*("EU")*/, + GERMANY /*("EU")*/, + GHANA /*("EU")*/, + GIBRALTAR /*("EU")*/, + GREAT_BRITAIN /*("EU")*/, + GREECE /*("EU")*/, + GREENLAND /*("EU")*/, + GUINEA /*("EU")*/, + GUINEA_BISSAU /*("EU")*/, + GUYANA /*("EU")*/, + HUNGARY /*("EU")*/, + ICELAND /*("EU")*/, + IRAN /*("EU")*/, + IRAQ /*("EU")*/, + IRELAND /*("EU")*/, + ISLE_OF_MAN /*("EU")*/, + ISRAEL /*("EU")*/, + ITALY /*("EU")*/, + IVORY_COAST /*("EU")*/, + JERSEY /*("EU")*/, + JORDAN /*("EU")*/, + KAZAKHSTAN /*("EU")*/, + KENYA /*("EU")*/, + KUWAIT /*("EU")*/, + KYRGYZSTAN /*("EU")*/, + LATVIA /*("EU")*/, + LEBANON /*("EU")*/, + LESOTHO /*("EU")*/, + LIBERIA /*("EU")*/, + LIBYA /*("EU")*/, + LIECHTENSTEIN /*("EU")*/, + LITHUANIA /*("EU")*/, + LUXEMBOURG /*("EU")*/, + MACEDONIA /*("EU")*/, + MADAGASCAR /*("EU")*/, + MALAWI /*("EU")*/, + MALDIVES /*("EU")*/, + MALI /*("EU")*/, + MALTA /*("EU")*/, + MARSHALL_ISLAND /*("EU")*/, + MAURITANIA /*("EU")*/, + MAURITIUS /*("EU")*/, + MAYOTTE /*("EU")*/, + MOLDOVA /*("EU")*/, + MONACO /*("EU")*/, + MOROCCO /*("EU")*/, + MOZAMBIQUE /*("EU")*/, + NAMIBIA /*("EU")*/, + NETHERLANDS /*("EU")*/, + NIGER_REPUBLIC /*("EU")*/, + NIGERIA /*("EU")*/, + NORWAY /*("EU")*/, + OMAN /*("EU")*/, + PALESTINE /*("EU")*/, + POLAND /*("EU")*/, + PORTUGAL /*("EU")*/, + QATAR /*("EU")*/, + REUNION /*("EU")*/, + ROMANIA /*("EU")*/, + RUSSIA /*("EU")*/, + RWANDA /*("EU")*/, + SAN_MARINO /*("EU")*/, + SAO_TOME /*("EU")*/, + SAUDI_ARABIA /*("EU")*/, + SENEGAL /*("EU")*/, + SERBIA /*("EU")*/, + SEYCHELLES /*("EU")*/, + SEIRRA_LEONE /*("EU")*/, + SLOVAKIA /*("EU")*/, + SLOVENIA /*("EU")*/, + SOMALIA /*("EU")*/, + SOUTH_AFRICA /*("EU")*/, + SPAIN /*("EU")*/, + ST_HELENA /*("EU")*/, + SUDAN /*("EU")*/, + SURINAME /*("EU")*/, + SVALBARD /*("EU")*/, + SWAZILAND /*("EU")*/, + SWEDEN /*("EU")*/, + SWITZERLAND /*("EU")*/, + SYRIA /*("EU")*/, + TAJIKSTAN /*("EU")*/, + TANZANIA /*("EU")*/, + TOGO /*("EU")*/, + TUNISIA /*("EU")*/, + TURKEY /*("EU")*/, + TURKMENISTAN /*("EU")*/, + UAE /*("EU")*/, + UGANDA /*("EU")*/, + UKRAINE /*("EU")*/, + UZBEKISTAN /*("EU")*/, + VATICAN_CITY /*("EU")*/, + WESTERN_SAHARA /*("EU")*/, + YEMEN /*("EU")*/, + ZAMBIA /*("EU")*/, + ZIMBABWE /*("EU")*/; + +}
\ No newline at end of file diff --git a/test/files/pos/t6942/t6942.scala b/test/files/pos/t6942/t6942.scala new file mode 100644 index 0000000000..77963d2634 --- /dev/null +++ b/test/files/pos/t6942/t6942.scala @@ -0,0 +1,64 @@ +// not a peep out of the pattern matcher's unreachability analysis +// its budget should suffice for these simple matches (they do have a large search space) +class Test { + import foo.Bar // a large enum + def exhaustUnreachabilitysStack_ENUM_STYLE = (null: Bar) match { + case Bar.BULGARIA => + case _ => + } + + // lots of strings + def exhaustUnreachabilitysStack_StringStyle = "foo" match { + case "a" => + case "b" => + case "c" => + case "d" => + case "e" => + case "f" => + case "aa" => + case "ba" => + case "ca" => + case "da" => + case "ea" => + case "f1a" => + case "a1a" => + case "b1a" => + case "c1a" => + case "d1a" => + case "e1a" => + case "f1a2" => + case "f1a0" => + case "a1a2" => + case "b1a2" => + case "c1a2" => + case "d1a2" => + case "e1a2" => + case "f1a3" => + case "_a" => + case "_b" => + case "_c" => + case "_d" => + case "_e" => + case "_f" => + case "_aa" => + case "_ba" => + case "_ca" => + case "_da" => + case "_ea" => + case "_f1a" => + case "_a1a" => + case "_b1a" => + case "_c1a" => + case "_d1a" => + case "_e1a" => + case "_f1a0" => + case "_f1a2" => + case "_a1a2" => + case "_b1a2" => + case "_c1a2" => + case "_d1a2" => + case "_e1a2" => + case "_f1a3" => + case _ => + } +} diff --git a/test/files/pos/t6963c.flags b/test/files/pos/t6963c.flags new file mode 100644 index 0000000000..4d6e04914f --- /dev/null +++ b/test/files/pos/t6963c.flags @@ -0,0 +1 @@ +-Xmigration:2.9 -Xfatal-warnings
\ No newline at end of file diff --git a/test/files/pos/t6963c.scala b/test/files/pos/t6963c.scala new file mode 100644 index 0000000000..0b6b5c757f --- /dev/null +++ b/test/files/pos/t6963c.scala @@ -0,0 +1,25 @@ +object Test { + def f1(x: Any) = x.isInstanceOf[Seq[_]] + def f2(x: Any) = x match { + case _: Seq[_] => true + case _ => false + } + + def f3(x: Any) = x match { + case _: Array[_] => true + case _ => false + } + + def f4(x: Any) = x.isInstanceOf[Traversable[_]] + + def f5(x1: Any, x2: Any, x3: AnyRef) = (x1, x2, x3) match { + case (Some(_: Seq[_]), Nil, _) => 1 + case (None, List(_: List[_], _), _) => 2 + case _ => 3 + } + + def f5: Unit = { + import scala.collection.mutable._ + List(1,2,3,4,5).scanRight(0)(_+_) + } +} diff --git a/test/files/pos/t6976/Exts_1.scala b/test/files/pos/t6976/Exts_1.scala new file mode 100644 index 0000000000..9b3a69edd9 --- /dev/null +++ b/test/files/pos/t6976/Exts_1.scala @@ -0,0 +1,10 @@ +object Exts { + implicit class AnyExts[T](val o: T) extends AnyVal { + def moo = "moo!" + } +} + +trait Exts { + import language.implicitConversions + implicit def AnyExts[T](o: T) = Exts.AnyExts(o) +} diff --git a/test/files/pos/t6976/ImplicitBug_1.scala b/test/files/pos/t6976/ImplicitBug_1.scala new file mode 100644 index 0000000000..c9031bab2e --- /dev/null +++ b/test/files/pos/t6976/ImplicitBug_1.scala @@ -0,0 +1,27 @@ +// This one is weird and nasty. Not sure if this is scalac or sbt +// (tried with 0.12 & 0.12.2-RC2) bug. +// +// A level of indirection is required to trigger this bug. +// Exts seems to need to be defined in separate file. +// +// Steps to reproduce: +// 1. sbt clean +// 2. sbt run (it works) +// 3. Comment A & uncomment B. +// 4. sbt run (it fails) +// 5. Switch it back & sbt run. It still fails. +// +// In this project sbt clean helps. However in a large project where this +// bug was found compiler crashed even after doing sbt clean. The only +// way to work around this was to reference Exts object explicitly (C) in +// the source file using its implicit classes. + +// Lets suppose this is a mega-trait combining all sorts of helper +// functionality. +trait Support extends Exts + +object ImplicitsBug extends App with Support { // A +// object ImplicitsBug extends App with Exts { // B + //Exts // C) this reference helped in the large project. + println(3.moo) +} diff --git a/test/files/pos/t6976/ImplicitBug_2.scala b/test/files/pos/t6976/ImplicitBug_2.scala new file mode 100644 index 0000000000..2fea5e2993 --- /dev/null +++ b/test/files/pos/t6976/ImplicitBug_2.scala @@ -0,0 +1,7 @@ +trait Support extends Exts + +// object ImplicitsBug extends App with Support { // A +object ImplicitsBug extends App with Exts { // B + //Exts // C) this reference helped in the large project. + println(3.moo) +} diff --git a/test/files/pos/t6994.flags b/test/files/pos/t6994.flags new file mode 100644 index 0000000000..e8fb65d50c --- /dev/null +++ b/test/files/pos/t6994.flags @@ -0,0 +1 @@ +-Xfatal-warnings
\ No newline at end of file diff --git a/test/files/pos/t6994.scala b/test/files/pos/t6994.scala new file mode 100644 index 0000000000..d707196423 --- /dev/null +++ b/test/files/pos/t6994.scala @@ -0,0 +1,8 @@ +object Test { + object NF { + def unapply(t: Throwable): Option[Throwable] = None + } + val x = (try { None } catch { case NF(ex) => None }) getOrElse 0 + // Was emitting a spurious warning post typer: + // "This catches all Throwables. If this is really intended, use `case ex6 : Throwable` to clear this warning." +} diff --git a/test/files/pos/t7011.flags b/test/files/pos/t7011.flags new file mode 100644 index 0000000000..a4c161553e --- /dev/null +++ b/test/files/pos/t7011.flags @@ -0,0 +1 @@ +-Ydebug -Xfatal-warnings
\ No newline at end of file diff --git a/test/files/pos/t7011.scala b/test/files/pos/t7011.scala new file mode 100644 index 0000000000..539f662bc0 --- /dev/null +++ b/test/files/pos/t7011.scala @@ -0,0 +1,7 @@ +object bar { + def foo { + lazy val x = 42 + + {()=>x} + } +}
\ No newline at end of file diff --git a/test/files/pos/t7035.scala b/test/files/pos/t7035.scala new file mode 100644 index 0000000000..f45bd0a878 --- /dev/null +++ b/test/files/pos/t7035.scala @@ -0,0 +1,15 @@ +case class Y(final var x: Int, final private var y: String, final val z1: Boolean, final private val z2: Any) { + + import Test.{y => someY} + List(someY.x: Int, someY.y: String, someY.z1: Boolean, someY.z2: Any) + someY.y = "" +} + +object Test { + val y = Y(0, "", true, new {}) + val unapp: Option[(Int, String, Boolean, Any)] = // was (Int, Boolean, String, Any) !! + Y.unapply(y) + + val Y(a, b, c, d) = y + List(a: Int, b: String, c: Boolean, d: Any) +} diff --git a/test/files/presentation/callcc-interpreter.check b/test/files/presentation/callcc-interpreter.check index 3a08e2a2ea..dd3ee68e45 100644 --- a/test/files/presentation/callcc-interpreter.check +++ b/test/files/presentation/callcc-interpreter.check @@ -3,7 +3,7 @@ reload: CallccInterpreter.scala askTypeCompletion at CallccInterpreter.scala(51,38) ================================================================================ [response] aksTypeCompletion at (51,38) -retrieved 64 members +retrieved 63 members [accessible: true] `class AddcallccInterpreter.Add` [accessible: true] `class AppcallccInterpreter.App` [accessible: true] `class CcccallccInterpreter.Ccc` @@ -50,7 +50,6 @@ retrieved 64 members [accessible: true] `method wait()Unit` [accessible: true] `method wait(x$1: Long)Unit` [accessible: true] `method wait(x$1: Long, x$2: Int)Unit` -[accessible: true] `method x=> callccInterpreter.type` [accessible: true] `method →[B](y: B)(callccInterpreter.type, B)` [accessible: true] `object WrongcallccInterpreter.Wrong.type` [accessible: true] `trait TermcallccInterpreter.Term` diff --git a/test/files/presentation/ide-bug-1000349.check b/test/files/presentation/ide-bug-1000349.check index 44a3207d75..7eeaddc054 100644 --- a/test/files/presentation/ide-bug-1000349.check +++ b/test/files/presentation/ide-bug-1000349.check @@ -3,7 +3,7 @@ reload: CompletionOnEmptyArgMethod.scala askTypeCompletion at CompletionOnEmptyArgMethod.scala(2,17) ================================================================================ [response] aksTypeCompletion at (2,17) -retrieved 37 members +retrieved 36 members [accessible: true] `method !=(x$1: Any)Boolean` [accessible: true] `method !=(x$1: AnyRef)Boolean` [accessible: true] `method ##()Int` @@ -32,7 +32,6 @@ retrieved 37 members [accessible: true] `method wait()Unit` [accessible: true] `method wait(x$1: Long)Unit` [accessible: true] `method wait(x$1: Long, x$2: Int)Unit` -[accessible: true] `method x=> Foo` [accessible: true] `method →[B](y: B)(Foo, B)` [accessible: true] `value __leftOfArrowFoo` [accessible: true] `value __resultOfEnsuringFoo` diff --git a/test/files/presentation/ide-bug-1000475.check b/test/files/presentation/ide-bug-1000475.check index 34c3b557d8..01de4608ca 100644 --- a/test/files/presentation/ide-bug-1000475.check +++ b/test/files/presentation/ide-bug-1000475.check @@ -3,7 +3,7 @@ reload: Foo.scala askTypeCompletion at Foo.scala(3,7) ================================================================================ [response] aksTypeCompletion at (3,7) -retrieved 36 members +retrieved 35 members [accessible: true] `method !=(x$1: Any)Boolean` [accessible: true] `method !=(x$1: AnyRef)Boolean` [accessible: true] `method ##()Int` @@ -29,7 +29,6 @@ retrieved 36 members [accessible: true] `method wait()Unit` [accessible: true] `method wait(x$1: Long)Unit` [accessible: true] `method wait(x$1: Long, x$2: Int)Unit` -[accessible: true] `method x=> Object` [accessible: true] `method →[B](y: B)(Object, B)` [accessible: true] `value __leftOfArrowObject` [accessible: true] `value __resultOfEnsuringObject` @@ -41,7 +40,7 @@ retrieved 36 members askTypeCompletion at Foo.scala(6,10) ================================================================================ [response] aksTypeCompletion at (6,10) -retrieved 36 members +retrieved 35 members [accessible: true] `method !=(x$1: Any)Boolean` [accessible: true] `method !=(x$1: AnyRef)Boolean` [accessible: true] `method ##()Int` @@ -67,7 +66,6 @@ retrieved 36 members [accessible: true] `method wait()Unit` [accessible: true] `method wait(x$1: Long)Unit` [accessible: true] `method wait(x$1: Long, x$2: Int)Unit` -[accessible: true] `method x=> Object` [accessible: true] `method →[B](y: B)(Object, B)` [accessible: true] `value __leftOfArrowObject` [accessible: true] `value __resultOfEnsuringObject` @@ -79,7 +77,7 @@ retrieved 36 members askTypeCompletion at Foo.scala(7,7) ================================================================================ [response] aksTypeCompletion at (7,7) -retrieved 36 members +retrieved 35 members [accessible: true] `method !=(x$1: Any)Boolean` [accessible: true] `method !=(x$1: AnyRef)Boolean` [accessible: true] `method ##()Int` @@ -105,7 +103,6 @@ retrieved 36 members [accessible: true] `method wait()Unit` [accessible: true] `method wait(x$1: Long)Unit` [accessible: true] `method wait(x$1: Long, x$2: Int)Unit` -[accessible: true] `method x=> Object` [accessible: true] `method →[B](y: B)(Object, B)` [accessible: true] `value __leftOfArrowObject` [accessible: true] `value __resultOfEnsuringObject` diff --git a/test/files/presentation/ide-bug-1000531.check b/test/files/presentation/ide-bug-1000531.check index 6c3892d272..7fa550179f 100644 --- a/test/files/presentation/ide-bug-1000531.check +++ b/test/files/presentation/ide-bug-1000531.check @@ -3,7 +3,7 @@ reload: CrashOnLoad.scala askTypeCompletion at CrashOnLoad.scala(6,12) ================================================================================ [response] aksTypeCompletion at (6,12) -retrieved 126 members +retrieved 124 members [accessible: true] `class GroupedIteratorIterator[B]#GroupedIterator` [accessible: true] `method !=(x$1: Any)Boolean` [accessible: true] `method !=(x$1: AnyRef)Boolean` @@ -12,7 +12,6 @@ retrieved 126 members [accessible: true] `method ++[B >: B](that: => scala.collection.GenTraversableOnce[B])Iterator[B]` [accessible: true] `method ->[B](y: B)(java.util.Iterator[B], B)` [accessible: true] `method /:[B](z: B)(op: (B, B) => B)B` -[accessible: true] `method /:\[A1 >: B](z: A1)(op: (A1, A1) => A1)A1` [accessible: true] `method :\[B](z: B)(op: (B, B) => B)B` [accessible: true] `method ==(x$1: Any)Boolean` [accessible: true] `method ==(x$1: AnyRef)Boolean` @@ -115,7 +114,6 @@ retrieved 126 members [accessible: true] `method wait(x$1: Long)Unit` [accessible: true] `method wait(x$1: Long, x$2: Int)Unit` [accessible: true] `method withFilter(p: B => Boolean)Iterator[B]` -[accessible: true] `method x=> java.util.Iterator[B]` [accessible: true] `method zipAll[B, A1 >: B, B1 >: B](that: Iterator[B], thisElem: A1, thatElem: B1)Iterator[(A1, B1)]` [accessible: true] `method zipWithIndex=> Iterator[(B, Int)]` [accessible: true] `method zip[B](that: Iterator[B])Iterator[(B, B)]` diff --git a/test/files/presentation/implicit-member.check b/test/files/presentation/implicit-member.check index 05d6f61699..7b4f792bf3 100644 --- a/test/files/presentation/implicit-member.check +++ b/test/files/presentation/implicit-member.check @@ -3,7 +3,7 @@ reload: ImplicitMember.scala askTypeCompletion at ImplicitMember.scala(7,7) ================================================================================ [response] aksTypeCompletion at (7,7) -retrieved 39 members +retrieved 38 members [accessible: true] `class AppliedImplicitImplicit.AppliedImplicit` [accessible: true] `method !=(x$1: Any)Boolean` [accessible: true] `method !=(x$1: AnyRef)Boolean` @@ -33,7 +33,6 @@ retrieved 39 members [accessible: true] `method wait()Unit` [accessible: true] `method wait(x$1: Long)Unit` [accessible: true] `method wait(x$1: Long, x$2: Int)Unit` -[accessible: true] `method x=> Implicit.type` [accessible: true] `method →[B](y: B)(Implicit.type, B)` [accessible: true] `value __leftOfArrowImplicit.type` [accessible: true] `value __resultOfEnsuringImplicit.type` diff --git a/test/files/presentation/ping-pong.check b/test/files/presentation/ping-pong.check index b666d51de5..c85f6cc21a 100644 --- a/test/files/presentation/ping-pong.check +++ b/test/files/presentation/ping-pong.check @@ -3,7 +3,7 @@ reload: PingPong.scala askTypeCompletion at PingPong.scala(10,23) ================================================================================ [response] aksTypeCompletion at (10,23) -retrieved 40 members +retrieved 39 members [accessible: true] `method !=(x$1: Any)Boolean` [accessible: true] `method !=(x$1: AnyRef)Boolean` [accessible: true] `method ##()Int` @@ -30,7 +30,6 @@ retrieved 40 members [accessible: true] `method wait()Unit` [accessible: true] `method wait(x$1: Long)Unit` [accessible: true] `method wait(x$1: Long, x$2: Int)Unit` -[accessible: true] `method x=> Pong` [accessible: true] `method →[B](y: B)(Pong, B)` [accessible: true] `value __leftOfArrowPong` [accessible: true] `value __resultOfEnsuringPong` @@ -44,7 +43,7 @@ retrieved 40 members askTypeCompletion at PingPong.scala(19,20) ================================================================================ [response] aksTypeCompletion at (19,20) -retrieved 40 members +retrieved 39 members [accessible: true] `method !=(x$1: Any)Boolean` [accessible: true] `method !=(x$1: AnyRef)Boolean` [accessible: true] `method ##()Int` @@ -73,7 +72,6 @@ retrieved 40 members [accessible: true] `method wait()Unit` [accessible: true] `method wait(x$1: Long)Unit` [accessible: true] `method wait(x$1: Long, x$2: Int)Unit` -[accessible: true] `method x=> Ping` [accessible: true] `method →[B](y: B)(Ping, B)` [accessible: true] `value __leftOfArrowPing` [accessible: true] `value __resultOfEnsuringPing` diff --git a/test/files/presentation/t5708.check b/test/files/presentation/t5708.check index c6d4762635..572f404cf4 100644 --- a/test/files/presentation/t5708.check +++ b/test/files/presentation/t5708.check @@ -3,7 +3,7 @@ reload: Completions.scala askTypeCompletion at Completions.scala(17,9) ================================================================================ [response] aksTypeCompletion at (17,9) -retrieved 44 members +retrieved 43 members [accessible: true] `lazy value fooInt` [accessible: true] `method !=(x$1: Any)Boolean` [accessible: true] `method !=(x$1: AnyRef)Boolean` @@ -31,7 +31,6 @@ retrieved 44 members [accessible: true] `method wait()Unit` [accessible: true] `method wait(x$1: Long)Unit` [accessible: true] `method wait(x$1: Long, x$2: Int)Unit` -[accessible: true] `method x=> test.Compat.type` [accessible: true] `method →[B](y: B)(test.Compat.type, B)` [accessible: true] `value CONST_STRINGString("constant")` [accessible: true] `value __leftOfArrowtest.Compat.type` diff --git a/test/files/presentation/visibility.check b/test/files/presentation/visibility.check index 3026e58f7e..87b4463bf7 100644 --- a/test/files/presentation/visibility.check +++ b/test/files/presentation/visibility.check @@ -3,7 +3,7 @@ reload: Completions.scala askTypeCompletion at Completions.scala(14,12) ================================================================================ [response] aksTypeCompletion at (14,12) -retrieved 42 members +retrieved 41 members [accessible: true] `method !=(x$1: Any)Boolean` [accessible: true] `method !=(x$1: AnyRef)Boolean` [accessible: true] `method ##()Int` @@ -36,7 +36,6 @@ retrieved 42 members [accessible: true] `method wait()Unit` [accessible: true] `method wait(x$1: Long)Unit` [accessible: true] `method wait(x$1: Long, x$2: Int)Unit` -[accessible: true] `method x=> accessibility.Foo` [accessible: true] `method →[B](y: B)(accessibility.Foo, B)` [accessible: true] `value __leftOfArrowaccessibility.Foo` [accessible: true] `value __resultOfEnsuringaccessibility.Foo` @@ -47,7 +46,7 @@ retrieved 42 members askTypeCompletion at Completions.scala(16,11) ================================================================================ [response] aksTypeCompletion at (16,11) -retrieved 42 members +retrieved 41 members [accessible: true] `method !=(x$1: Any)Boolean` [accessible: true] `method !=(x$1: AnyRef)Boolean` [accessible: true] `method ##()Int` @@ -81,7 +80,6 @@ retrieved 42 members [accessible: true] `method wait()Unit` [accessible: true] `method wait(x$1: Long)Unit` [accessible: true] `method wait(x$1: Long, x$2: Int)Unit` -[accessible: true] `method x=> accessibility.Foo` [accessible: true] `method →[B](y: B)(accessibility.Foo, B)` [accessible: true] `value __leftOfArrowaccessibility.Foo` [accessible: true] `value __resultOfEnsuringaccessibility.Foo` @@ -91,7 +89,7 @@ retrieved 42 members askTypeCompletion at Completions.scala(22,11) ================================================================================ [response] aksTypeCompletion at (22,11) -retrieved 42 members +retrieved 41 members [accessible: true] `method !=(x$1: Any)Boolean` [accessible: true] `method !=(x$1: AnyRef)Boolean` [accessible: true] `method ##()Int` @@ -124,7 +122,6 @@ retrieved 42 members [accessible: true] `method wait()Unit` [accessible: true] `method wait(x$1: Long)Unit` [accessible: true] `method wait(x$1: Long, x$2: Int)Unit` -[accessible: true] `method x=> accessibility.AccessibilityChecks` [accessible: true] `method →[B](y: B)(accessibility.AccessibilityChecks, B)` [accessible: true] `value __leftOfArrowaccessibility.AccessibilityChecks` [accessible: true] `value __resultOfEnsuringaccessibility.AccessibilityChecks` @@ -135,7 +132,7 @@ retrieved 42 members askTypeCompletion at Completions.scala(28,10) ================================================================================ [response] aksTypeCompletion at (28,10) -retrieved 42 members +retrieved 41 members [accessible: true] `method !=(x$1: Any)Boolean` [accessible: true] `method !=(x$1: AnyRef)Boolean` [accessible: true] `method ##()Int` @@ -164,7 +161,6 @@ retrieved 42 members [accessible: true] `method wait()Unit` [accessible: true] `method wait(x$1: Long)Unit` [accessible: true] `method wait(x$1: Long, x$2: Int)Unit` -[accessible: true] `method x=> accessibility.Foo` [accessible: true] `method →[B](y: B)(accessibility.Foo, B)` [accessible: true] `value __leftOfArrowaccessibility.Foo` [accessible: true] `value __resultOfEnsuringaccessibility.Foo` @@ -179,7 +175,7 @@ retrieved 42 members askTypeCompletion at Completions.scala(37,8) ================================================================================ [response] aksTypeCompletion at (37,8) -retrieved 42 members +retrieved 41 members [accessible: true] `method !=(x$1: Any)Boolean` [accessible: true] `method !=(x$1: AnyRef)Boolean` [accessible: true] `method ##()Int` @@ -207,7 +203,6 @@ retrieved 42 members [accessible: true] `method wait()Unit` [accessible: true] `method wait(x$1: Long)Unit` [accessible: true] `method wait(x$1: Long, x$2: Int)Unit` -[accessible: true] `method x=> accessibility.Foo` [accessible: true] `method →[B](y: B)(accessibility.Foo, B)` [accessible: true] `value __leftOfArrowaccessibility.Foo` [accessible: true] `value __resultOfEnsuringaccessibility.Foo` diff --git a/test/files/run/analyzerPlugins.check b/test/files/run/analyzerPlugins.check new file mode 100644 index 0000000000..0788086459 --- /dev/null +++ b/test/files/run/analyzerPlugins.check @@ -0,0 +1,197 @@ +adaptBoundsToAnnots(List( <: Int), List(type T), List(Int @testAnn)) [2] +annotationsConform(Boolean @testAnn, Boolean) [1] +annotationsConform(Boolean(false), Boolean @testAnn) [1] +annotationsConform(Int @testAnn, ?A) [1] +annotationsConform(Int @testAnn, Any) [1] +annotationsConform(Int @testAnn, Int) [2] +annotationsConform(Int(1) @testAnn, Int) [1] +annotationsConform(Int(1), Int @testAnn) [1] +annotationsConform(Nothing, Int @testAnn) [2] +annotationsConform(String @testAnn, String) [1] +canAdaptAnnotations(Trees$Ident, String) [1] +canAdaptAnnotations(Trees$Select, ?) [1] +canAdaptAnnotations(Trees$Select, Boolean @testAnn) [1] +canAdaptAnnotations(Trees$Select, Boolean) [1] +canAdaptAnnotations(Trees$Select, String @testAnn) [1] +canAdaptAnnotations(Trees$TypeTree, ?) [10] +canAdaptAnnotations(Trees$Typed, ?) [3] +canAdaptAnnotations(Trees$Typed, Any) [1] +canAdaptAnnotations(Trees$Typed, Int) [1] +lub(List(Int @testAnn, Int)) [1] +pluginsPt(?, Trees$Annotated) [7] +pluginsPt(?, Trees$Apply) [8] +pluginsPt(?, Trees$ApplyImplicitView) [2] +pluginsPt(?, Trees$Assign) [7] +pluginsPt(?, Trees$Block) [4] +pluginsPt(?, Trees$ClassDef) [2] +pluginsPt(?, Trees$DefDef) [14] +pluginsPt(?, Trees$Ident) [51] +pluginsPt(?, Trees$If) [2] +pluginsPt(?, Trees$Literal) [16] +pluginsPt(?, Trees$New) [5] +pluginsPt(?, Trees$PackageDef) [1] +pluginsPt(?, Trees$Return) [1] +pluginsPt(?, Trees$Select) [51] +pluginsPt(?, Trees$Super) [2] +pluginsPt(?, Trees$This) [20] +pluginsPt(?, Trees$TypeApply) [3] +pluginsPt(?, Trees$TypeBoundsTree) [2] +pluginsPt(?, Trees$TypeDef) [1] +pluginsPt(?, Trees$TypeTree) [38] +pluginsPt(?, Trees$Typed) [1] +pluginsPt(?, Trees$ValDef) [21] +pluginsPt(Any, Trees$Literal) [2] +pluginsPt(Any, Trees$Typed) [1] +pluginsPt(Array[Any], Trees$ArrayValue) [1] +pluginsPt(Boolean @testAnn, Trees$Literal) [1] +pluginsPt(Boolean @testAnn, Trees$Select) [1] +pluginsPt(Boolean, Trees$Apply) [1] +pluginsPt(Boolean, Trees$Ident) [1] +pluginsPt(Boolean, Trees$Literal) [1] +pluginsPt(Double, Trees$Select) [1] +pluginsPt(Int @testAnn, Trees$Literal) [1] +pluginsPt(Int, Trees$Apply) [1] +pluginsPt(Int, Trees$Ident) [2] +pluginsPt(Int, Trees$If) [1] +pluginsPt(Int, Trees$Literal) [5] +pluginsPt(Int, Trees$Select) [3] +pluginsPt(List, Trees$Apply) [1] +pluginsPt(List[Any], Trees$Select) [1] +pluginsPt(String @testAnn, Trees$Select) [1] +pluginsPt(String, Trees$Apply) [1] +pluginsPt(String, Trees$Block) [2] +pluginsPt(String, Trees$Ident) [4] +pluginsPt(String, Trees$Literal) [1] +pluginsPt(String, Trees$Select) [1] +pluginsPt(String, Trees$Typed) [1] +pluginsPt(Unit, Trees$Assign) [1] +pluginsPt(testAnn, Trees$Apply) [5] +pluginsTypeSig(<none>, Trees$Template) [2] +pluginsTypeSig(class A, Trees$ClassDef) [1] +pluginsTypeSig(class testAnn, Trees$ClassDef) [1] +pluginsTypeSig(constructor A, Trees$DefDef) [2] +pluginsTypeSig(constructor testAnn, Trees$DefDef) [1] +pluginsTypeSig(method foo, Trees$DefDef) [1] +pluginsTypeSig(method method, Trees$DefDef) [1] +pluginsTypeSig(method nested, Trees$DefDef) [1] +pluginsTypeSig(type T, Trees$TypeDef) [2] +pluginsTypeSig(value annotField, Trees$ValDef) [2] +pluginsTypeSig(value f, Trees$ValDef) [1] +pluginsTypeSig(value inferField, Trees$ValDef) [2] +pluginsTypeSig(value lub1, Trees$ValDef) [2] +pluginsTypeSig(value lub2, Trees$ValDef) [2] +pluginsTypeSig(value param, Trees$ValDef) [2] +pluginsTypeSig(value str, Trees$ValDef) [1] +pluginsTypeSig(value x, Trees$ValDef) [4] +pluginsTypeSig(value y, Trees$ValDef) [4] +pluginsTypeSig(variable count, Trees$ValDef) [3] +pluginsTypeSigAccessor(value annotField) [1] +pluginsTypeSigAccessor(value inferField) [1] +pluginsTypeSigAccessor(value lub1) [1] +pluginsTypeSigAccessor(value lub2) [1] +pluginsTypeSigAccessor(value x) [1] +pluginsTypeSigAccessor(value y) [1] +pluginsTypeSigAccessor(variable count) [2] +pluginsTyped( <: Int, Trees$TypeBoundsTree) [2] +pluginsTyped(()Object, Trees$Select) [1] +pluginsTyped(()String, Trees$Ident) [1] +pluginsTyped(()String, Trees$TypeApply) [1] +pluginsTyped(()scala.annotation.Annotation, Trees$Select) [1] +pluginsTyped(()testAnn, Trees$Select) [10] +pluginsTyped((str: String)A <and> (param: Double)A, Trees$Select) [1] +pluginsTyped((x$1: Any)Boolean <and> (x: Double)Boolean <and> (x: Float)Boolean <and> (x: Long)Boolean <and> (x: Int)Boolean <and> (x: Char)Boolean <and> (x: Short)Boolean <and> (x: Byte)Boolean, Trees$Select) [1] +pluginsTyped((x$1: Int)Unit, Trees$Select) [1] +pluginsTyped((x: Double)Double <and> (x: Float)Float <and> (x: Long)Long <and> (x: Int)Int <and> (x: Char)Int <and> (x: Short)Int <and> (x: Byte)Int <and> (x: String)String, Trees$Select) [1] +pluginsTyped((x: String)scala.collection.immutable.StringOps, Trees$Select) [2] +pluginsTyped((xs: Array[Any])scala.collection.mutable.WrappedArray[Any], Trees$TypeApply) [1] +pluginsTyped(<empty>.type, Trees$Ident) [1] +pluginsTyped(<error>, Trees$Select) [1] +pluginsTyped(<notype>, Trees$ClassDef) [2] +pluginsTyped(<notype>, Trees$DefDef) [14] +pluginsTyped(<notype>, Trees$PackageDef) [1] +pluginsTyped(<notype>, Trees$TypeDef) [1] +pluginsTyped(<notype>, Trees$ValDef) [21] +pluginsTyped(<root>, Trees$Ident) [1] +pluginsTyped(=> Boolean @testAnn, Trees$Select) [1] +pluginsTyped(=> Double, Trees$Select) [4] +pluginsTyped(=> Int, Trees$Select) [5] +pluginsTyped(=> Int, Trees$TypeApply) [1] +pluginsTyped(=> String @testAnn, Trees$Select) [1] +pluginsTyped(A, Trees$Apply) [1] +pluginsTyped(A, Trees$Ident) [2] +pluginsTyped(A, Trees$This) [8] +pluginsTyped(A, Trees$TypeTree) [4] +pluginsTyped(A.super.type, Trees$Super) [1] +pluginsTyped(A.this.type, Trees$This) [11] +pluginsTyped(Any, Trees$TypeTree) [1] +pluginsTyped(AnyRef, Trees$Select) [4] +pluginsTyped(Array[Any], Trees$ArrayValue) [1] +pluginsTyped(Boolean @testAnn, Trees$Select) [1] +pluginsTyped(Boolean @testAnn, Trees$TypeTree) [4] +pluginsTyped(Boolean(false), Trees$Literal) [2] +pluginsTyped(Boolean, Trees$Apply) [1] +pluginsTyped(Boolean, Trees$Select) [4] +pluginsTyped(Char('c'), Trees$Literal) [2] +pluginsTyped(Double, Trees$Select) [6] +pluginsTyped(Int @testAnn, Trees$TypeTree) [2] +pluginsTyped(Int @testAnn, Trees$Typed) [2] +pluginsTyped(Int(0), Trees$Literal) [3] +pluginsTyped(Int(1) @testAnn, Trees$Typed) [1] +pluginsTyped(Int(1), Trees$Literal) [8] +pluginsTyped(Int(2), Trees$Literal) [1] +pluginsTyped(Int, Trees$Apply) [1] +pluginsTyped(Int, Trees$Ident) [2] +pluginsTyped(Int, Trees$If) [2] +pluginsTyped(Int, Trees$Select) [15] +pluginsTyped(Int, Trees$TypeTree) [13] +pluginsTyped(List, Trees$Apply) [1] +pluginsTyped(List, Trees$Select) [1] +pluginsTyped(List[Any], Trees$Apply) [1] +pluginsTyped(List[Any], Trees$Select) [1] +pluginsTyped(List[Any], Trees$TypeTree) [3] +pluginsTyped(Nothing, Trees$Return) [1] +pluginsTyped(Nothing, Trees$Select) [2] +pluginsTyped(Object, Trees$Apply) [1] +pluginsTyped(String @testAnn, Trees$Ident) [1] +pluginsTyped(String @testAnn, Trees$Select) [1] +pluginsTyped(String @testAnn, Trees$TypeTree) [4] +pluginsTyped(String(""), Trees$Literal) [2] +pluginsTyped(String("huhu"), Trees$Literal) [1] +pluginsTyped(String("str") @testAnn, Trees$Typed) [1] +pluginsTyped(String("str"), Trees$Literal) [1] +pluginsTyped(String("str"), Trees$Typed) [1] +pluginsTyped(String("two"), Trees$Literal) [2] +pluginsTyped(String, Trees$Apply) [2] +pluginsTyped(String, Trees$Block) [2] +pluginsTyped(String, Trees$Ident) [1] +pluginsTyped(String, Trees$Select) [9] +pluginsTyped(String, Trees$TypeTree) [7] +pluginsTyped(Unit, Trees$Apply) [2] +pluginsTyped(Unit, Trees$Assign) [8] +pluginsTyped(Unit, Trees$Block) [4] +pluginsTyped(Unit, Trees$If) [1] +pluginsTyped(Unit, Trees$Literal) [5] +pluginsTyped(Unit, Trees$TypeTree) [1] +pluginsTyped([A](xs: A*)List[A], Trees$Select) [1] +pluginsTyped([T <: Int]=> Int, Trees$Select) [1] +pluginsTyped([T0]()T0, Trees$Select) [1] +pluginsTyped([T](xs: Array[T])scala.collection.mutable.WrappedArray[T], Trees$Select) [1] +pluginsTyped(annotation.type, Trees$Select) [4] +pluginsTyped(math.type, Trees$Select) [9] +pluginsTyped(scala.annotation.Annotation, Trees$Apply) [1] +pluginsTyped(scala.annotation.TypeConstraint, Trees$Select) [4] +pluginsTyped(scala.annotation.TypeConstraint, Trees$TypeTree) [2] +pluginsTyped(scala.collection.immutable.List.type, Trees$Select) [2] +pluginsTyped(scala.collection.immutable.StringOps, Trees$ApplyImplicitView) [2] +pluginsTyped(scala.collection.mutable.WrappedArray[Any], Trees$Apply) [1] +pluginsTyped(scala.type, Trees$Ident) [1] +pluginsTyped(scala.type, Trees$Select) [1] +pluginsTyped(str.type, Trees$Ident) [3] +pluginsTyped(testAnn, Trees$Apply) [5] +pluginsTyped(testAnn, Trees$Ident) [5] +pluginsTyped(testAnn, Trees$New) [5] +pluginsTyped(testAnn, Trees$This) [1] +pluginsTyped(testAnn, Trees$TypeTree) [2] +pluginsTyped(testAnn.super.type, Trees$Super) [1] +pluginsTyped(type, Trees$Select) [1] +pluginsTypedReturn(return f, String) [1] diff --git a/test/files/run/analyzerPlugins.scala b/test/files/run/analyzerPlugins.scala new file mode 100644 index 0000000000..b20a734fe6 --- /dev/null +++ b/test/files/run/analyzerPlugins.scala @@ -0,0 +1,121 @@ +import scala.tools.partest._ +import scala.tools.nsc._ + +object Test extends DirectTest { + + override def extraSettings: String = "-usejavacp" + + def code = """ + class testAnn extends annotation.TypeConstraint + + class A(param: Double) extends { val x: Int = 1; val y = "two"; type T = A } with AnyRef { + val inferField = ("str": @testAnn) + val annotField: Boolean @testAnn = false + + val lub1 = List('c', (1: Int @testAnn), "") + val lub2 = if (annotField) (1: @testAnn) else 2 + + def foo[T <: Int] = 0 + foo[Int @testAnn] + + var count = 0 + + math.random // some statement + + def method: String = { + math.random + val f = inferField + + def nested(): String = { + if(count == 1) + return f + "huhu" + } + nested() + } + + def this(str: String) { + this(str.toDouble) + math.random + count += 1 + } + } + """.trim + + + def show() { + val global = newCompiler() + import global._ + import analyzer._ + + val output = collection.mutable.ListBuffer[String]() + + object annotChecker extends AnnotationChecker { + def hasTestAnn(tps: Type*) = { + tps exists (_.annotations.map(_.toString) contains "testAnn") + } + + def annotationsConform(tpe1: Type, tpe2: Type): Boolean = { + if (hasTestAnn(tpe1, tpe2)) + output += s"annotationsConform($tpe1, $tpe2)" + true + } + + override def annotationsLub(tp: Type, ts: List[Type]): Type = { + if (hasTestAnn(ts: _*)) + output += s"lub($ts)" + tp + } + + override def adaptBoundsToAnnotations(bounds: List[TypeBounds], tparams: List[Symbol], targs: List[Type]): List[TypeBounds] = { + if (hasTestAnn(targs: _*)) + output += s"adaptBoundsToAnnots($bounds, $tparams, $targs)" + bounds + } + } + + object analyzerPlugin extends AnalyzerPlugin { + def treeClass(t: Tree) = t.getClass.toString.split('.').last + + override def pluginsPt(pt: Type, typer: Typer, tree: Tree, mode: Mode): Type = { + output += s"pluginsPt($pt, ${treeClass(tree)})" + pt + } + + override def pluginsTyped(tpe: Type, typer: Typer, tree: Tree, mode: Mode, pt: Type): Type = { + output += s"pluginsTyped($tpe, ${treeClass(tree)})" + tpe + } + + override def pluginsTypeSig(tpe: Type, typer: Typer, defTree: Tree, pt: Type): Type = { + output += s"pluginsTypeSig(${defTree.symbol}, ${treeClass(defTree)})" + tpe + } + + override def pluginsTypeSigAccessor(tpe: Type, typer: Typer, tree: ValDef, sym: Symbol): Type = { + output += s"pluginsTypeSigAccessor(${tree.symbol})" + tpe + } + + + override def canAdaptAnnotations(tree: Tree, typer: Typer, mode: Mode, pt: Type): Boolean = { + output += s"canAdaptAnnotations(${treeClass(tree)}, $pt)" + false + } + + override def pluginsTypedReturn(tpe: Type, typer: Typer, tree: Return, pt: Type): Type = { + output += s"pluginsTypedReturn($tree, $pt)" + tpe + } + + } + + addAnnotationChecker(annotChecker) + addAnalyzerPlugin(analyzerPlugin) + compileString(global)(code) + + val res = output.groupBy(identity).mapValues(_.size).map { case (k,v) => s"$k [$v]" }.toList.sorted + println(res.mkString("\n")) + } + +} diff --git a/test/files/run/bitsets.scala b/test/files/run/bitsets.scala index 27395683b4..bdeb1fd811 100644 --- a/test/files/run/bitsets.scala +++ b/test/files/run/bitsets.scala @@ -85,8 +85,8 @@ object TestImmutable { import scala.collection.immutable.BitSet val is0 = BitSet() - val is1 = BitSet.fromArray(Array()) - val is2 = BitSet.fromArray(Array(4)) + val is1 = BitSet.fromBitMask(Array()) + val is2 = BitSet.fromBitMask(Array(4)) val is3 = BitSet.empty Console.println("is0 = " + is0) diff --git a/test/files/run/ctries-new/iterator.scala b/test/files/run/ctries-new/iterator.scala index b953a40e00..bb1175e61b 100644 --- a/test/files/run/ctries-new/iterator.scala +++ b/test/files/run/ctries-new/iterator.scala @@ -1,144 +1,134 @@ - - - - import collection._ import collection.concurrent.TrieMap - - object IteratorSpec extends Spec { - + def test() { "work for an empty trie" in { val ct = new TrieMap val it = ct.iterator - + it.hasNext shouldEqual (false) evaluating { it.next() }.shouldProduce [NoSuchElementException] } - + def nonEmptyIteratorCheck(sz: Int) { val ct = new TrieMap[Wrap, Int] for (i <- 0 until sz) ct.put(new Wrap(i), i) - + val it = ct.iterator val tracker = mutable.Map[Wrap, Int]() for (i <- 0 until sz) { assert(it.hasNext == true) tracker += it.next } - + it.hasNext shouldEqual (false) evaluating { it.next() }.shouldProduce [NoSuchElementException] tracker.size shouldEqual (sz) tracker shouldEqual (ct) } - + "work for a 1 element trie" in { nonEmptyIteratorCheck(1) } - + "work for a 2 element trie" in { nonEmptyIteratorCheck(2) } - + "work for a 3 element trie" in { nonEmptyIteratorCheck(3) } - + "work for a 5 element trie" in { nonEmptyIteratorCheck(5) } - + "work for a 10 element trie" in { nonEmptyIteratorCheck(10) } - + "work for a 20 element trie" in { nonEmptyIteratorCheck(20) } - + "work for a 50 element trie" in { nonEmptyIteratorCheck(50) } - + "work for a 100 element trie" in { nonEmptyIteratorCheck(100) } - + "work for a 1k element trie" in { nonEmptyIteratorCheck(1000) } - + "work for a 5k element trie" in { nonEmptyIteratorCheck(5000) } - + "work for a 75k element trie" in { nonEmptyIteratorCheck(75000) } - + "work for a 250k element trie" in { nonEmptyIteratorCheck(500000) } - + def nonEmptyCollideCheck(sz: Int) { val ct = new TrieMap[DumbHash, Int] for (i <- 0 until sz) ct.put(new DumbHash(i), i) - + val it = ct.iterator val tracker = mutable.Map[DumbHash, Int]() for (i <- 0 until sz) { assert(it.hasNext == true) tracker += it.next } - + it.hasNext shouldEqual (false) evaluating { it.next() }.shouldProduce [NoSuchElementException] tracker.size shouldEqual (sz) tracker shouldEqual (ct) } - + "work for colliding hashcodes, 2 element trie" in { nonEmptyCollideCheck(2) } - + "work for colliding hashcodes, 3 element trie" in { nonEmptyCollideCheck(3) } - + "work for colliding hashcodes, 5 element trie" in { nonEmptyCollideCheck(5) } - + "work for colliding hashcodes, 10 element trie" in { nonEmptyCollideCheck(10) } - + "work for colliding hashcodes, 100 element trie" in { nonEmptyCollideCheck(100) } - + "work for colliding hashcodes, 500 element trie" in { nonEmptyCollideCheck(500) } - + "work for colliding hashcodes, 5k element trie" in { nonEmptyCollideCheck(5000) } - + def assertEqual(a: Map[Wrap, Int], b: Map[Wrap, Int]) { if (a != b) { println(a.size + " vs " + b.size) - // println(a) - // println(b) - // println(a.toSeq.sortBy((x: (Wrap, Int)) => x._1.i)) - // println(b.toSeq.sortBy((x: (Wrap, Int)) => x._1.i)) } assert(a == b) } - + "be consistent when taken with concurrent modifications" in { val sz = 25000 val W = 15 @@ -146,40 +136,40 @@ object IteratorSpec extends Spec { val checks = 5 val ct = new TrieMap[Wrap, Int] for (i <- 0 until sz) ct.put(new Wrap(i), i) - + class Modifier extends Thread { override def run() { for (i <- 0 until sz) ct.putIfAbsent(new Wrap(i), i) match { case Some(_) => ct.remove(new Wrap(i)) - case None => + case None => } } } - + def consistentIteration(ct: TrieMap[Wrap, Int], checks: Int) { class Iter extends Thread { override def run() { val snap = ct.readOnlySnapshot() val initial = mutable.Map[Wrap, Int]() for (kv <- snap) initial += kv - + for (i <- 0 until checks) { assertEqual(snap.iterator.toMap, initial) } } } - + val iter = new Iter iter.start() iter.join() } - + val threads = for (_ <- 0 until W) yield new Modifier threads.foreach(_.start()) for (_ <- 0 until S) consistentIteration(ct, checks) threads.foreach(_.join()) } - + "be consistent with a concurrent removal with a well defined order" in { val sz = 150000 val sgroupsize = 10 @@ -187,17 +177,16 @@ object IteratorSpec extends Spec { val removerslowdown = 50 val ct = new TrieMap[Wrap, Int] for (i <- 0 until sz) ct.put(new Wrap(i), i) - + class Remover extends Thread { override def run() { for (i <- 0 until sz) { assert(ct.remove(new Wrap(i)) == Some(i)) for (i <- 0 until removerslowdown) ct.get(new Wrap(i)) // slow down, mate } - //println("done removing") } } - + def consistentIteration(it: Iterator[(Wrap, Int)]) = { class Iter extends Thread { override def run() { @@ -210,7 +199,7 @@ object IteratorSpec extends Spec { } new Iter } - + val remover = new Remover remover.start() for (_ <- 0 until sgroupnum) { @@ -218,27 +207,25 @@ object IteratorSpec extends Spec { iters.foreach(_.start()) iters.foreach(_.join()) } - //println("done with iterators") remover.join() } - + "be consistent with a concurrent insertion with a well defined order" in { val sz = 150000 val sgroupsize = 10 val sgroupnum = 10 val inserterslowdown = 50 val ct = new TrieMap[Wrap, Int] - + class Inserter extends Thread { override def run() { for (i <- 0 until sz) { assert(ct.put(new Wrap(i), i) == None) for (i <- 0 until inserterslowdown) ct.get(new Wrap(i)) // slow down, mate } - //println("done inserting") } } - + def consistentIteration(it: Iterator[(Wrap, Int)]) = { class Iter extends Thread { override def run() { @@ -251,7 +238,7 @@ object IteratorSpec extends Spec { } new Iter } - + val inserter = new Inserter inserter.start() for (_ <- 0 until sgroupnum) { @@ -259,31 +246,30 @@ object IteratorSpec extends Spec { iters.foreach(_.start()) iters.foreach(_.join()) } - //println("done with iterators") inserter.join() } - + "work on a yet unevaluated snapshot" in { val sz = 50000 val ct = new TrieMap[Wrap, Int] for (i <- 0 until sz) ct.update(new Wrap(i), i) - + val snap = ct.snapshot() val it = snap.iterator - + while (it.hasNext) it.next() } - + "be duplicated" in { val sz = 50 val ct = collection.parallel.mutable.ParTrieMap((0 until sz) zip (0 until sz): _*) val it = ct.splitter for (_ <- 0 until (sz / 2)) it.next() val dupit = it.dup - + it.toList shouldEqual dupit.toList } - + } - + } diff --git a/test/files/run/enums.scala b/test/files/run/enums.scala index 9cdeed2691..3aad7ec320 100644 --- a/test/files/run/enums.scala +++ b/test/files/run/enums.scala @@ -36,8 +36,11 @@ object Test2 { object Test3 { - object Direction extends Enumeration("North", "South", "East", "West") { - val North, South, East, West = Value; + object Direction extends Enumeration { + val North = Value("North") + val South = Value("South") + val East = Value("East") + val West = Value("West") } def run: Int = { @@ -48,8 +51,11 @@ object Test3 { object Test4 { - object Direction extends Enumeration("North", "South", "East", "West") { - val North, South, East, West = Value; + object Direction extends Enumeration { + val North = Value("North") + val South = Value("South") + val East = Value("East") + val West = Value("West") } def run: Int = { diff --git a/test/files/run/existentials-in-compiler.check b/test/files/run/existentials-in-compiler.check index 0d7a9298b4..b0d852865d 100644 --- a/test/files/run/existentials-in-compiler.check +++ b/test/files/run/existentials-in-compiler.check @@ -8,22 +8,22 @@ abstract trait BippyLike[A <: AnyRef, B <: List[A], This <: extest.BippyLike[A,B extest.BippyLike[A,B,This] forSome { A <: AnyRef; B <: List[A]; This <: extest.BippyLike[A,B,This] with extest.Bippy[A,B] } abstract trait Contra[-A >: AnyRef, -B] extends AnyRef - extest.Contra[_ >: AnyRef, _] + extest.Contra[AnyRef, _] abstract trait ContraLike[-A >: AnyRef, -B >: List[A]] extends AnyRef extest.ContraLike[A,B] forSome { -A >: AnyRef; -B >: List[A] } abstract trait Cov01[+A <: AnyRef, +B] extends AnyRef - extest.Cov01[_ <: AnyRef, _] + extest.Cov01[AnyRef,Any] abstract trait Cov02[+A <: AnyRef, B] extends AnyRef - extest.Cov02[_ <: AnyRef, _] + extest.Cov02[AnyRef, _] abstract trait Cov03[+A <: AnyRef, -B] extends AnyRef - extest.Cov03[_ <: AnyRef, _] + extest.Cov03[AnyRef, _] abstract trait Cov04[A <: AnyRef, +B] extends AnyRef - extest.Cov04[_ <: AnyRef, _] + extest.Cov04[_ <: AnyRef, Any] abstract trait Cov05[A <: AnyRef, B] extends AnyRef extest.Cov05[_ <: AnyRef, _] @@ -32,7 +32,7 @@ abstract trait Cov06[A <: AnyRef, -B] extends AnyRef extest.Cov06[_ <: AnyRef, _] abstract trait Cov07[-A <: AnyRef, +B] extends AnyRef - extest.Cov07[_ <: AnyRef, _] + extest.Cov07[_ <: AnyRef, Any] abstract trait Cov08[-A <: AnyRef, B] extends AnyRef extest.Cov08[_ <: AnyRef, _] @@ -41,16 +41,16 @@ abstract trait Cov09[-A <: AnyRef, -B] extends AnyRef extest.Cov09[_ <: AnyRef, _] abstract trait Cov11[+A <: AnyRef, +B <: List[_]] extends AnyRef - extest.Cov11[_ <: AnyRef, _ <: List[_]] + extest.Cov11[AnyRef,List[_]] abstract trait Cov12[+A <: AnyRef, B <: List[_]] extends AnyRef - extest.Cov12[_ <: AnyRef, _ <: List[_]] + extest.Cov12[AnyRef, _ <: List[_]] abstract trait Cov13[+A <: AnyRef, -B <: List[_]] extends AnyRef - extest.Cov13[_ <: AnyRef, _ <: List[_]] + extest.Cov13[AnyRef, _ <: List[_]] abstract trait Cov14[A <: AnyRef, +B <: List[_]] extends AnyRef - extest.Cov14[_ <: AnyRef, _ <: List[_]] + extest.Cov14[_ <: AnyRef, List[_]] abstract trait Cov15[A <: AnyRef, B <: List[_]] extends AnyRef extest.Cov15[_ <: AnyRef, _ <: List[_]] @@ -59,7 +59,7 @@ abstract trait Cov16[A <: AnyRef, -B <: List[_]] extends AnyRef extest.Cov16[_ <: AnyRef, _ <: List[_]] abstract trait Cov17[-A <: AnyRef, +B <: List[_]] extends AnyRef - extest.Cov17[_ <: AnyRef, _ <: List[_]] + extest.Cov17[_ <: AnyRef, List[_]] abstract trait Cov18[-A <: AnyRef, B <: List[_]] extends AnyRef extest.Cov18[_ <: AnyRef, _ <: List[_]] @@ -68,16 +68,16 @@ abstract trait Cov19[-A <: AnyRef, -B <: List[_]] extends AnyRef extest.Cov19[_ <: AnyRef, _ <: List[_]] abstract trait Cov21[+A, +B] extends AnyRef - extest.Cov21[_, _] + extest.Cov21[Any,Any] abstract trait Cov22[+A, B] extends AnyRef - extest.Cov22[_, _] + extest.Cov22[Any, _] abstract trait Cov23[+A, -B] extends AnyRef - extest.Cov23[_, _] + extest.Cov23[Any, _] abstract trait Cov24[A, +B] extends AnyRef - extest.Cov24[_, _] + extest.Cov24[_, Any] abstract trait Cov25[A, B] extends AnyRef extest.Cov25[_, _] @@ -86,7 +86,7 @@ abstract trait Cov26[A, -B] extends AnyRef extest.Cov26[_, _] abstract trait Cov27[-A, +B] extends AnyRef - extest.Cov27[_, _] + extest.Cov27[_, Any] abstract trait Cov28[-A, B] extends AnyRef extest.Cov28[_, _] @@ -122,16 +122,16 @@ abstract trait Cov39[-A, -B, C <: Tuple2[_, _]] extends AnyRef extest.Cov39[_, _, _ <: Tuple2[_, _]] abstract trait Cov41[+A >: Null, +B] extends AnyRef - extest.Cov41[_ >: Null, _] + extest.Cov41[Any,Any] abstract trait Cov42[+A >: Null, B] extends AnyRef - extest.Cov42[_ >: Null, _] + extest.Cov42[Any, _] abstract trait Cov43[+A >: Null, -B] extends AnyRef - extest.Cov43[_ >: Null, _] + extest.Cov43[Any, _] abstract trait Cov44[A >: Null, +B] extends AnyRef - extest.Cov44[_ >: Null, _] + extest.Cov44[_ >: Null, Any] abstract trait Cov45[A >: Null, B] extends AnyRef extest.Cov45[_ >: Null, _] @@ -140,7 +140,7 @@ abstract trait Cov46[A >: Null, -B] extends AnyRef extest.Cov46[_ >: Null, _] abstract trait Cov47[-A >: Null, +B] extends AnyRef - extest.Cov47[_ >: Null, _] + extest.Cov47[_ >: Null, Any] abstract trait Cov48[-A >: Null, B] extends AnyRef extest.Cov48[_ >: Null, _] @@ -149,7 +149,7 @@ abstract trait Cov49[-A >: Null, -B] extends AnyRef extest.Cov49[_ >: Null, _] abstract trait Covariant[+A <: AnyRef, +B] extends AnyRef - extest.Covariant[_ <: AnyRef, _] + extest.Covariant[AnyRef,Any] abstract trait CovariantLike[+A <: AnyRef, +B <: List[A], +This <: extest.CovariantLike[A,B,This] with extest.Covariant[A,B]] extends AnyRef extest.CovariantLike[A,B,This] forSome { +A <: AnyRef; +B <: List[A]; +This <: extest.CovariantLike[A,B,This] with extest.Covariant[A,B] } diff --git a/test/files/run/idempotency-case-classes.check b/test/files/run/idempotency-case-classes.check index 700af3b81b..80d178cba3 100644 --- a/test/files/run/idempotency-case-classes.check +++ b/test/files/run/idempotency-case-classes.check @@ -42,7 +42,7 @@ C(2,3) C.super.<init>(); () }; - final override def toString(): String = "C"; + final override <synthetic> def toString(): String = "C"; case <synthetic> def apply(x: Int, y: Int): C = new C(x, y); case <synthetic> def unapply(x$0: C): Option[(Int, Int)] = if (x$0.==(null)) scala.this.None diff --git a/test/files/run/lazy-locals.scala b/test/files/run/lazy-locals.scala index aca15d0357..8d4c61be8c 100644 --- a/test/files/run/lazy-locals.scala +++ b/test/files/run/lazy-locals.scala @@ -120,7 +120,7 @@ object Test extends App { t } - /** test recursive method with lazy vals and a all vals forced */ + /** test recursive method with lazy vals and all vals forced */ def testLazyRecMany(n: Int): Int = { lazy val t = { println("forced lazy val t at n = " + n); 42 } if (n > 0) { diff --git a/test/files/run/map_java_conversions.scala b/test/files/run/map_java_conversions.scala index 7714b2cc74..751167c04d 100644 --- a/test/files/run/map_java_conversions.scala +++ b/test/files/run/map_java_conversions.scala @@ -19,7 +19,7 @@ object Test { val concMap = new java.util.concurrent.ConcurrentHashMap[String, String] test(concMap) - val cmap = asScalaConcurrentMap(concMap) + val cmap = mapAsScalaConcurrentMap(concMap) cmap.putIfAbsent("absentKey", "absentValue") cmap.put("somekey", "somevalue") assert(cmap.remove("somekey", "somevalue") == true) diff --git a/test/files/run/reify-staticXXX.scala b/test/files/run/reify-staticXXX.scala index dc861f843e..e80157dd8f 100644 --- a/test/files/run/reify-staticXXX.scala +++ b/test/files/run/reify-staticXXX.scala @@ -4,12 +4,12 @@ import scala.tools.reflect.Eval object B { override def toString = "object" } class C { override def toString = "class" } -package foo { +package foo1 { object B { override def toString = "package > object" } class C { override def toString = "package > class" } } -object foo { +object Foo2 { object B { override def toString = "object > object" } class C { override def toString = "object > class" } } @@ -20,14 +20,14 @@ object packageless { println(reify(B).eval) println(new C) println(reify(new C).eval) - println(foo.B) - println(reify(foo.B).eval) - println(new foo.C) - println(reify(new foo.C).eval) - println(_root_.foo.B) - println(reify(_root_.foo.B).eval) - println(new _root_.foo.C) - println(reify(new _root_.foo.C).eval) + println(Foo2.B) + println(reify(Foo2.B).eval) + println(new Foo2.C) + println(reify(new Foo2.C).eval) + println(_root_.foo1.B) + println(reify(_root_.foo1.B).eval) + println(new _root_.foo1.C) + println(reify(new _root_.foo1.C).eval) } } @@ -38,14 +38,14 @@ package packageful { println(reify(B).eval) println(new C) println(reify(new C).eval) - println(foo.B) - println(reify(foo.B).eval) - println(new foo.C) - println(reify(new foo.C).eval) - println(_root_.foo.B) - println(reify(_root_.foo.B).eval) - println(new _root_.foo.C) - println(reify(new _root_.foo.C).eval) + println(Foo2.B) + println(reify(Foo2.B).eval) + println(new Foo2.C) + println(reify(new Foo2.C).eval) + println(_root_.foo1.B) + println(reify(_root_.foo1.B).eval) + println(new _root_.foo1.C) + println(reify(new _root_.foo1.C).eval) } } } diff --git a/test/files/run/reify_magicsymbols.check b/test/files/run/reify_magicsymbols.check index e2aa46a364..c9d892d793 100644 --- a/test/files/run/reify_magicsymbols.check +++ b/test/files/run/reify_magicsymbols.check @@ -10,4 +10,4 @@ List[Null] List[Nothing] AnyRef{def foo(x: Int): Int} Int* => Unit -=> Int => Unit +(=> Int) => Unit diff --git a/test/files/run/repl-empty-package.check b/test/files/run/repl-empty-package.check new file mode 100644 index 0000000000..ecf79c2c6d --- /dev/null +++ b/test/files/run/repl-empty-package.check @@ -0,0 +1,7 @@ +Type in expressions to have them evaluated. +Type :help for more information. + +scala> println(Bippy.bippy) +bippy! + +scala> diff --git a/test/files/run/repl-empty-package/s_1.scala b/test/files/run/repl-empty-package/s_1.scala new file mode 100644 index 0000000000..b59d16b338 --- /dev/null +++ b/test/files/run/repl-empty-package/s_1.scala @@ -0,0 +1,3 @@ +object Bippy { + def bippy = "bippy!" +} diff --git a/test/files/run/repl-empty-package/s_2.scala b/test/files/run/repl-empty-package/s_2.scala new file mode 100644 index 0000000000..512e6dd382 --- /dev/null +++ b/test/files/run/repl-empty-package/s_2.scala @@ -0,0 +1,5 @@ +import scala.tools.partest.ReplTest + +object Test extends ReplTest { + def code = "println(Bippy.bippy)" +} diff --git a/test/files/run/t1505.scala b/test/files/run/t1505.scala index a246e8a35b..d7feb30ce3 100644 --- a/test/files/run/t1505.scala +++ b/test/files/run/t1505.scala @@ -1,5 +1,3 @@ -object P extends Enumeration(0, "A", "B", "C") { val A, B, C = Value } - object Q extends Enumeration { val A = Value("A") val B = Value("B") @@ -11,9 +9,14 @@ object R extends Enumeration { } object Test extends App { - assert(P(0) == P.withName("A")) - assert(P.C == P.withName("C")) - assert(Q(0) == Q.withName("A")) assert(Q.C == Q.withName("C")) + + assert(R(0) == R.withName("A")) + assert(R.C == R.withName("C")) + + var failed = false + try { Q.withName("x") } catch { case _: NoSuchElementException => failed = true } + assert(failed) + } diff --git a/test/files/run/t2577.check b/test/files/run/t2577.check new file mode 100644 index 0000000000..4a584e4989 --- /dev/null +++ b/test/files/run/t2577.check @@ -0,0 +1 @@ +Nothing diff --git a/test/files/run/t2577.scala b/test/files/run/t2577.scala new file mode 100644 index 0000000000..6d836a3996 --- /dev/null +++ b/test/files/run/t2577.scala @@ -0,0 +1,17 @@ +case class annot[T]() extends scala.annotation.StaticAnnotation + +// type inference should infer @annot[Nothing] instead of @annot[T] +// note the T is not in scope here! +class Foo[@annot U] + +object Test { + import scala.reflect.runtime.universe._ + val x = new Foo + + def main(args: Array[String]): Unit = { + val targ = typeOf[x.type].widen match { + case TypeRef(_, _, arg :: _) => arg + } + println(targ) + } +} diff --git a/test/files/run/t2818.check b/test/files/run/t2818.check new file mode 100644 index 0000000000..31286c990b --- /dev/null +++ b/test/files/run/t2818.check @@ -0,0 +1,4 @@ +105 +499999500000 +0 +1 diff --git a/test/files/run/t2818.scala b/test/files/run/t2818.scala new file mode 100644 index 0000000000..19b67cbc88 --- /dev/null +++ b/test/files/run/t2818.scala @@ -0,0 +1,6 @@ +object Test extends App { + println((List.range(1L, 15L) :\ 0L) (_ + _)) + println((List.range(1L, 1000000L) :\ 0L) (_ + _)) + println((List.fill(5)(1) :\ 1) (_ - _)) + println((List.fill(1000000)(1) :\ 1) (_ - _)) +} diff --git a/test/files/run/t2873.check b/test/files/run/t2873.check index 9198280f61..209b679c07 100644 --- a/test/files/run/t2873.check +++ b/test/files/run/t2873.check @@ -1 +1 @@ -scala.collection.immutable.RedBlack<A>.Empty$ +RedBlack<A>.Empty$ diff --git a/test/files/run/t2873.scala b/test/files/run/t2873.scala index 8d48a8dbb4..3a3cc59b46 100644 --- a/test/files/run/t2873.scala +++ b/test/files/run/t2873.scala @@ -1,5 +1,10 @@ +abstract class RedBlack[A] extends Serializable { + abstract class Tree[+B] extends Serializable + case object Empty extends Tree[Nothing] +} + object Test { def main(args: Array[String]): Unit = { - println(classOf[scala.collection.immutable.RedBlack[_]].getMethod("Empty").getGenericReturnType) + println(classOf[RedBlack[_]].getMethod("Empty").getGenericReturnType) } } diff --git a/test/files/run/t3353.check b/test/files/run/t3353.check new file mode 100644 index 0000000000..8b4ae1fe69 --- /dev/null +++ b/test/files/run/t3353.check @@ -0,0 +1 @@ +Got: foo and None diff --git a/test/files/run/t3353.scala b/test/files/run/t3353.scala new file mode 100644 index 0000000000..eeb63c1b05 --- /dev/null +++ b/test/files/run/t3353.scala @@ -0,0 +1,10 @@ +object Test extends App { + + "foo" match { + case Matcher(result) => println(result) + } + + object Matcher{ + def unapply(s: String)(implicit secondParam: Option[String] = None) = Some("Got: " + s + " and " + secondParam) + } +} diff --git a/test/files/run/t4729/S_2.scala b/test/files/run/t4729/S_2.scala index e34e3d34d4..a80afb0257 100644 --- a/test/files/run/t4729/S_2.scala +++ b/test/files/run/t4729/S_2.scala @@ -20,7 +20,7 @@ object Test { (new ScalaVarArgs).method("1", "2") (new ScalaVarArgs: J_1).method("1", "2") - //[4] Not Ok -- error when assigning anonymous class to a explictly typed val + //[4] Not Ok -- error when assigning anonymous class to an explictly typed val // Compiler error: object creation impossible, since method method in trait VarArgs of type (s: <repeated...>[java.lang.String])Unit is not defined val tagged: J_1 = new J_1 { def method(s: String*) { println(s) } diff --git a/test/files/run/t4859.check b/test/files/run/t4859.check new file mode 100644 index 0000000000..d329744ca0 --- /dev/null +++ b/test/files/run/t4859.check @@ -0,0 +1,8 @@ +Inner +Inner.i +About to reference Inner.i +Outer +Inner.i +About to reference O.N +About to reference O.N +About to reference O.N.apply() diff --git a/test/files/run/t4859.scala b/test/files/run/t4859.scala new file mode 100644 index 0000000000..3c20cea983 --- /dev/null +++ b/test/files/run/t4859.scala @@ -0,0 +1,29 @@ +object O { + case class N() + object P +} + +object Outer { + println("Outer") + object Inner { + println("Inner") + def i { + println("Inner.i") + } + } +} + +object Test { + def main(args: Array[String]) { + Outer.Inner.i // we still don't initialize Outer here (but should we?) + + {println("About to reference Inner.i"); Outer}.Inner.i // Outer will be initialized. + + {println("About to reference O.N" ); O}.N + + {println("About to reference O.N" ); O}.N + + {println("About to reference O.N.apply()"); O}.N.apply() + } +} + diff --git a/test/files/run/t5225_2.check b/test/files/run/t5225_2.check index 8ed54a14bb..477ea4eb6d 100644 --- a/test/files/run/t5225_2.check +++ b/test/files/run/t5225_2.check @@ -1,4 +1,4 @@ { - def foo(@new cloneable() x: Int) = ""; + def foo(@new elidable(0) x: Int) = ""; () } diff --git a/test/files/run/t5225_2.scala b/test/files/run/t5225_2.scala index d1b607499c..cf0f23a5c8 100644 --- a/test/files/run/t5225_2.scala +++ b/test/files/run/t5225_2.scala @@ -1,6 +1,6 @@ import scala.reflect.runtime.universe._ object Test extends App { - val tree = reify{def foo(@cloneable x: Int) = ""}.tree + val tree = reify{def foo(@annotation.elidable(0) x: Int) = ""}.tree println(tree.toString) }
\ No newline at end of file diff --git a/test/files/run/t5543.check b/test/files/run/t5543.check index 517038f4c7..2ef2d51ff4 100644 --- a/test/files/run/t5543.check +++ b/test/files/run/t5543.check @@ -1,3 +1,9 @@ Test, 7, 119 m, 3, 19 Test, 5, 85 +T +C +T +T +D +T diff --git a/test/files/run/t5543.scala b/test/files/run/t5543.scala index 651bc7f2b2..3684bf9690 100644 --- a/test/files/run/t5543.scala +++ b/test/files/run/t5543.scala @@ -22,5 +22,24 @@ object Test extends Function0[Int] { println(sut.toString) println(sut.m()) println(A.init()()) + + println((new T.C()).x) + println((new T.D(0,0)).x) + } +} + +object T { + override def toString = "T" + + // `this` refers to T + class C(val x: Any = {println(this); this}) { // prints T + println(this) // prints C + override def toString() = "C" + } + + class D(val x: Any) { + override def toString() = "D" + // `this` refers again to T + def this(a: Int, b: Int, c: Any = {println(this); this}) { this(c); println(this) } // prints T, then prints D } } diff --git a/test/files/run/t5568.check b/test/files/run/t5568.check new file mode 100644 index 0000000000..67aaf16e07 --- /dev/null +++ b/test/files/run/t5568.check @@ -0,0 +1,9 @@ +void +int +class scala.runtime.BoxedUnit +class scala.runtime.BoxedUnit +class java.lang.Integer +class java.lang.Integer +5 +5 +5 diff --git a/test/files/run/t5568.scala b/test/files/run/t5568.scala new file mode 100644 index 0000000000..14599d9ed2 --- /dev/null +++ b/test/files/run/t5568.scala @@ -0,0 +1,16 @@ +object Test { + def main(args: Array[String]): Unit = { + // these should give unboxed results + println(().getClass) + println(5.getClass) + // these should give boxed results + println(().asInstanceOf[AnyRef with Unit].getClass) + println(().asInstanceOf[Unit with AnyRef].getClass) + println(5.asInstanceOf[AnyRef with Int].getClass) + println(5.asInstanceOf[Int with AnyRef].getClass) + //make sure ## wasn't broken + println(5.##) + println((5.asInstanceOf[AnyRef]).##) + println((5:Any).##) + } +} diff --git a/test/files/run/t5879.check b/test/files/run/t5879.check index b6cbda35a7..4bdf3f5fcf 100644 --- a/test/files/run/t5879.check +++ b/test/files/run/t5879.check @@ -1,16 +1,8 @@ Map(1 -> 1) 1 -Map(1 -> 1) -1 -(1,1) -Map(1 -> 1) -1 (1,1) Map(1 -> 1) 1 (1,2) Map(1 -> 2) 2 -(1,2) -Map(1 -> 2) -2
\ No newline at end of file diff --git a/test/files/run/t5879.scala b/test/files/run/t5879.scala index e1c07fc4c2..18dd94289d 100644 --- a/test/files/run/t5879.scala +++ b/test/files/run/t5879.scala @@ -17,10 +17,6 @@ object Test { val r = a.merged(b)(null) println(r) println(r(1)) - - val rold = a.merge(b) - println(rold) - println(rold(1)) } def resolveFirst() { @@ -34,10 +30,6 @@ object Test { val r = a.merged(b) { collision } println(r) println(r(1)) - - val rold = a.merge(b, collision) - println(rold) - println(rold(1)) } def resolveSecond() { @@ -51,10 +43,6 @@ object Test { val r = a.merged(b) { collision } println(r) println(r(1)) - - val rold = a.merge(b, collision) - println(rold) - println(rold(1)) } def resolveMany() { @@ -66,9 +54,6 @@ object Test { val r = a.merged(b) { collision } for ((k, v) <- r) assert(v == 100 + 2 * k, (k, v)) - - val rold = a.merge(b, collision) - for ((k, v) <- r) assert(v == 100 + 2 * k, (k, v)) } } diff --git a/test/files/run/t6011c.scala b/test/files/run/t6011c.scala new file mode 100644 index 0000000000..0647e3f81a --- /dev/null +++ b/test/files/run/t6011c.scala @@ -0,0 +1,13 @@ +object Test extends App { + // A variation of SI-6011, which eluded the fix + // in 2.10.0. + // + // duplicate keys in SWITCH, can't pick arbitrarily one of them to evict, see SI-6011. + // at scala.reflect.internal.SymbolTable.abort(SymbolTable.scala:50) + // at scala.tools.nsc.Global.abort(Global.scala:249) + // at scala.tools.nsc.backend.jvm.GenASM$JPlainBuilder$jcode$.emitSWITCH(GenASM.scala:1850) + ((1: Byte): @unchecked @annotation.switch) match { + case 1 => 2 + case 1 => 3 // crash + } +} diff --git a/test/files/run/t6028.check b/test/files/run/t6028.check index 42921ae2f5..942f3d5f0c 100644 --- a/test/files/run/t6028.check +++ b/test/files/run/t6028.check @@ -15,7 +15,7 @@ package <empty> { } }; def bar(barParam: Int): Object = { - @volatile var MethodLocalObject$module: runtime.VolatileObjectRef = new runtime.VolatileObjectRef(<empty>); + @volatile var MethodLocalObject$module: runtime.VolatileObjectRef = new runtime.VolatileObjectRef(null); T.this.MethodLocalObject$1(barParam, MethodLocalObject$module) }; def tryy(tryyParam: Int): Function0 = { diff --git a/test/files/run/t6135.scala b/test/files/run/t6135.scala new file mode 100644 index 0000000000..c0f8f3fd1d --- /dev/null +++ b/test/files/run/t6135.scala @@ -0,0 +1,13 @@ +object Test extends App { + class A { class V } + + abstract class B[S] { + def foo(t: S, a: A)(v: a.V) + } + + val b1 = new B[String] { + def foo(t: String, a: A)(v: a.V) = () // Bridge method required here! + } + + b1.foo("", null)(null) +} diff --git a/test/files/run/t6329_repl.check b/test/files/run/t6329_repl.check index 8663184bde..55d689f2fb 100644 --- a/test/files/run/t6329_repl.check +++ b/test/files/run/t6329_repl.check @@ -3,11 +3,37 @@ Type :help for more information. scala> -scala> classManifest[List[_]] +scala> import scala.reflect.classTag +import scala.reflect.classTag + +scala> classManifest[scala.List[_]] warning: there were 1 deprecation warnings; re-run with -deprecation for details -res0: scala.reflect.ClassTag[List[_]] = scala.collection.immutable.List[Any] +res0: scala.reflect.ClassTag[List[_]] = scala.collection.immutable.List[<?>] -scala> scala.reflect.classTag[List[_]] +scala> classTag[scala.List[_]] res1: scala.reflect.ClassTag[List[_]] = scala.collection.immutable.List +scala> classManifest[scala.collection.immutable.List[_]] +warning: there were 1 deprecation warnings; re-run with -deprecation for details +res2: scala.reflect.ClassTag[List[_]] = scala.collection.immutable.List[<?>] + +scala> classTag[scala.collection.immutable.List[_]] +res3: scala.reflect.ClassTag[List[_]] = scala.collection.immutable.List + +scala> classManifest[Predef.Set[_]] +warning: there were 1 deprecation warnings; re-run with -deprecation for details +res4: scala.reflect.ClassTag[scala.collection.immutable.Set[_]] = scala.collection.immutable.Set[<?>] + +scala> classTag[Predef.Set[_]] +res5: scala.reflect.ClassTag[scala.collection.immutable.Set[_]] = scala.collection.immutable.Set + +scala> classManifest[scala.collection.immutable.Set[_]] +warning: there were 1 deprecation warnings; re-run with -deprecation for details +res6: scala.reflect.ClassTag[scala.collection.immutable.Set[_]] = scala.collection.immutable.Set[<?>] + +scala> classTag[scala.collection.immutable.Set[_]] +res7: scala.reflect.ClassTag[scala.collection.immutable.Set[_]] = scala.collection.immutable.Set + +scala> + scala> diff --git a/test/files/run/t6329_repl.scala b/test/files/run/t6329_repl.scala index add6d64962..f210d6512c 100644 --- a/test/files/run/t6329_repl.scala +++ b/test/files/run/t6329_repl.scala @@ -2,7 +2,14 @@ import scala.tools.partest.ReplTest object Test extends ReplTest { def code = """ - |classManifest[List[_]] - |scala.reflect.classTag[List[_]] - |""".stripMargin + |import scala.reflect.classTag + |classManifest[scala.List[_]] + |classTag[scala.List[_]] + |classManifest[scala.collection.immutable.List[_]] + |classTag[scala.collection.immutable.List[_]] + |classManifest[Predef.Set[_]] + |classTag[Predef.Set[_]] + |classManifest[scala.collection.immutable.Set[_]] + |classTag[scala.collection.immutable.Set[_]] + """.stripMargin } diff --git a/test/files/run/t6329_vanilla.check b/test/files/run/t6329_vanilla.check index 8282afaeba..ad8f4b5c77 100644 --- a/test/files/run/t6329_vanilla.check +++ b/test/files/run/t6329_vanilla.check @@ -1,2 +1,8 @@ -scala.collection.immutable.List[Any] +scala.collection.immutable.List[<?>] scala.collection.immutable.List +scala.collection.immutable.List[<?>] +scala.collection.immutable.List +scala.collection.immutable.Set[<?>] +scala.collection.immutable.Set +scala.collection.immutable.Set[<?>] +scala.collection.immutable.Set diff --git a/test/files/run/t6329_vanilla.scala b/test/files/run/t6329_vanilla.scala index a31cd5c72e..f2d843896d 100644 --- a/test/files/run/t6329_vanilla.scala +++ b/test/files/run/t6329_vanilla.scala @@ -1,4 +1,12 @@ +import scala.reflect.classTag + object Test extends App { - println(classManifest[List[_]]) - println(scala.reflect.classTag[List[_]]) -}
\ No newline at end of file + println(classManifest[scala.List[_]]) + println(classTag[scala.List[_]]) + println(classManifest[scala.collection.immutable.List[_]]) + println(classTag[scala.collection.immutable.List[_]]) + println(classManifest[Predef.Set[_]]) + println(classTag[Predef.Set[_]]) + println(classManifest[scala.collection.immutable.Set[_]]) + println(classTag[scala.collection.immutable.Set[_]]) +} diff --git a/test/files/run/t6434.check b/test/files/run/t6434.check new file mode 100644 index 0000000000..f898b6b781 --- /dev/null +++ b/test/files/run/t6434.check @@ -0,0 +1,10 @@ +Type in expressions to have them evaluated. +Type :help for more information. + +scala> def f(x: => Int): Int = x +f: (x: => Int)Int + +scala> f _ +res0: (=> Int) => Int = <function1> + +scala> diff --git a/test/files/run/t6434.scala b/test/files/run/t6434.scala new file mode 100644 index 0000000000..e4a4579613 --- /dev/null +++ b/test/files/run/t6434.scala @@ -0,0 +1,8 @@ +import scala.tools.partest.ReplTest + +object Test extends ReplTest { + def code = +"""def f(x: => Int): Int = x +f _ +""" +} diff --git a/test/files/run/t6439.check b/test/files/run/t6439.check new file mode 100644 index 0000000000..3f5f7dc8a4 --- /dev/null +++ b/test/files/run/t6439.check @@ -0,0 +1,77 @@ +Type in expressions to have them evaluated. +Type :help for more information. + +scala> + +scala> class A +defined class A + +scala> object A // warn +defined object A +warning: previously defined class A is not a companion to object A. +Companions must be defined together; you may wish to use :paste mode for this. + +scala> trait B +defined trait B + +scala> object B // warn +defined object B +warning: previously defined trait B is not a companion to object B. +Companions must be defined together; you may wish to use :paste mode for this. + +scala> object C +defined object C + +scala> object Bippy +defined object Bippy + +scala> class C // warn +defined class C +warning: previously defined object C is not a companion to class C. +Companions must be defined together; you may wish to use :paste mode for this. + +scala> class D +defined class D + +scala> def D = 0 // no warn +D: Int + +scala> val D = 0 // no warn +D: Int = 0 + +scala> object E +defined object E + +scala> var E = 0 // no warn +E: Int = 0 + +scala> object F +defined object F + +scala> type F = Int // no warn +defined type alias F + +scala> :power +** Power User mode enabled - BEEP WHIR GYVE ** +** :phase has been set to 'typer'. ** +** scala.tools.nsc._ has been imported ** +** global._, definitions._ also imported ** +** Try :help, :vals, power.<tab> ** + +scala> object lookup { + import intp._ + def apply(name: String): Symbol = types(name) orElse terms(name) + def types(name: String): Symbol = replScope lookup (name: TypeName) orElse getClassIfDefined(name) + def terms(name: String): Symbol = replScope lookup (name: TermName) orElse getModuleIfDefined(name) + def types[T: global.TypeTag] : Symbol = typeOf[T].typeSymbol + def terms[T: global.TypeTag] : Symbol = typeOf[T].termSymbol + def apply[T: global.TypeTag] : Symbol = typeOf[T].typeSymbol +} +defined object lookup + +scala> lookup("F") // this now works as a result of changing .typeSymbol to .typeSymbolDirect in IMain#Request#definedSymbols +res0: $r.intp.global.Symbol = type F + +scala> + +scala> diff --git a/test/files/run/t6439.scala b/test/files/run/t6439.scala new file mode 100644 index 0000000000..175a1d134f --- /dev/null +++ b/test/files/run/t6439.scala @@ -0,0 +1,32 @@ +import scala.tools.partest.ReplTest + +object Test extends ReplTest { + + def code = """ +class A +object A // warn +trait B +object B // warn +object C +object Bippy +class C // warn +class D +def D = 0 // no warn +val D = 0 // no warn +object E +var E = 0 // no warn +object F +type F = Int // no warn +:power +object lookup { + import intp._ + def apply(name: String): Symbol = types(name) orElse terms(name) + def types(name: String): Symbol = replScope lookup (name: TypeName) orElse getClassIfDefined(name) + def terms(name: String): Symbol = replScope lookup (name: TermName) orElse getModuleIfDefined(name) + def types[T: global.TypeTag] : Symbol = typeOf[T].typeSymbol + def terms[T: global.TypeTag] : Symbol = typeOf[T].termSymbol + def apply[T: global.TypeTag] : Symbol = typeOf[T].typeSymbol +} +lookup("F") // this now works as a result of changing .typeSymbol to .typeSymbolDirect in IMain#Request#definedSymbols + """ +} diff --git a/test/files/run/t6443-by-name.check b/test/files/run/t6443-by-name.check new file mode 100644 index 0000000000..6f98fa4a28 --- /dev/null +++ b/test/files/run/t6443-by-name.check @@ -0,0 +1,3 @@ +1 +foo +foo diff --git a/test/files/run/t6443-by-name.scala b/test/files/run/t6443-by-name.scala new file mode 100644 index 0000000000..bfd9bf9791 --- /dev/null +++ b/test/files/run/t6443-by-name.scala @@ -0,0 +1,18 @@ +object Test { + + def main(args: Array[String]) { + def foo = {println("foo"); 0} + lazyDep(X)(foo) + } + + trait T { + type U + } + object X extends T { type U = Int } + + def lazyDep(t: T)(u: => t.U) { + println("1") + u + u + } +} diff --git a/test/files/run/t6443-varargs.check b/test/files/run/t6443-varargs.check new file mode 100644 index 0000000000..257cc5642c --- /dev/null +++ b/test/files/run/t6443-varargs.check @@ -0,0 +1 @@ +foo diff --git a/test/files/run/t6443-varargs.scala b/test/files/run/t6443-varargs.scala new file mode 100644 index 0000000000..9cbae3e99c --- /dev/null +++ b/test/files/run/t6443-varargs.scala @@ -0,0 +1,16 @@ +object Test { + + def main(args: Array[String]) { + def foo = {println("foo"); 0} + lazyDep(X)(foo) + } + + trait T { + type U + } + object X extends T { type U = Int } + + def lazyDep(t: T)(us: t.U*) { + List(us: _*) + } +} diff --git a/test/files/run/t6443.scala b/test/files/run/t6443.scala new file mode 100644 index 0000000000..67fe2cab22 --- /dev/null +++ b/test/files/run/t6443.scala @@ -0,0 +1,15 @@ +class Base +class Derived extends Base + +trait A { + def foo(d: String)(d2: d.type): Base + val s = "" + def bar: Unit = foo(s)(s) +} +object B extends A { + def foo(d: String)(d2: d.type): D forSome { type D <: S; type S <: Derived } = {d2.isEmpty; null} // Bridge method required here! +} + +object Test extends App { + B.bar +} diff --git a/test/files/run/t6443b.scala b/test/files/run/t6443b.scala new file mode 100644 index 0000000000..9320b1dcfe --- /dev/null +++ b/test/files/run/t6443b.scala @@ -0,0 +1,16 @@ +trait A { + type D >: Null <: C + def foo(d: D)(d2: d.type): Unit + trait C { + def bar: Unit = foo(null)(null) + } +} +object B extends A { + class D extends C + + def foo(d: D)(d2: d.type): Unit = () // Bridge method required here! +} + +object Test extends App { + new B.D().bar +} diff --git a/test/files/run/t6669.scala b/test/files/run/t6669.scala new file mode 100644 index 0000000000..b55718b12b --- /dev/null +++ b/test/files/run/t6669.scala @@ -0,0 +1,26 @@ +import java.io.{ByteArrayOutputStream, PrintStream} + +object Test extends App { + val baos = new ByteArrayOutputStream() + val ps = new PrintStream(baos) + + // first test with the default classpath + (scala.Console withOut ps) { + scala.tools.scalap.Main.main(Array("-verbose", "java.lang.Object")) + } + + // now make sure we saw the '.' in the classpath + val msg1 = baos.toString() + assert(msg1 contains "directory classpath: .", s"Did not see '.' in the default class path. Full results were:\n$msg1") + + // then test again with a user specified classpath + baos.reset + + (scala.Console withOut ps) { + scala.tools.scalap.Main.main(Array("-verbose", "-cp", "whatever", "java.lang.Object")) + } + + // now make sure we did not see the '.' in the classpath + val msg2 = baos.toString() + assert(!(msg2 contains "directory classpath: ."), s"Did saw '.' in the user specified class path. Full results were:\n$msg2") +} diff --git a/test/files/run/t6853.scala b/test/files/run/t6853.scala new file mode 100644 index 0000000000..352375c99c --- /dev/null +++ b/test/files/run/t6853.scala @@ -0,0 +1,18 @@ +// Test cases: the only place we can cut and paste without crying +// ourself to sleep. +object Test { + + def main(args: Array[String]): Unit = { + // First testing the basic operations + val m = collection.mutable.ListMap[String, Int]() + var i = 0 + while(i < 2) { m += ("foo" + i) -> i; i = i+1} + assert(m == Map("foo1"->1,"foo0"->0)) + m-= "foo0" + assert(m == Map("foo1"->1)) + // Now checking if it scales as described in SI-6853 + i = 0 + while(i < 80000) { m += ("foo" + i) -> i; i = i+1} + assert(m.size == 80000) + } +} diff --git a/test/files/run/t6860.check b/test/files/run/t6860.check new file mode 100644 index 0000000000..c96331f540 --- /dev/null +++ b/test/files/run/t6860.check @@ -0,0 +1,4 @@ +Bippy[String] +Bippy[String] +throws[Nothing] +throws[RuntimeException] diff --git a/test/files/run/t6860.scala b/test/files/run/t6860.scala new file mode 100644 index 0000000000..2dcc2a67f7 --- /dev/null +++ b/test/files/run/t6860.scala @@ -0,0 +1,20 @@ +class Bippy[T](val value: T) extends annotation.StaticAnnotation + +class A { + @Bippy("hi") def f1: Int = 1 + @Bippy[String]("hi") def f2: Int = 2 + + @throws("what do I throw?") def f3 = throw new RuntimeException + @throws[RuntimeException]("that's good to know!") def f4 = throw new RuntimeException +} + +object Test { + import scala.reflect.runtime.universe._ + + def main(args: Array[String]): Unit = { + val members = typeOf[A].declarations.toList + val tpes = members flatMap (_.annotations) map (_.tpe) + + tpes.map(_.toString).sorted foreach println + } +} diff --git a/test/files/run/t6863.scala b/test/files/run/t6863.scala new file mode 100644 index 0000000000..d77adb6af4 --- /dev/null +++ b/test/files/run/t6863.scala @@ -0,0 +1,114 @@ +/** Make sure that when a variable is captured its initialization expression is handled properly */ +object Test { + def lazyVal() = { + // internally lazy vals become vars which are initialized with "_", so they need to be tested just like vars do + lazy val x = "42" + assert({ () => x }.apply == "42") + } + def ident() = { + val y = "42" + var x = y + assert({ () => x }.apply == "42") + } + def apply() = { + def y(x : Int) = x.toString + var x = y(42) + assert({ () => x }.apply == "42") + } + def literal() = { + var x = "42" + assert({ () => x }.apply == "42") + } + def `new`() = { + var x = new String("42") + assert({ () => x }.apply == "42") + } + def select() = { + object Foo{val bar = "42"} + var x = Foo.bar + assert({ () => x }.apply == "42") + } + def `throw`() = { + var x = if (true) "42" else throw new Exception("42") + assert({ () => x }.apply == "42") + } + def assign() = { + var y = 1 + var x = y = 42 + assert({ () => x}.apply == ()) + } + def valDef() = { + var x = {val y = 42} + assert({ () => x}.apply == ()) + } + def `return`(): String = { + var x = if (true) return "42" else () + assert({ () => x}.apply == ()) + "42" + } + def tryFinally() = { + var x = try { "42" } finally () + assert({ () => x }.apply == "42") + } + def tryCatch() = { + var x = try { "42" } catch { case _ => "43" } + assert({ () => x }.apply == "42") + } + def `if`() = { + var x = if (true) () + assert({ () => x }.apply == ()) + } + def ifElse() = { + var x = if(true) "42" else "43" + assert({ () => x }.apply == "42") + } + def matchCase() = { + var x = 100 match { + case 100 => "42" + case _ => "43" + } + assert({ () => x }.apply == "42") + } + def block() = { + var x = { + val y = 42 + "42" + } + assert({ () => x }.apply == "42") + } + def labelDef() = { + var x = 100 match { + case 100 => try "42" finally () + } + assert({ () => x }.apply == "42") + } + def nested() = { + var x = { + val y = 42 + if(true) try "42" catch {case _ => "43"} + else "44" + } + assert({ () => x }.apply == "42") + } + def main(args: Array[String]) { + lazyVal() + ident() + apply() + literal() + `new`() + select() + `throw`() + assign() + valDef() + `return`() + tryFinally() + tryCatch() + ifElse() + `if`() + matchCase() + block() + labelDef() + nested() + } +} + diff --git a/test/files/run/t6939.scala b/test/files/run/t6939.scala new file mode 100644 index 0000000000..9fe721555f --- /dev/null +++ b/test/files/run/t6939.scala @@ -0,0 +1,13 @@ +object Test extends App { + val foo = <x:foo xmlns:x="http://foo.com/"><x:bar xmlns:x="http://bar.com/"><x:baz/></x:bar></x:foo> + assert(foo.child.head.scope.toString == """ xmlns:x="http://bar.com/"""") + + val fooDefault = <foo xmlns="http://foo.com/"><bar xmlns="http://bar.com/"><baz/></bar></foo> + assert(fooDefault.child.head.scope.toString == """ xmlns="http://bar.com/"""") + + val foo2 = scala.xml.XML.loadString("""<x:foo xmlns:x="http://foo.com/"><x:bar xmlns:x="http://bar.com/"><x:baz/></x:bar></x:foo>""") + assert(foo2.child.head.scope.toString == """ xmlns:x="http://bar.com/"""") + + val foo2Default = scala.xml.XML.loadString("""<foo xmlns="http://foo.com/"><bar xmlns="http://bar.com/"><baz/></bar></foo>""") + assert(foo2Default.child.head.scope.toString == """ xmlns="http://bar.com/"""") +} diff --git a/test/files/run/t6956.check b/test/files/run/t6956.check new file mode 100644 index 0000000000..0cfbf08886 --- /dev/null +++ b/test/files/run/t6956.check @@ -0,0 +1 @@ +2 diff --git a/test/files/run/t6956.scala b/test/files/run/t6956.scala new file mode 100644 index 0000000000..4a6583ca45 --- /dev/null +++ b/test/files/run/t6956.scala @@ -0,0 +1,26 @@ +import scala.tools.partest.IcodeTest + +class Switches { + private[this] final val ONE = 1 + + def switchBad(i: Byte): Int = i match { + case ONE => 1 + case 2 => 2 + case 3 => 3 + case _ => 0 + } + + def switchOkay(i: Byte): Int = i match { + case 1 => 1 + case 2 => 2 + case 3 => 3 + case _ => 0 + } +} + +object Test extends IcodeTest { + // ensure we get two switches out of this -- ignore the rest of the output for robustness + // exclude the constant we emit for the "SWITCH ..." string below (we get the icode for all the code you see in this file) + override def show() = println(collectIcode("").filter(x => x.indexOf("SWITCH ...") >= 0 && x.indexOf("CONSTANT(") == -1).size) +} + diff --git a/test/files/run/t6968.check b/test/files/run/t6968.check new file mode 100644 index 0000000000..7a18941537 --- /dev/null +++ b/test/files/run/t6968.check @@ -0,0 +1 @@ +1, 3, 5 diff --git a/test/files/run/t6968.scala b/test/files/run/t6968.scala new file mode 100644 index 0000000000..b5cadfd9e1 --- /dev/null +++ b/test/files/run/t6968.scala @@ -0,0 +1,7 @@ +object Test { + def main(args: Array[String]) { + val mixedList = List(1,(1,2),4,(3,1),(5,4),6) + val as = for((a,b) <- mixedList) yield a + println(as.mkString(", ")) + } +} diff --git a/test/files/run/t6969.check b/test/files/run/t6969.check new file mode 100644 index 0000000000..78297812c9 --- /dev/null +++ b/test/files/run/t6969.check @@ -0,0 +1 @@ +All threads completed. diff --git a/test/files/run/t6969.scala b/test/files/run/t6969.scala new file mode 100644 index 0000000000..8cfc28c1e5 --- /dev/null +++ b/test/files/run/t6969.scala @@ -0,0 +1,28 @@ +object Test { + private type Clearable = { def clear(): Unit } + private def choke() = { + try new Array[Object]((Runtime.getRuntime().maxMemory min Int.MaxValue).toInt) + catch { + case _: OutOfMemoryError => // what do you mean, out of memory? + case t: Throwable => println(t) + } + } + private def f(x: Clearable) = x.clear() + class Choker(id: Int) extends Thread { + private def g(iteration: Int) = { + val map = scala.collection.mutable.Map[Int, Int](1 -> 2) + try f(map) catch { case t: NullPointerException => println(s"Failed at $id/$iteration") ; throw t } + choke() + } + override def run() { + 1 to 50 foreach g + } + } + + def main(args: Array[String]): Unit = { + val threads = 1 to 3 map (id => new Choker(id)) + threads foreach (_.start()) + threads foreach (_.join()) + println("All threads completed.") + } +} diff --git a/test/files/run/test-cpp.scala b/test/files/run/test-cpp.scala index 5b3bc7b746..f9fa85c4d0 100644 --- a/test/files/run/test-cpp.scala +++ b/test/files/run/test-cpp.scala @@ -3,7 +3,7 @@ * in the copy-propagation performed before ClosureElimination. * * In the general case, the local variable 'l' is connected through - * a alias chain with other local variables and at the end of the + * an alias chain with other local variables and at the end of the * alias chain there may be a Value, call it 'v'. * * If 'v' is cheaper to access (it is a Deref(This) or Const(_)), then diff --git a/test/files/scalacheck/parallel-collections/ParallelMapCheck1.scala b/test/files/scalacheck/parallel-collections/ParallelMapCheck1.scala index 05237bace8..b6af8f41bd 100644 --- a/test/files/scalacheck/parallel-collections/ParallelMapCheck1.scala +++ b/test/files/scalacheck/parallel-collections/ParallelMapCheck1.scala @@ -20,7 +20,7 @@ abstract class ParallelMapCheck[K, V](collname: String) extends ParallelIterable property("gets iterated keys") = forAll(collectionPairs) { case (t, coll) => val containsT = for ((k, v) <- t) yield (coll.get(k) == Some(v)) - val containsSelf = for ((k, v) <- coll) yield (coll.get(k) == Some(v)) + val containsSelf = coll.map { case (k, v) => coll.get(k) == Some(v) } ("Par contains elements of seq map" |: containsT.forall(_ == true)) && ("Par contains elements of itself" |: containsSelf.forall(_ == true)) } diff --git a/test/files/scalacheck/redblack.scala b/test/files/scalacheck/redblack.scala deleted file mode 100644 index bbc6504f58..0000000000 --- a/test/files/scalacheck/redblack.scala +++ /dev/null @@ -1,213 +0,0 @@ -import org.scalacheck._ -import Prop._ -import Gen._ - -/* -Properties of a Red & Black Tree: - -A node is either red or black. -The root is black. (This rule is used in some definitions and not others. Since the -root can always be changed from red to black but not necessarily vice-versa this -rule has little effect on analysis.) -All leaves are black. -Both children of every red node are black. -Every simple path from a given node to any of its descendant leaves contains the same number of black nodes. -*/ - -abstract class RedBlackTest extends Properties("RedBlack") { - def minimumSize = 0 - def maximumSize = 5 - - object RedBlackTest extends scala.collection.immutable.RedBlack[String] { - def isSmaller(x: String, y: String) = x < y - } - - import RedBlackTest._ - - def nodeAt[A](tree: Tree[A], n: Int): Option[(String, A)] = if (n < tree.iterator.size && n >= 0) - Some(tree.iterator.drop(n).next) - else - None - - def treeContains[A](tree: Tree[A], key: String) = tree.iterator.map(_._1) contains key - - def mkTree(level: Int, parentIsBlack: Boolean = false, label: String = ""): Gen[Tree[Int]] = - if (level == 0) { - value(Empty) - } else { - for { - oddOrEven <- choose(0, 2) - tryRed = oddOrEven.sample.get % 2 == 0 // work around arbitrary[Boolean] bug - isRed = parentIsBlack && tryRed - nextLevel = if (isRed) level else level - 1 - left <- mkTree(nextLevel, !isRed, label + "L") - right <- mkTree(nextLevel, !isRed, label + "R") - } yield { - if (isRed) - RedTree(label + "N", 0, left, right) - else - BlackTree(label + "N", 0, left, right) - } - } - - def genTree = for { - depth <- choose(minimumSize, maximumSize + 1) - tree <- mkTree(depth) - } yield tree - - type ModifyParm - def genParm(tree: Tree[Int]): Gen[ModifyParm] - def modify(tree: Tree[Int], parm: ModifyParm): Tree[Int] - - def genInput: Gen[(Tree[Int], ModifyParm, Tree[Int])] = for { - tree <- genTree - parm <- genParm(tree) - } yield (tree, parm, modify(tree, parm)) -} - -trait RedBlackInvariants { - self: RedBlackTest => - - import RedBlackTest._ - - def rootIsBlack[A](t: Tree[A]) = t.isBlack - - def areAllLeavesBlack[A](t: Tree[A]): Boolean = t match { - case Empty => t.isBlack - case ne: NonEmpty[_] => List(ne.left, ne.right) forall areAllLeavesBlack - } - - def areRedNodeChildrenBlack[A](t: Tree[A]): Boolean = t match { - case RedTree(_, _, left, right) => List(left, right) forall (t => t.isBlack && areRedNodeChildrenBlack(t)) - case BlackTree(_, _, left, right) => List(left, right) forall areRedNodeChildrenBlack - case Empty => true - } - - def blackNodesToLeaves[A](t: Tree[A]): List[Int] = t match { - case Empty => List(1) - case BlackTree(_, _, left, right) => List(left, right) flatMap blackNodesToLeaves map (_ + 1) - case RedTree(_, _, left, right) => List(left, right) flatMap blackNodesToLeaves - } - - def areBlackNodesToLeavesEqual[A](t: Tree[A]): Boolean = t match { - case Empty => true - case ne: NonEmpty[_] => - ( - blackNodesToLeaves(ne).distinct.size == 1 - && areBlackNodesToLeavesEqual(ne.left) - && areBlackNodesToLeavesEqual(ne.right) - ) - } - - def orderIsPreserved[A](t: Tree[A]): Boolean = - t.iterator zip t.iterator.drop(1) forall { case (x, y) => isSmaller(x._1, y._1) } - - def setup(invariant: Tree[Int] => Boolean) = forAll(genInput) { case (tree, parm, newTree) => - invariant(newTree) - } - - property("root is black") = setup(rootIsBlack) - property("all leaves are black") = setup(areAllLeavesBlack) - property("children of red nodes are black") = setup(areRedNodeChildrenBlack) - property("black nodes are balanced") = setup(areBlackNodesToLeavesEqual) - property("ordering of keys is preserved") = setup(orderIsPreserved) -} - -object TestInsert extends RedBlackTest with RedBlackInvariants { - import RedBlackTest._ - - override type ModifyParm = Int - override def genParm(tree: Tree[Int]): Gen[ModifyParm] = choose(0, tree.iterator.size + 1) - override def modify(tree: Tree[Int], parm: ModifyParm): Tree[Int] = tree update (generateKey(tree, parm), 0) - - def generateKey(tree: Tree[Int], parm: ModifyParm): String = nodeAt(tree, parm) match { - case Some((key, _)) => key.init.mkString + "MN" - case None => nodeAt(tree, parm - 1) match { - case Some((key, _)) => key.init.mkString + "RN" - case None => "N" - } - } - - property("update adds elements") = forAll(genInput) { case (tree, parm, newTree) => - treeContains(newTree, generateKey(tree, parm)) - } -} - -object TestModify extends RedBlackTest { - import RedBlackTest._ - - def newValue = 1 - override def minimumSize = 1 - override type ModifyParm = Int - override def genParm(tree: Tree[Int]): Gen[ModifyParm] = choose(0, tree.iterator.size) - override def modify(tree: Tree[Int], parm: ModifyParm): Tree[Int] = nodeAt(tree, parm) map { - case (key, _) => tree update (key, newValue) - } getOrElse tree - - property("update modifies values") = forAll(genInput) { case (tree, parm, newTree) => - nodeAt(tree,parm) forall { case (key, _) => - newTree.iterator contains (key, newValue) - } - } -} - -object TestDelete extends RedBlackTest with RedBlackInvariants { - import RedBlackTest._ - - override def minimumSize = 1 - override type ModifyParm = Int - override def genParm(tree: Tree[Int]): Gen[ModifyParm] = choose(0, tree.iterator.size) - override def modify(tree: Tree[Int], parm: ModifyParm): Tree[Int] = nodeAt(tree, parm) map { - case (key, _) => tree delete key - } getOrElse tree - - property("delete removes elements") = forAll(genInput) { case (tree, parm, newTree) => - nodeAt(tree, parm) forall { case (key, _) => - !treeContains(newTree, key) - } - } -} - -object TestRange extends RedBlackTest with RedBlackInvariants { - import RedBlackTest._ - - override type ModifyParm = (Option[Int], Option[Int]) - override def genParm(tree: Tree[Int]): Gen[ModifyParm] = for { - from <- choose(0, tree.iterator.size) - to <- choose(0, tree.iterator.size) suchThat (from <=) - optionalFrom <- oneOf(Some(from), None, Some(from)) // Double Some(n) to get around a bug - optionalTo <- oneOf(Some(to), None, Some(to)) // Double Some(n) to get around a bug - } yield (optionalFrom, optionalTo) - - override def modify(tree: Tree[Int], parm: ModifyParm): Tree[Int] = { - val from = parm._1 flatMap (nodeAt(tree, _) map (_._1)) - val to = parm._2 flatMap (nodeAt(tree, _) map (_._1)) - tree range (from, to) - } - - property("range boundaries respected") = forAll(genInput) { case (tree, parm, newTree) => - val from = parm._1 flatMap (nodeAt(tree, _) map (_._1)) - val to = parm._2 flatMap (nodeAt(tree, _) map (_._1)) - ("lower boundary" |: (from forall ( key => newTree.iterator.map(_._1) forall (key <=)))) && - ("upper boundary" |: (to forall ( key => newTree.iterator.map(_._1) forall (key >)))) - } - - property("range returns all elements") = forAll(genInput) { case (tree, parm, newTree) => - val from = parm._1 flatMap (nodeAt(tree, _) map (_._1)) - val to = parm._2 flatMap (nodeAt(tree, _) map (_._1)) - val filteredTree = (tree.iterator - .map(_._1) - .filter(key => from forall (key >=)) - .filter(key => to forall (key <)) - .toList) - filteredTree == newTree.iterator.map(_._1).toList - } -} - -object Test extends Properties("RedBlack") { - include(TestInsert) - include(TestModify) - include(TestDelete) - include(TestRange) -} - diff --git a/test/partest b/test/partest index 391cc52fe0..9b0ab02fdc 100755 --- a/test/partest +++ b/test/partest @@ -82,8 +82,13 @@ fi # last arg wins, so if JAVA_OPTS already contains -Xmx or -Xms the # supplied argument will be used. -JAVA_OPTS="-Xmx1024M -Xms64M $JAVA_OPTS" -[ -n "$SCALAC_OPTS" ] || SCALAC_OPTS="-deprecation" +# At this writing it is reported test/partest --all requires 108m permgen. +JAVA_OPTS="-Xmx1024M -Xms64M -XX:MaxPermSize=128M $JAVA_OPTS" + +# the ant task doesn't supply any options by default, +# so don't to that here either -- note that you may want to pass -optimise +# to mimic what happens during nightlies +# [ -n "$SCALAC_OPTS" ] || SCALAC_OPTS="-deprecation" partestDebugStr="" if [ ! -z "${PARTEST_DEBUG}" ] ; then diff --git a/test/files/neg/t5589neg.check b/test/pending/neg/t5589neg.check index f1dad94df3..f1dad94df3 100644 --- a/test/files/neg/t5589neg.check +++ b/test/pending/neg/t5589neg.check diff --git a/test/files/neg/t5589neg.scala b/test/pending/neg/t5589neg.scala index 31ff2c3693..31ff2c3693 100644 --- a/test/files/neg/t5589neg.scala +++ b/test/pending/neg/t5589neg.scala diff --git a/test/files/neg/t5589neg2.scala b/test/pending/neg/t5589neg2.scala index b7c7ab7218..b7c7ab7218 100644 --- a/test/files/neg/t5589neg2.scala +++ b/test/pending/neg/t5589neg2.scala diff --git a/test/files/pos/t1336.scala b/test/pending/pos/t1336.scala index 63967985c7..63967985c7 100644 --- a/test/files/pos/t1336.scala +++ b/test/pending/pos/t1336.scala diff --git a/test/pending/pos/t5459.scala b/test/pending/pos/t5459.scala new file mode 100644 index 0000000000..971e6f896d --- /dev/null +++ b/test/pending/pos/t5459.scala @@ -0,0 +1,48 @@ +trait A1 +trait A2 +trait A3 +trait L1 extends A1 with A2 with A3 + +object Test { + trait T1[-A <: A1] + trait T2[-A >: L1] + trait T3[ A <: A1] + trait T4[ A >: L1] + trait T5[+A <: A1] + trait T6[+A >: L1] + + def f1(x: T1[_]) = x + def f2(x: T2[_]) = x + def f3(x: T3[_]) = x + def f4(x: T4[_]) = x + def f5(x: T5[_]) = x + def f6(x: T6[_]) = x + // a.scala:22: error: type arguments [Any] do not conform to trait T5's type parameter bounds [+A <: A1] + // def f5(x: T5[_]) = x + // ^ + + def g1(x: T1[_ <: A1]) = x + def g2(x: T2[_ >: L1]) = x + def g3(x: T3[_ <: A1]) = x + def g4(x: T4[_ >: L1]) = x + def g5(x: T5[_ <: A1]) = x + def g6(x: T6[_ >: L1]) = x + + def q1(x: T1[_ >: L1]) = x + def q2(x: T2[_ <: A1]) = x + def q3(x: T3[_ >: L1]) = x + def q4(x: T4[_ <: A1]) = x + def q5(x: T5[_ >: L1]) = x + def q6(x: T6[_ <: A1]) = x + // a.scala:41: error: type arguments [Any] do not conform to trait T5's type parameter bounds [+A <: A1] + // def q5(x: T5[_ >: L1]) = x + // ^ + // two errors found + + def h1(x: T1[_ >: L1 <: A1]) = x + def h2(x: T2[_ >: L1 <: A1]) = x + def h3(x: T3[_ >: L1 <: A1]) = x + def h4(x: T4[_ >: L1 <: A1]) = x + def h5(x: T5[_ >: L1 <: A1]) = x + def h6(x: T6[_ >: L1 <: A1]) = x +} diff --git a/test/files/pos/t5589.scala b/test/pending/pos/t5589.scala index 69cbb20391..69cbb20391 100644 --- a/test/files/pos/t5589.scala +++ b/test/pending/pos/t5589.scala diff --git a/test/pending/pos/those-kinds-are-high.scala b/test/pending/pos/those-kinds-are-high.scala index 434e64cefb..78367cb746 100644 --- a/test/pending/pos/those-kinds-are-high.scala +++ b/test/pending/pos/those-kinds-are-high.scala @@ -4,18 +4,18 @@ class A { class C1[T] extends Template[C1] with Container[T] class C2[T] extends Template[C2] with Container[T] - + /** Target expression: * List(new C1[String], new C2[String]) */ - + // Here's what would ideally be inferred. // // scala> :type List[Template[Container] with Container[String]](new C1[String], new C2[String]) // List[Template[Container] with Container[java.lang.String]] // // Here's what it does infer. - // + // // scala> :type List(new C1[String], new C2[String]) // <console>:8: error: type mismatch; // found : C1[String] @@ -43,11 +43,54 @@ class A { // def fFail = List(new C1[String], new C2[String]) // ^ // two errors found - + /** Working version explicitly typed. */ def fExplicit = List[Template[Container] with Container[String]](new C1[String], new C2[String]) - + // nope def fFail = List(new C1[String], new C2[String]) } + + +trait Other { + trait GenBar[+A] + trait Bar[+A] extends GenBar[A] + trait Templ[+A, +CC[X] <: GenBar[X]] + + abstract class CC1[+A] extends Templ[A, CC1] with Bar[A] + abstract class CC2[+A] extends Templ[A, CC2] with Bar[A] + + // Compiles + class A1 { + abstract class BarFactory[CC[X] <: Bar[X]] + + def f(x: Boolean) = if (x) (null: BarFactory[CC1]) else (null: BarFactory[CC2]) + } + + // Fails - only difference is CC covariant. + class A2 { + abstract class BarFactory[+CC[X] <: Bar[X]] + + def f(x: Boolean) = if (x) (null: BarFactory[CC1]) else (null: BarFactory[CC2]) + // c.scala:23: error: kinds of the type arguments (Bar with Templ[Any,Bar]) do not conform to the expected kinds of the type parameters (type CC) in class BarFactory. + // Bar with Templ[Any,Bar]'s type parameters do not match type CC's expected parameters: + // <empty> has no type parameters, but type CC has one + // def f(x: Boolean) = if (x) (null: BarFactory[CC1]) else (null: BarFactory[CC2]) + // ^ + // one error found + } + + // Compiles - CC contravariant. + class A3 { + abstract class BarFactory[-CC[X] <: Bar[X]] // with Templ[X, CC]] + + def f(x: Boolean) = if (x) (null: BarFactory[CC1]) else (null: BarFactory[CC2]) + // c.scala:23: error: kinds of the type arguments (Bar with Templ[Any,Bar]) do not conform to the expected kinds of the type parameters (type CC) in class BarFactory. + // Bar with Templ[Any,Bar]'s type parameters do not match type CC's expected parameters: + // <empty> has no type parameters, but type CC has one + // def f(x: Boolean) = if (x) (null: BarFactory[CC1]) else (null: BarFactory[CC2]) + // ^ + // one error found + } +} diff --git a/test/files/run/t4574.scala b/test/pending/run/t4574.scala index 1dde496aca..1dde496aca 100644 --- a/test/files/run/t4574.scala +++ b/test/pending/run/t4574.scala diff --git a/test/scaladoc/resources/implicits-base-res.scala b/test/scaladoc/resources/implicits-base-res.scala index d6c0332c10..1d17e9a6d3 100644 --- a/test/scaladoc/resources/implicits-base-res.scala +++ b/test/scaladoc/resources/implicits-base-res.scala @@ -11,21 +11,21 @@ trait MyNumeric[R] * - tests the complete type inference * - the following inherited methods should appear: * {{{ - * def convToGtColonDoubleA(x: Double) // pimpA3: with a constraint that T <: Double - * def convToIntA(x: Int) // pimpA2: with a constraint that T = Int - * def convToManifestA(x: T) // pimpA7: with 2 constraints: T: Manifest and T <: Double - * def convToMyNumericA(x: T) // pimpA6: with a constraint that there is x: MyNumeric[T] implicit in scope - * def convToNumericA(x: T) // pimpA1: with a constraint that there is x: Numeric[T] implicit in scope - * def convToPimpedA(x: Bar[Foo[T]]) // pimpA5: no constraints, SHADOWED - * def convToPimpedA(x: S) // pimpA4: with 3 constraints: T = Foo[Bar[S]], S: Foo and S: Bar, SHADOWED - * def convToPimpedA(x: T) // pimpA0: with no constraints, SHADOWED - * def convToTraversableOps(x: T) // pimpA7: with 2 constraints: T: Manifest and T <: Double + * def convToGtColonDoubleA(x: Double) // enrichA3: with a constraint that T <: Double + * def convToIntA(x: Int) // enrichA2: with a constraint that T = Int + * def convToManifestA(x: T) // enrichA7: with 2 constraints: T: Manifest and T <: Double + * def convToMyNumericA(x: T) // enrichA6: with a constraint that there is x: MyNumeric[T] implicit in scope + * def convToNumericA(x: T) // enrichA1: with a constraint that there is x: Numeric[T] implicit in scope + * def convToEnrichedA(x: Bar[Foo[T]]) // enrichA5: no constraints, SHADOWED + * def convToEnrichedA(x: S) // enrichA4: with 3 constraints: T = Foo[Bar[S]], S: Foo and S: Bar, SHADOWED + * def convToEnrichedA(x: T) // enrichA0: with no constraints, SHADOWED + * def convToTraversableOps(x: T) // enrichA7: with 2 constraints: T: Manifest and T <: Double * // should not be abstract! * }}} */ class A[T] { - /** This should prevent the implicitly inherited `def convToPimpedA: T` from `pimpA0` from showing up */ - def convToPimpedA(x: T): T = sys.error("Let's check it out!") + /** This should prevent the implicitly inherited `def convToEnrichedA: T` from `enrichA0` from showing up */ + def convToEnrichedA(x: T): T = sys.error("Let's check it out!") /** This should check implicit member elimination in the case of subtyping */ def foo(a: T, b: AnyRef): T } @@ -33,15 +33,15 @@ class A[T] { object A { import language.implicitConversions // according to SIP18 - implicit def pimpA0[V](a: A[V]) = new PimpedA(a) - implicit def pimpA1[ZBUR: Numeric](a: A[ZBUR]) = new NumericA[ZBUR](a) - implicit def pimpA2(a: A[Int]) = new IntA(a) - implicit def pimpA3(a: A[T] forSome { type T <: Double }) = new GtColonDoubleA(a) - implicit def pimpA4[S](a: A[Foo[Bar[S]]])(implicit foo: Foo[S], bar: Bar[S]): PimpedA[S] = sys.error("not implemented") - implicit def pimpA5[Z](a: A[Z]): PimpedA[Bar[Foo[Z]]] = sys.error("not implemented") - implicit def pimpA6[Z: MyNumeric](a: A[Z]) = new MyNumericA[Z](a) + implicit def enrichA0[V](a: A[V]) = new EnrichedA(a) + implicit def enrichA1[ZBUR: Numeric](a: A[ZBUR]) = new NumericA[ZBUR](a) + implicit def enrichA2(a: A[Int]) = new IntA(a) + implicit def enrichA3(a: A[T] forSome { type T <: Double }) = new GtColonDoubleA(a) + implicit def enrichA4[S](a: A[Foo[Bar[S]]])(implicit foo: Foo[S], bar: Bar[S]): EnrichedA[S] = sys.error("not implemented") + implicit def enrichA5[Z](a: A[Z]): EnrichedA[Bar[Foo[Z]]] = sys.error("not implemented") + implicit def enrichA6[Z: MyNumeric](a: A[Z]) = new MyNumericA[Z](a) // TODO: Add H <: Double and see why it crashes for C and D -- context bounds, need to check! - implicit def pimpA7[H <: Double : Manifest](a: A[H]) = new ManifestA[H](a) with MyTraversableOps[H] { def convToTraversableOps(x: H): H = sys.error("no") } + implicit def enrichA7[H <: Double : Manifest](a: A[H]) = new ManifestA[H](a) with MyTraversableOps[H] { def convToTraversableOps(x: H): H = sys.error("no") } } @@ -49,14 +49,14 @@ object A { * - tests the existential type solving * - the following inherited methods should appear: * {{{ - * def convToGtColonDoubleA(x: Double) // pimpA3: no constraints - * def convToManifestA(x: Double) // pimpA7: no constraints - * def convToMyNumericA(x: Double) // pimpA6: (if showAll is set) with a constraint that there is x: MyNumeric[Double] implicit in scope - * def convToNumericA(x: Double) // pimpA1: no constraintsd - * def convToPimpedA(x: Bar[Foo[Double]]) // pimpA5: no constraints, SHADOWED - * def convToPimpedA(x: Double) // pimpA0: no constraints, SHADOWED - * def convToTraversableOps(x: Double) // pimpA7: no constraints - * // should not be abstract! + * def convToGtColonDoubleA(x: Double) // enrichA3: no constraints + * def convToManifestA(x: Double) // enrichA7: no constraints + * def convToMyNumericA(x: Double) // enrichA6: (if showAll is set) with a constraint that there is x: MyNumeric[Double] implicit in scope + * def convToNumericA(x: Double) // enrichA1: no constraintsd + * def convToEnrichedA(x: Bar[Foo[Double]]) // enrichA5: no constraints, SHADOWED + * def convToEnrichedA(x: Double) // enrichA0: no constraints, SHADOWED + * def convToTraversableOps(x: Double) // enrichA7: no constraints + * // should not be abstract! * }}} */ class B extends A[Double] @@ -67,11 +67,11 @@ object B extends A * - tests asSeenFrom * - the following inherited methods should appear: * {{{ - * def convToIntA(x: Int) // pimpA2: no constraints - * def convToMyNumericA(x: Int) // pimpA6: (if showAll is set) with a constraint that there is x: MyNumeric[Int] implicit in scope - * def convToNumericA(x: Int) // pimpA1: no constraints - * def convToPimpedA(x: Int) // pimpA0: no constraints, SHADOWED - * def convToPimpedA(x: Bar[Foo[Int]]) // pimpA5: no constraints, SHADOWED + * def convToIntA(x: Int) // enrichA2: no constraints + * def convToMyNumericA(x: Int) // enrichA6: (if showAll is set) with a constraint that there is x: MyNumeric[Int] implicit in scope + * def convToNumericA(x: Int) // enrichA1: no constraints + * def convToEnrichedA(x: Int) // enrichA0: no constraints, SHADOWED + * def convToEnrichedA(x: Bar[Foo[Int]]) // enrichA5: no constraints, SHADOWED * }}} */ class C extends A[Int] @@ -82,10 +82,10 @@ object C extends A * - tests implicit elimination * - the following inherited methods should appear: * {{{ - * def convToMyNumericA(x: String) // pimpA6: (if showAll is set) with a constraint that there is x: MyNumeric[String] implicit in scope - * def convToNumericA(x: String) // pimpA1: (if showAll is set) with a constraint that there is x: Numeric[String] implicit in scope - * def convToPimpedA(x: Bar[Foo[String]]) // pimpA5: no constraints, SHADOWED - * def convToPimpedA(x: String) // pimpA0: no constraints, SHADOWED + * def convToMyNumericA(x: String) // enrichA6: (if showAll is set) with a constraint that there is x: MyNumeric[String] implicit in scope + * def convToNumericA(x: String) // enrichA1: (if showAll is set) with a constraint that there is x: Numeric[String] implicit in scope + * def convToEnrichedA(x: Bar[Foo[String]]) // enrichA5: no constraints, SHADOWED + * def convToEnrichedA(x: String) // enrichA0: no constraints, SHADOWED * }}} */ class D extends A[String] @@ -93,12 +93,12 @@ class D extends A[String] object D extends A -/** PimpedA class <br/> +/** EnrichedA class <br/> * - tests simple inheritance and asSeenFrom * - A, B and C should be implicitly converted to this */ -class PimpedA[V](a: A[V]) { - /** The convToPimpedA: V documentation... */ - def convToPimpedA(x: V): V = sys.error("Not implemented") +class EnrichedA[V](a: A[V]) { + /** The convToEnrichedA: V documentation... */ + def convToEnrichedA(x: V): V = sys.error("Not implemented") } /** NumericA class <br/> diff --git a/test/scaladoc/run/SI-6017.check b/test/scaladoc/run/SI-6017.check new file mode 100644 index 0000000000..619c56180b --- /dev/null +++ b/test/scaladoc/run/SI-6017.check @@ -0,0 +1 @@ +Done. diff --git a/test/scaladoc/run/SI-6017.scala b/test/scaladoc/run/SI-6017.scala new file mode 100644 index 0000000000..a4950e48d8 --- /dev/null +++ b/test/scaladoc/run/SI-6017.scala @@ -0,0 +1,23 @@ +import scala.tools.nsc.doc +import scala.tools.nsc.doc.model._ +import scala.tools.nsc.doc.html.page.{Index, ReferenceIndex} +import scala.tools.partest.ScaladocModelTest + +object Test extends ScaladocModelTest { + override def scaladocSettings = "" + override def code = """ + class STAR + class Star + """ + + def testModel(rootPackage: Package) { + model match { + case Some(universe) => { + val index = IndexModelFactory.makeIndex(universe) + // Because "STAR" and "Star" are different + assert(index.firstLetterIndex('s').keys.toSeq.length == 2) + } + case _ => assert(false) + } + } +} diff --git a/test/scaladoc/run/SI-6812.check b/test/scaladoc/run/SI-6812.check new file mode 100644 index 0000000000..619c56180b --- /dev/null +++ b/test/scaladoc/run/SI-6812.check @@ -0,0 +1 @@ +Done. diff --git a/test/scaladoc/run/implicits-base.scala b/test/scaladoc/run/implicits-base.scala index 3d57306f5d..8f8652cdb3 100644 --- a/test/scaladoc/run/implicits-base.scala +++ b/test/scaladoc/run/implicits-base.scala @@ -25,54 +25,54 @@ object Test extends ScaladocModelTest { val A = base._class("A") - // def convToPimpedA(x: T) // pimpA0: with no constraints, SHADOWED - conv = A._conversion(A.qualifiedName + ".pimpA0") + // def convToEnrichedA(x: T) // enrichA0: with no constraints, SHADOWED + conv = A._conversion(A.qualifiedName + ".enrichA0") assert(conv.members.length == 1) assert(conv.constraints.length == 0) - assert(isShadowed(conv._member("convToPimpedA"))) - assert(conv._member("convToPimpedA").resultType.name == "T") + assert(isShadowed(conv._member("convToEnrichedA"))) + assert(conv._member("convToEnrichedA").resultType.name == "T") - // def convToNumericA: T // pimpA1: with a constraint that there is x: Numeric[T] implicit in scope - conv = A._conversion(A.qualifiedName + ".pimpA1") + // def convToNumericA: T // enrichA1: with a constraint that there is x: Numeric[T] implicit in scope + conv = A._conversion(A.qualifiedName + ".enrichA1") assert(conv.members.length == 1) assert(conv.constraints.length == 1) assert(conv._member("convToNumericA").resultType.name == "T") - // def convToIntA: Int // pimpA2: with a constraint that T = Int - conv = A._conversion(A.qualifiedName + ".pimpA2") + // def convToIntA: Int // enrichA2: with a constraint that T = Int + conv = A._conversion(A.qualifiedName + ".enrichA2") assert(conv.members.length == 1) assert(conv.constraints.length == 1) assert(conv._member("convToIntA").resultType.name == "Int") - // def convToGtColonDoubleA: Double // pimpA3: with a constraint that T <: Double - conv = A._conversion(A.qualifiedName + ".pimpA3") + // def convToGtColonDoubleA: Double // enrichA3: with a constraint that T <: Double + conv = A._conversion(A.qualifiedName + ".enrichA3") assert(conv.members.length == 1) assert(conv.constraints.length == 1) assert(conv._member("convToGtColonDoubleA").resultType.name == "Double") - // def convToPimpedA: S // pimpA4: with 3 constraints: T = Foo[Bar[S]], S: Foo and S: Bar - conv = A._conversion(A.qualifiedName + ".pimpA4") + // def convToEnrichedA: S // enrichA4: with 3 constraints: T = Foo[Bar[S]], S: Foo and S: Bar + conv = A._conversion(A.qualifiedName + ".enrichA4") assert(conv.members.length == 1) assert(conv.constraints.length == 3) - assert(conv._member("convToPimpedA").resultType.name == "S") + assert(conv._member("convToEnrichedA").resultType.name == "S") - // def convToPimpedA: Bar[Foo[T]] // pimpA5: no constraints - conv = A._conversion(A.qualifiedName + ".pimpA5") + // def convToEnrichedA: Bar[Foo[T]] // enrichA5: no constraints + conv = A._conversion(A.qualifiedName + ".enrichA5") assert(conv.members.length == 1) assert(conv.constraints.length == 0) - assert(isShadowed(conv._member("convToPimpedA"))) - assert(conv._member("convToPimpedA").resultType.name == "Bar[Foo[T]]") + assert(isShadowed(conv._member("convToEnrichedA"))) + assert(conv._member("convToEnrichedA").resultType.name == "Bar[Foo[T]]") - // def convToMyNumericA: T // pimpA6: with a constraint that there is x: MyNumeric[T] implicit in scope - conv = A._conversion(A.qualifiedName + ".pimpA6") + // def convToMyNumericA: T // enrichA6: with a constraint that there is x: MyNumeric[T] implicit in scope + conv = A._conversion(A.qualifiedName + ".enrichA6") assert(conv.members.length == 1) assert(conv.constraints.length == 1) assert(conv._member("convToMyNumericA").resultType.name == "T") - // def convToManifestA: T // pimpA7: with 2 constraints: T: Manifest and T <: Double - // def convToTraversableOps: T // pimpA7: with 2 constraints: T: Manifest and T <: Double + // def convToManifestA: T // enrichA7: with 2 constraints: T: Manifest and T <: Double + // def convToTraversableOps: T // enrichA7: with 2 constraints: T: Manifest and T <: Double // should not be abstract! - conv = A._conversion(A.qualifiedName + ".pimpA7") + conv = A._conversion(A.qualifiedName + ".enrichA7") assert(conv.members.length == 2) assert(conv.constraints.length == 2) assert(conv._member("convToManifestA").resultType.name == "T") @@ -84,45 +84,45 @@ object Test extends ScaladocModelTest { val B = base._class("B") // these conversions should not affect B - assert(B._conversions(A.qualifiedName + ".pimpA2").isEmpty) - assert(B._conversions(A.qualifiedName + ".pimpA4").isEmpty) + assert(B._conversions(A.qualifiedName + ".enrichA2").isEmpty) + assert(B._conversions(A.qualifiedName + ".enrichA4").isEmpty) - // def convToPimpedA(x: Double) // pimpA0: no constraints, SHADOWED - conv = B._conversion(A.qualifiedName + ".pimpA0") + // def convToEnrichedA(x: Double) // enrichA0: no constraints, SHADOWED + conv = B._conversion(A.qualifiedName + ".enrichA0") assert(conv.members.length == 1) assert(conv.constraints.length == 0) - assert(isShadowed(conv._member("convToPimpedA"))) - assert(conv._member("convToPimpedA").resultType.name == "Double") + assert(isShadowed(conv._member("convToEnrichedA"))) + assert(conv._member("convToEnrichedA").resultType.name == "Double") - // def convToNumericA: Double // pimpA1: no constraintsd - conv = B._conversion(A.qualifiedName + ".pimpA1") + // def convToNumericA: Double // enrichA1: no constraintsd + conv = B._conversion(A.qualifiedName + ".enrichA1") assert(conv.members.length == 1) assert(conv.constraints.length == 0) assert(conv._member("convToNumericA").resultType.name == "Double") - // def convToGtColonDoubleA: Double // pimpA3: no constraints - conv = B._conversion(A.qualifiedName + ".pimpA3") + // def convToGtColonDoubleA: Double // enrichA3: no constraints + conv = B._conversion(A.qualifiedName + ".enrichA3") assert(conv.members.length == 1) assert(conv.constraints.length == 0) assert(conv._member("convToGtColonDoubleA").resultType.name == "Double") - // def convToPimpedA: Bar[Foo[Double]] // pimpA5: no constraints - conv = B._conversion(A.qualifiedName + ".pimpA5") + // def convToEnrichedA: Bar[Foo[Double]] // enrichA5: no constraints + conv = B._conversion(A.qualifiedName + ".enrichA5") assert(conv.members.length == 1) assert(conv.constraints.length == 0) - assert(isShadowed(conv._member("convToPimpedA"))) - assert(conv._member("convToPimpedA").resultType.name == "Bar[Foo[Double]]") + assert(isShadowed(conv._member("convToEnrichedA"))) + assert(conv._member("convToEnrichedA").resultType.name == "Bar[Foo[Double]]") - // def convToMyNumericA: Double // pimpA6: (if showAll is set) with a constraint that there is x: MyNumeric[Double] implicit in scope - conv = B._conversion(A.qualifiedName + ".pimpA6") + // def convToMyNumericA: Double // enrichA6: (if showAll is set) with a constraint that there is x: MyNumeric[Double] implicit in scope + conv = B._conversion(A.qualifiedName + ".enrichA6") assert(conv.members.length == 1) assert(conv.constraints.length == 1) assert(conv._member("convToMyNumericA").resultType.name == "Double") - // def convToManifestA: Double // pimpA7: no constraints - // def convToTraversableOps: Double // pimpA7: no constraints + // def convToManifestA: Double // enrichA7: no constraints + // def convToTraversableOps: Double // enrichA7: no constraints // // should not be abstract! - conv = B._conversion(A.qualifiedName + ".pimpA7") + conv = B._conversion(A.qualifiedName + ".enrichA7") assert(conv.members.length == 2) assert(conv.constraints.length == 0) assert(conv._member("convToManifestA").resultType.name == "Double") @@ -134,38 +134,38 @@ object Test extends ScaladocModelTest { val C = base._class("C") // these conversions should not affect C - assert(C._conversions(A.qualifiedName + ".pimpA3").isEmpty) - assert(C._conversions(A.qualifiedName + ".pimpA4").isEmpty) - assert(C._conversions(A.qualifiedName + ".pimpA7").isEmpty) + assert(C._conversions(A.qualifiedName + ".enrichA3").isEmpty) + assert(C._conversions(A.qualifiedName + ".enrichA4").isEmpty) + assert(C._conversions(A.qualifiedName + ".enrichA7").isEmpty) - // def convToPimpedA(x: Int) // pimpA0: no constraints, SHADOWED - conv = C._conversion(A.qualifiedName + ".pimpA0") + // def convToEnrichedA(x: Int) // enrichA0: no constraints, SHADOWED + conv = C._conversion(A.qualifiedName + ".enrichA0") assert(conv.members.length == 1) assert(conv.constraints.length == 0) - assert(isShadowed(conv._member("convToPimpedA"))) - assert(conv._member("convToPimpedA").resultType.name == "Int") + assert(isShadowed(conv._member("convToEnrichedA"))) + assert(conv._member("convToEnrichedA").resultType.name == "Int") - // def convToNumericA: Int // pimpA1: no constraints - conv = C._conversion(A.qualifiedName + ".pimpA1") + // def convToNumericA: Int // enrichA1: no constraints + conv = C._conversion(A.qualifiedName + ".enrichA1") assert(conv.members.length == 1) assert(conv.constraints.length == 0) assert(conv._member("convToNumericA").resultType.name == "Int") - // def convToIntA: Int // pimpA2: no constraints - conv = C._conversion(A.qualifiedName + ".pimpA2") + // def convToIntA: Int // enrichA2: no constraints + conv = C._conversion(A.qualifiedName + ".enrichA2") assert(conv.members.length == 1) assert(conv.constraints.length == 0) assert(conv._member("convToIntA").resultType.name == "Int") - // def convToPimpedA: Bar[Foo[Int]] // pimpA5: no constraints - conv = C._conversion(A.qualifiedName + ".pimpA5") + // def convToEnrichedA: Bar[Foo[Int]] // enrichA5: no constraints + conv = C._conversion(A.qualifiedName + ".enrichA5") assert(conv.members.length == 1) assert(conv.constraints.length == 0) - assert(isShadowed(conv._member("convToPimpedA"))) - assert(conv._member("convToPimpedA").resultType.name == "Bar[Foo[Int]]") + assert(isShadowed(conv._member("convToEnrichedA"))) + assert(conv._member("convToEnrichedA").resultType.name == "Bar[Foo[Int]]") - // def convToMyNumericA: Int // pimpA6: (if showAll is set) with a constraint that there is x: MyNumeric[Int] implicit in scope - conv = C._conversion(A.qualifiedName + ".pimpA6") + // def convToMyNumericA: Int // enrichA6: (if showAll is set) with a constraint that there is x: MyNumeric[Int] implicit in scope + conv = C._conversion(A.qualifiedName + ".enrichA6") assert(conv.members.length == 1) assert(conv.constraints.length == 1) assert(conv._member("convToMyNumericA").resultType.name == "Int") @@ -175,33 +175,33 @@ object Test extends ScaladocModelTest { val D = base._class("D") // these conversions should not affect D - assert(D._conversions(A.qualifiedName + ".pimpA2").isEmpty) - assert(D._conversions(A.qualifiedName + ".pimpA3").isEmpty) - assert(D._conversions(A.qualifiedName + ".pimpA4").isEmpty) - assert(D._conversions(A.qualifiedName + ".pimpA7").isEmpty) + assert(D._conversions(A.qualifiedName + ".enrichA2").isEmpty) + assert(D._conversions(A.qualifiedName + ".enrichA3").isEmpty) + assert(D._conversions(A.qualifiedName + ".enrichA4").isEmpty) + assert(D._conversions(A.qualifiedName + ".enrichA7").isEmpty) - // def convToPimpedA(x: String) // pimpA0: no constraints, SHADOWED - conv = D._conversion(A.qualifiedName + ".pimpA0") + // def convToEnrichedA(x: String) // enrichA0: no constraints, SHADOWED + conv = D._conversion(A.qualifiedName + ".enrichA0") assert(conv.members.length == 1) assert(conv.constraints.length == 0) - assert(isShadowed(conv._member("convToPimpedA"))) - assert(conv._member("convToPimpedA").resultType.name == "String") + assert(isShadowed(conv._member("convToEnrichedA"))) + assert(conv._member("convToEnrichedA").resultType.name == "String") - // def convToNumericA: String // pimpA1: (if showAll is set) with a constraint that there is x: Numeric[String] implicit in scope - conv = D._conversion(A.qualifiedName + ".pimpA1") + // def convToNumericA: String // enrichA1: (if showAll is set) with a constraint that there is x: Numeric[String] implicit in scope + conv = D._conversion(A.qualifiedName + ".enrichA1") assert(conv.members.length == 1) assert(conv.constraints.length == 1) assert(conv._member("convToNumericA").resultType.name == "String") - // def convToPimpedA: Bar[Foo[String]] // pimpA5: no constraints - conv = D._conversion(A.qualifiedName + ".pimpA5") + // def convToEnrichedA: Bar[Foo[String]] // enrichA5: no constraints + conv = D._conversion(A.qualifiedName + ".enrichA5") assert(conv.members.length == 1) assert(conv.constraints.length == 0) - assert(isShadowed(conv._member("convToPimpedA"))) - assert(conv._member("convToPimpedA").resultType.name == "Bar[Foo[String]]") + assert(isShadowed(conv._member("convToEnrichedA"))) + assert(conv._member("convToEnrichedA").resultType.name == "Bar[Foo[String]]") - // def convToMyNumericA: String // pimpA6: (if showAll is set) with a constraint that there is x: MyNumeric[String] implicit in scope - conv = D._conversion(A.qualifiedName + ".pimpA6") + // def convToMyNumericA: String // enrichA6: (if showAll is set) with a constraint that there is x: MyNumeric[String] implicit in scope + conv = D._conversion(A.qualifiedName + ".enrichA6") assert(conv.members.length == 1) assert(conv.constraints.length == 1) assert(conv._member("convToMyNumericA").resultType.name == "String") |