blob: bb40099e1e7d952df385abe84d25ff59428573c8 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
|
// $Id$
module bug {
//##########################################################################
trait Foo[a];
def foo0[a](x: a*): Foo[a] = foo0();
val foo1: Int = 0;
def foo1[a](x: a*): Foo[a] = foo1();
def bar0[a](x: a): Int = 0;
def bar1[a](x: Foo[a]): Int = 0;
def bar2[a](x: Foo[Foo[a]]): Int = 0;
def bar3[a](x: Foo[Foo[Foo[a]]]): Int = 0;
//##########################################################################
bar0(foo0());
bar0(foo0(foo0()));
bar0(foo0(foo0(foo0())));
bar0(foo0(foo0(foo0(foo0()))));
bar0[Int](foo0()); // error 1
bar0[Int](foo0(foo0())); // error 2
bar0[Int](foo0(foo0(foo0()))); // error 3
bar0[Int](foo0(foo0(foo0(foo0())))); // error 4
bar0[Foo[Int]](foo0());
bar0[Foo[Int]](foo0(foo0())); // error 5
bar0[Foo[Int]](foo0(foo0(foo0()))); // error 6
bar0[Foo[Int]](foo0(foo0(foo0(foo0())))); // error 7
bar0[Foo[Foo[Int]]](foo0());
bar0[Foo[Foo[Int]]](foo0(foo0()));
bar0[Foo[Foo[Int]]](foo0(foo0(foo0()))); // error 8
bar0[Foo[Foo[Int]]](foo0(foo0(foo0(foo0())))); // error 9
//##########################################################################
bar1(foo0());
bar1(foo0(foo0()));
bar1(foo0(foo0(foo0())));
bar1(foo0(foo0(foo0(foo0()))));
bar1[Int](foo0());
bar1[Int](foo0(foo0())); // error 10
bar1[Int](foo0(foo0(foo0()))); // error 11
bar1[Int](foo0(foo0(foo0(foo0())))); // error 12
bar1[Foo[Int]](foo0());
bar1[Foo[Int]](foo0(foo0()));
bar1[Foo[Int]](foo0(foo0(foo0()))); // error 13
bar1[Foo[Int]](foo0(foo0(foo0(foo0())))); // error 14
bar1[Foo[Foo[Int]]](foo0());
bar1[Foo[Foo[Int]]](foo0(foo0()));
bar1[Foo[Foo[Int]]](foo0(foo0(foo0())));
bar1[Foo[Foo[Int]]](foo0(foo0(foo0(foo0())))); // error 15
//##########################################################################
bar2(foo0());
bar2(foo0(foo0()));
bar2(foo0(foo0(foo0())));
bar2(foo0(foo0(foo0(foo0()))));
bar2[Int](foo0());
bar2[Int](foo0(foo0()));
bar2[Int](foo0(foo0(foo0()))); // error 16
bar2[Int](foo0(foo0(foo0(foo0())))); // error 17
bar2[Foo[Int]](foo0());
bar2[Foo[Int]](foo0(foo0()));
bar2[Foo[Int]](foo0(foo0(foo0())));
bar2[Foo[Int]](foo0(foo0(foo0(foo0())))); // error 18
bar2[Foo[Foo[Int]]](foo0());
bar2[Foo[Foo[Int]]](foo0(foo0()));
bar2[Foo[Foo[Int]]](foo0(foo0(foo0())));
bar2[Foo[Foo[Int]]](foo0(foo0(foo0(foo0()))));
//##########################################################################
bar3(foo0());
bar3(foo0(foo0())); // error 19 (inference fails)
bar3(foo0(foo0(foo0())));
bar3(foo0(foo0(foo0(foo0()))));
bar3[Int](foo0());
bar3[Int](foo0(foo0()));
bar3[Int](foo0(foo0(foo0())));
bar3[Int](foo0(foo0(foo0(foo0())))); // error 20
bar3[Foo[Int]](foo0());
bar3[Foo[Int]](foo0(foo0()));
bar3[Foo[Int]](foo0(foo0(foo0())));
bar3[Foo[Int]](foo0(foo0(foo0(foo0()))));
bar3[Foo[Foo[Int]]](foo0());
bar3[Foo[Foo[Int]]](foo0(foo0()));
bar3[Foo[Foo[Int]]](foo0(foo0(foo0())));
bar3[Foo[Foo[Int]]](foo0(foo0(foo0(foo0()))));
//##########################################################################
//##########################################################################
//##########################################################################
bar0(foo1());
bar0(foo1(foo1()));
bar0(foo1(foo1(foo1())));
bar0(foo1(foo1(foo1(foo1()))));
bar0[Int](foo1()); // error 21
bar0[Int](foo1(foo1())); // error 22
bar0[Int](foo1(foo1(foo1()))); // error 23
bar0[Int](foo1(foo1(foo1(foo1())))); // error 24
bar0[Foo[Int]](foo1());
bar0[Foo[Int]](foo1(foo1())); // error 25
bar0[Foo[Int]](foo1(foo1(foo1()))); // error 26
bar0[Foo[Int]](foo0(foo1(foo1(foo1())))); // error 27
bar0[Foo[Foo[Int]]](foo1());
bar0[Foo[Foo[Int]]](foo1(foo1()));
bar0[Foo[Foo[Int]]](foo1(foo1(foo1()))); // error 28
bar0[Foo[Foo[Int]]](foo1(foo0(foo1(foo1())))); // error 29
//##########################################################################
bar1(foo1());
bar1(foo1(foo1()));
bar1(foo1(foo1(foo1())));
bar1(foo1(foo1(foo1(foo1()))));
bar1[Int](foo1());
bar1[Int](foo1(foo1())); // error 30
bar1[Int](foo1(foo1(foo1()))); // error 31
bar1[Int](foo1(foo1(foo1(foo1())))); // error 32
bar1[Foo[Int]](foo1());
bar1[Foo[Int]](foo1(foo1()));
bar1[Foo[Int]](foo1(foo1(foo1()))); // error 33
bar1[Foo[Int]](foo1(foo1(foo1(foo1())))); // error 34
bar1[Foo[Foo[Int]]](foo1());
bar1[Foo[Foo[Int]]](foo1(foo1()));
bar1[Foo[Foo[Int]]](foo1(foo1(foo1())));
bar1[Foo[Foo[Int]]](foo1(foo1(foo1(foo1())))); // error 35
//##########################################################################
}
|