summaryrefslogtreecommitdiff
path: root/test/files/run/misc.scala
diff options
context:
space:
mode:
authorGilles Dubochet <gilles.dubochet@epfl.ch>2005-12-16 18:29:42 +0000
committerGilles Dubochet <gilles.dubochet@epfl.ch>2005-12-16 18:29:42 +0000
commitdf50e05006b43b007c2587549030d24b5c154398 (patch)
tree9edfb1fb5b8c04350a00c163cfcdb1fccd79e3aa /test/files/run/misc.scala
parent17e2b1c2a6f69ba74e79c30d1e44195fe732e3e3 (diff)
downloadscala-df50e05006b43b007c2587549030d24b5c154398.tar.gz
scala-df50e05006b43b007c2587549030d24b5c154398.tar.bz2
scala-df50e05006b43b007c2587549030d24b5c154398.zip
'test-nsc' has been moved to 'test'.
Diffstat (limited to 'test/files/run/misc.scala')
-rw-r--r--test/files/run/misc.scala239
1 files changed, 239 insertions, 0 deletions
diff --git a/test/files/run/misc.scala b/test/files/run/misc.scala
new file mode 100644
index 0000000000..900139e1cd
--- /dev/null
+++ b/test/files/run/misc.scala
@@ -0,0 +1,239 @@
+// $Id$
+
+object Test {
+
+def fac(n: Int): Int = if (n < 2) 1 else fac(n - 1) * n;
+
+// Fibonacci
+
+
+def fib(n: Int): Int = if (n < 2) 1 else fib(n - 1) + fib(n - 2);
+
+def show_fib(n: Int): Int = {
+ Console.print("### fib(");
+ Console.print(n);
+ Console.print(") = ");
+ Console.flush;
+ val v = fib(n);
+ Console.print(v);
+ Console.println;
+ Console.flush;
+ v
+}
+
+def id[X](x: X): X = x;
+
+def apply[X](f: X => X, x: X): X = f(x);
+
+def id_obj(x: Object): Object = x;
+
+def apply_obj(f: Object => Object, x: Object): Object = f(x);
+
+def id_any(x: scala.Any): scala.Any = x;
+
+def apply_any(f: scala.Any => scala.Any, x: scala.Any): scala.Any = f(x);
+
+def id_int(x: Int): Int = x;
+
+def apply_int(f: Int => Int, x: Int): Int = f(x);
+
+class MyClass() {
+ override def toString() = "=== MyClass::toString ===";
+ def test() = Console.println("=== MyClass::test ===");
+}
+
+class MySubclass() extends MyClass() {
+ override def toString() = "=== MySubclass::toString ===";
+}
+
+def foobar = {
+ 42;
+ 42l;
+ 23.5f;
+ 23.5;
+ "Hello";
+ 32 + 45;
+ // !!! System
+ // java; // !!! why is this legal ? what does it return ?
+ // java.lang;
+ //System.out;
+ Console.println("### Hello");
+ Console.print("### ");
+ Console.println(17);
+ Console.println("### Bye");
+ Console.println;
+ val x = 13;
+ x;
+ // !!! why are DefDef replaced by Block(Tree[0])? we should use Empty!
+ def f = 19;
+ f;
+ def f0() = 11;
+ f0();
+ def f1(x: Int) = x;
+ f1(7);
+ def f2(x: Int, y: Int) = x + y;
+ f2(3,5);
+ def f11(x: Int)(y: Int) = x + y;
+ f11(23)(2);
+ 1 < 2;
+ if (1 < 2) 3 else 4;
+
+
+ show_fib(0);
+ show_fib(1);
+ show_fib(2);
+ show_fib(3);
+ show_fib(4);
+
+ // !!! show_fib(id[Int](4));
+
+/*
+ show_fib(5);
+ show_fib(6);
+ show_fib(7);
+ show_fib(8);
+ show_fib(9);
+ show_fib(10);
+ show_fib(11);
+ show_fib(12);
+*/
+
+ val myObj = new MyClass();
+ Console.println(myObj);
+ val mySub = new MySubclass();
+ Console.println(mySub);
+ myObj.test();
+ Console.println;
+
+ Console.println(apply_any(id_any, "identity").toString());
+ Console.println;
+};
+
+foobar;
+
+//############################################################################
+
+class A(a: Int) {
+ def getA = a;
+}
+
+class B(b: Int, c: Int) extends A(b + c) {
+ def getB = b;
+}
+
+class X(x: Int) {
+ def getX = x;
+}
+case class Y(y: Int, z: Int) extends X(y + z) {
+ def getY = y;
+ def getAA = this.y;
+}
+
+{
+ val a: A = new A(1);
+ val b: B = new B(2,3);
+
+ val x: X = new X(4);
+ val y: Y = new Y(5,6);
+
+ Console.println("A.a = " + a.getA);
+ Console.println("B.a = " + b.getA);
+ Console.println("B.b = " + b.getB);
+ Console.println;
+
+ Console.println("X.a = " + x.getX);
+ Console.println("Y.a = " + y.getX);
+ Console.println("Y.b = " + y.getY);
+ Console.println("Y.b = " + y.y);
+ Console.println;
+}
+
+//############################################################################
+
+{
+class X() {
+
+ def foo = {
+ Console.println("X::foo");
+ }
+
+}
+
+class Y() extends X() {
+
+ override def foo = {
+ Console.println("Y::foo");
+ super.foo;
+ }
+
+}
+
+val x: X = new X();
+val y: X = new Y();
+
+x.foo;
+Console.println;
+
+y.foo;
+Console.println;
+}
+
+//############################################################################
+
+{
+class X() {}
+
+class O(a: Int) {
+
+
+ case class Y(b: Int) extends X() {
+ override def toString() = "";
+ def bar = a + b;
+ }
+
+ def foo = Y(2).bar
+}
+
+Console.println(new O(1).foo)
+}
+
+{
+
+class O(a: Int) {
+
+ class X() {}
+
+ case class Y(b: Int) extends X() {
+ override def toString() = "";
+ def bar = a + b;
+ }
+
+ def foo = Y(2).bar
+}
+
+Console.println(new O(1).foo)
+}
+
+Console.println;
+
+ case class Bar();
+
+ case class Foo(i:int, j:char, c:Bar) ;
+
+ Console.println(
+ Foo(3,'a',Bar()).caseElement( -1 ) == null
+ && Foo(3,'a',Bar()).caseElement( 0 ) == 3
+ && Foo(3,'a',Bar()).caseElement( 1 ) == 'a'
+ && Foo(3,'a',Bar()).caseElement( 2 ) == Bar()
+ && Foo(3,'a',Bar()).caseElement( 3 ) == null
+ && Bar().caseArity == 0
+ && Foo(3,'a',Bar()).caseArity == 3);
+
+//############################################################################
+
+ def main(args: Array[String]): Unit = {
+ ()
+ }
+
+//############################################################################
+}