summaryrefslogtreecommitdiff
path: root/test/files/neg/altherr3.scala
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

  //##########################################################################
}