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
|
//############################################################################
// Run Time Bugs & Test Cases
//############################################################################
// $Id$
import java.lang.System; // to avoid name clash with .NET's library
//############################################################################
// Test 0 - Array Creation
object Test0Test {
def println[A](xs: Array[A]): Unit = {
var i = 0;
System.out.print("[");
while (i < xs.length) {
if (i > 0) System.out.print(",");
System.out.print(xs(i));
i = i + 1;
}
System.out.print("]");
System.out.println();
}
def main(args: Array[String]): Unit = {
val zs: Array[Boolean] = Array(false, true);
val bs: Array[Byte ] = Array(0, 1, 2);
val ss: Array[Short ] = Array(3, 4, 5);
val cs: Array[Char ] = Array('a', 'b', 'c');
val is: Array[Int ] = Array(6, 7, 8);
val ls: Array[Long ] = Array(9l, 10l, 11l);
val fs: Array[Float ] = Array(12.0f, 13.0f);
val ds: Array[Double ] = Array(14.0d, 15.0d);
val vs: Array[AnyVal ] = Array(6, 7l, 8f, 9d);
val os: Array[AnyRef ] = Array("string");
val as: Array[Any ] = Array(0, "bye");
println({ System.out.println("hello"); Predef}.Array());
println(zs);
println(bs);
println(ss);
println(cs);
println(is);
println(ls);
println(fs);
println(ds);
println(vs);
println(os);
println(as);
}
}
//############################################################################
// Test 1 - Block Qualifiers
package test1.bar {
object System {
val out: PrintStream = new PrintStream();
}
class PrintStream() {
def println(): Unit = {
java.lang.System.out.println();
}
}
}
object Test1Test {
def main(args: Array[String]): Unit = {
{System.out.print(10)}; java.lang.System.out.println();
// {System.out.print(11); java}.lang.System.out.println();
// {System.out.print(12); java.lang}.System.out.println();
// {System.out.print(13); java.lang.System}.out.println();
{System.out.print(14); java.lang.System.out}.println();
{System.out.print(15); java.lang.System.out.println:(() => Unit)}();
{System.out.print(16); java.lang.System.out.println()};
{System.out.print(20)}; test1.bar.System.out.println();
// {System.out.print(21); test1}.bar.System.out.println();
// {System.out.print(22); test1.bar}.System.out.println();
{System.out.print(23); test1.bar.System}.out.println();
{System.out.print(24); test1.bar.System.out}.println();
{System.out.print(25); test1.bar.System.out.println:(() => Unit)}();
{System.out.print(26); test1.bar.System.out.println()};
}
}
//############################################################################
// Main
object Test {
var errors: Int = 0;
def test(bug: String, def test: Unit): Unit = {
System.out.println("<<< bug " + bug);
try {
test;
} catch {
case exception => {
val name: String = Thread.currentThread().getName();
System.out.print("Exception in thread \"" + name + "\" ");
exception.printStackTrace();
System.out.println();
errors = errors + 1;
}
}
System.out.println(">>> bug " + bug);
System.out.println();
}
def main(args: Array[String]): Unit = {
test("Test0" , Test0Test.main(args));
test("Test1" , Test1Test.main(args));
if (errors > 0) {
System.out.println();
System.out.println(errors + " error" + (if (errors > 1) "s" else ""));
}
}
}
//############################################################################
|