summaryrefslogtreecommitdiff
path: root/test/files/jvm/interpreter.check
diff options
context:
space:
mode:
Diffstat (limited to 'test/files/jvm/interpreter.check')
-rw-r--r--test/files/jvm/interpreter.check339
1 files changed, 239 insertions, 100 deletions
diff --git a/test/files/jvm/interpreter.check b/test/files/jvm/interpreter.check
index 3c0ee7b4bd..dd0f39551c 100644
--- a/test/files/jvm/interpreter.check
+++ b/test/files/jvm/interpreter.check
@@ -2,222 +2,360 @@ Type in expressions to have them evaluated.
Type :help for more information.
scala>
-scala>
-scala> res0: Int = 7
-scala> | | | | gcd: (x: Int,y: Int)Int
+scala> // basics
+
+scala> 3+4
+res0: Int = 7
-scala> five: Int = 5
+scala> def gcd(x: Int, y: Int): Int = {
+ if (x == 0) y
+ else if (y == 0) x
+ else gcd(y%x, x)
+}
+gcd: (x: Int,y: Int)Int
-scala> x: Int = 1
+scala> val five = gcd(15,35)
+five: Int = 5
-scala> x: Int = 2
+scala> var x = 1
+x: Int = 1
-scala> three: Int = 3
+scala> x = 2
+x: Int = 2
-scala> defined type alias anotherint
+scala> val three = x+1
+three: Int = 3
-scala> four: anotherint = 4
+scala> type anotherint = Int
+defined type alias anotherint
-scala> <console>:8: error: type mismatch;
+scala> val four: anotherint = 4
+four: anotherint = 4
+
+scala> val bogus: anotherint = "hello"
+<console>:8: error: type mismatch;
found : java.lang.String("hello")
required: anotherint
val bogus: anotherint = "hello"
^
-scala> defined trait PointlessTrait
+scala> trait PointlessTrait
+defined trait PointlessTrait
-scala> x: Int = 2
+scala> val (x,y) = (2,3)
+x: Int = 2
y: Int = 3
-scala> hello
+scala> println("hello")
+hello
scala>
-scala>
-scala> t1513: Array[Null] = Array(null)
-scala>
-scala> atom: scala.xml.Atom[Unit] = ()
+scala> // ticket #1513
-scala>
-scala> defined class S
+scala> val t1513 = Array(null)
+t1513: Array[Null] = Array(null)
-scala> fish: S = fish
+scala> // ambiguous toString problem from #547
-scala>
-scala> arr: Array[java.lang.String] = Array(What's, up, doc?)
+scala> val atom = new scala.xml.Atom()
+atom: scala.xml.Atom[Unit] = ()
-scala>
-scala> arrInt: Any = Array(1, 2, 3)
+scala> // overriding toString problem from #1404
-scala>
-scala> arrArrInt: Any = Array(Array(1, 2), Array(3, 4))
+scala> class S(override val toString : String)
+defined class S
-scala>
-scala>
-scala> defined class Foo
+scala> val fish = new S("fish")
+fish: S = fish
-scala> defined class Bar
+scala> // Test that arrays pretty print nicely.
-scala> foo2bar: (foo: Foo)Bar
+scala> val arr = Array("What's", "up", "doc?")
+arr: Array[java.lang.String] = Array(What's, up, doc?)
-scala> bar: Bar = Bar(3)
+scala> // Test that arrays pretty print nicely, even when we give them type Any
+
+scala> val arrInt : Any = Array(1,2,3)
+arrInt: Any = Array(1, 2, 3)
+
+scala> // Test that nested arrays are pretty-printed correctly
+
+scala> val arrArrInt : Any = Array(Array(1, 2), Array(3, 4))
+arrArrInt: Any = Array(Array(1, 2), Array(3, 4))
scala>
+
+scala> // implicit conversions
+
+scala> case class Foo(n: Int)
+defined class Foo
+
+scala> case class Bar(n: Int)
+defined class Bar
+
+scala> implicit def foo2bar(foo: Foo) = Bar(foo.n)
+foo2bar: (foo: Foo)Bar
+
+scala> val bar: Bar = Foo(3)
+bar: Bar = Bar(3)
+
scala>
+
+scala> // importing from a previous result
+
scala> import bar._
+import bar._
-scala> m: Int = 3
+scala> val m = n
+m: Int = 3
scala>
-scala>
-scala> one: Int = 1
-scala> one: Int = 1
+scala> // stressing the imports mechanism
-scala> one: Int = 1
+scala> val one = 1
+one: Int = 1
-scala> one: Int = 1
+scala> val one = 1
+one: Int = 1
-scala> one: Int = 1
+scala> val one = 1
+one: Int = 1
-scala> one: Int = 1
+scala> val one = 1
+one: Int = 1
-scala> one: Int = 1
+scala> val one = 1
+one: Int = 1
-scala> one: Int = 1
+scala> val one = 1
+one: Int = 1
-scala> one: Int = 1
+scala> val one = 1
+one: Int = 1
-scala> one: Int = 1
+scala> val one = 1
+one: Int = 1
-scala> one: Int = 1
+scala> val one = 1
+one: Int = 1
-scala> one: Int = 1
+scala> val one = 1
+one: Int = 1
-scala> one: Int = 1
+scala> val one = 1
+one: Int = 1
-scala> one: Int = 1
+scala> val one = 1
+one: Int = 1
-scala> one: Int = 1
+scala> val one = 1
+one: Int = 1
-scala> one: Int = 1
+scala> val one = 1
+one: Int = 1
-scala> one: Int = 1
+scala> val one = 1
+one: Int = 1
-scala> one: Int = 1
+scala> val one = 1
+one: Int = 1
-scala> one: Int = 1
+scala> val one = 1
+one: Int = 1
-scala> one: Int = 1
+scala> val one = 1
+one: Int = 1
+
+scala> val one = 1
+one: Int = 1
+
+scala> val one = 1
+one: Int = 1
scala>
+
scala>
-scala> x1: Int = 1
-scala> x2: Int = 1
+scala> val x1 = 1
+x1: Int = 1
-scala> x3: Int = 1
+scala> val x2 = 1
+x2: Int = 1
-scala> x4: Int = 1
+scala> val x3 = 1
+x3: Int = 1
-scala> x5: Int = 1
+scala> val x4 = 1
+x4: Int = 1
-scala> x6: Int = 1
+scala> val x5 = 1
+x5: Int = 1
-scala> x7: Int = 1
+scala> val x6 = 1
+x6: Int = 1
-scala> x8: Int = 1
+scala> val x7 = 1
+x7: Int = 1
-scala> x9: Int = 1
+scala> val x8 = 1
+x8: Int = 1
-scala> x10: Int = 1
+scala> val x9 = 1
+x9: Int = 1
-scala> x11: Int = 1
+scala> val x10 = 1
+x10: Int = 1
-scala> x12: Int = 1
+scala> val x11 = 1
+x11: Int = 1
-scala> x13: Int = 1
+scala> val x12 = 1
+x12: Int = 1
-scala> x14: Int = 1
+scala> val x13 = 1
+x13: Int = 1
-scala> x15: Int = 1
+scala> val x14 = 1
+x14: Int = 1
-scala> x16: Int = 1
+scala> val x15 = 1
+x15: Int = 1
-scala> x17: Int = 1
+scala> val x16 = 1
+x16: Int = 1
-scala> x18: Int = 1
+scala> val x17 = 1
+x17: Int = 1
-scala> x19: Int = 1
+scala> val x18 = 1
+x18: Int = 1
-scala> x20: Int = 1
+scala> val x19 = 1
+x19: Int = 1
-scala>
-scala> two: Int = 2
+scala> val x20 = 1
+x20: Int = 1
scala>
+
+scala> val two = one + x5
+two: Int = 2
+
scala>
-scala>
-scala> xs: Array[_] = Array(1, 2)
-scala> res2: Int = 2
+scala> // handling generic wildcard arrays (#2386)
-scala> res3: Any = 1
+scala> // It's put here because type feedback is an important part of it.
-scala> res4: Array[_] = Array(2)
+scala> val xs: Array[_] = Array(1, 2)
+xs: Array[_] = Array(1, 2)
-scala> res5: Array[java.lang.String] = Array(abc, abc)
+scala> xs.size
+res2: Int = 2
-scala> res6: scala.collection.mutable.ArraySeq[_] = ArraySeq(1, 2)
+scala> xs.head
+res3: Any = 1
-scala> res7: Array[(_$1, _$1)] forSome { type _$1 } = Array((1,1), (2,2))
+scala> xs filter (_ == 2)
+res4: Array[_] = Array(2)
+
+scala> xs map (_ => "abc")
+res5: Array[java.lang.String] = Array(abc, abc)
+
+scala> xs map (x => x)
+res6: scala.collection.mutable.ArraySeq[_] = ArraySeq(1, 2)
+
+scala> xs map (x => (x, x))
+res7: Array[(_$1, _$1)] forSome { type _$1 } = Array((1,1), (2,2))
scala>
-scala>
-scala>
-scala> <console>:1: error: '=' expected but '=>' found.
+
+scala> // interior syntax errors should *not* go into multi-line input mode.
+
+scala> // both of the following should abort immediately:
+
+scala> def x => y => z
+<console>:1: error: '=' expected but '=>' found.
def x => y => z
^
-scala> <console>:1: error: illegal start of definition
+scala> [1,2,3]
+<console>:1: error: illegal start of definition
[1,2,3]
^
scala>
+
scala>
-scala>
-scala> | | | | res8: scala.xml.Elem =
+
+scala> // multi-line XML
+
+scala> <a>
+<b
+ c="c"
+ d="dd"
+/></a>
+res8: scala.xml.Elem =
<a>
<b c="c" d="dd"></b></a>
scala>
+
scala>
-scala> | | | |
-scala>
+
+scala> /*
+ /*
+ multi-line comment
+ */
+*/
+
scala>
+
scala>
-scala> | | | res9: java.lang.String =
+
+scala> // multi-line string
+
+scala> """
+hello
+there
+"""
+res9: java.lang.String =
"
hello
there
"
scala>
-scala> | | You typed two blank lines. Starting a new command.
-scala>
-scala> match: Int
+scala> (1 + // give up early by typing two blank lines
-scala> x: Int = 1
+
+You typed two blank lines. Starting a new command.
+
+scala> // defining and using quoted names should work (ticket #323)
+
+scala> def `match` = 1
+match: Int
+
+scala> val x = `match`
+x: Int = 1
scala>
-scala>
-scala> defined class Exp
+
+scala> // multiple classes defined on one line
+
+scala> sealed class Exp; class Fact extends Exp; class Term extends Exp
+defined class Exp
defined class Fact
defined class Term
-scala> | | <console>:18: warning: match is not exhaustive!
+scala> def f(e: Exp) = e match { // non-exhaustive warning here
+ case _:Fact => 3
+}
+<console>:18: warning: match is not exhaustive!
missing combination Exp
missing combination Term
@@ -226,6 +364,7 @@ missing combination Term
f: (e: Exp)Int
scala>
+
scala>
plusOne: (x: Int)Int
res0: Int = 6