diff options
author | Paul Phillips <paulp@improving.org> | 2011-04-05 01:48:31 +0000 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2011-04-05 01:48:31 +0000 |
commit | e50fbcc3b32d4d65deb98a06c644894d3561c81c (patch) | |
tree | 182009f58959df2f676a73c9bb33fc18bbfcead2 /test/files/jvm | |
parent | e06244cb55797d9928a52a22a548d547555be733 (diff) | |
download | scala-e50fbcc3b32d4d65deb98a06c644894d3561c81c.tar.gz scala-e50fbcc3b32d4d65deb98a06c644894d3561c81c.tar.bz2 scala-e50fbcc3b32d4d65deb98a06c644894d3561c81c.zip |
Enhancing the repl-testing code by turning it i...
Enhancing the repl-testing code by turning it into a transcript
producing machine. "Here's some code." "Here's a transcript!" "Good day
to you, sir!" "No, good day to YOU!"
These changes are awesome. Look at the checkfile diffs for god's sake,
they'll make you weep with joy. No review.
Diffstat (limited to 'test/files/jvm')
-rw-r--r-- | test/files/jvm/interpreter.check | 339 |
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 |