summaryrefslogtreecommitdiff
path: root/test/files/run
diff options
context:
space:
mode:
Diffstat (limited to 'test/files/run')
-rw-r--r--test/files/run/blame_eye_triple_eee-double.check2
-rw-r--r--test/files/run/blame_eye_triple_eee-double.scala2
-rw-r--r--test/files/run/blame_eye_triple_eee-float.check2
-rw-r--r--test/files/run/blame_eye_triple_eee-float.scala2
-rw-r--r--test/files/run/constrained-types.check8
-rw-r--r--test/files/run/deeps.scala2
-rw-r--r--test/files/run/finally.scala2
-rw-r--r--test/files/run/function-null-unbox.scala8
-rw-r--r--test/files/run/indylambda-boxing/VC.scala2
-rw-r--r--test/files/run/indylambda-boxing/test.scala29
-rw-r--r--test/files/run/iq.scala2
-rw-r--r--test/files/run/kind-repl-command.check6
-rw-r--r--test/files/run/kmpSliceSearch.flags1
-rw-r--r--test/files/run/lambda-serialization-gc.scala40
-rw-r--r--test/files/run/lambda-serialization.scala35
-rw-r--r--test/files/run/names-defaults.scala4
-rw-r--r--test/files/run/nullable-lazyvals.scala2
-rw-r--r--test/files/run/private-inline.flags2
-rw-r--r--test/files/run/range.scala18
-rw-r--r--test/files/run/reify-repl-fail-gracefully.check6
-rw-r--r--test/files/run/reify_newimpl_22.check6
-rw-r--r--test/files/run/reify_newimpl_23.check2
-rw-r--r--test/files/run/reify_newimpl_25.check6
-rw-r--r--test/files/run/reify_newimpl_26.check2
-rw-r--r--test/files/run/repl-bare-expr.check36
-rw-r--r--test/files/run/repl-colon-type.check4
-rw-r--r--test/files/run/repl-parens.check36
-rw-r--r--test/files/run/repl-paste-2.check2
-rw-r--r--test/files/run/repl-reset.check24
-rw-r--r--test/files/run/repl-serialization.check25
-rw-r--r--test/files/run/repl-serialization.scala68
-rw-r--r--test/files/run/repl-trim-stack-trace.scala6
-rw-r--r--test/files/run/synchronized.check5
-rw-r--r--test/files/run/synchronized.scala3
-rw-r--r--test/files/run/t0631.scala2
-rw-r--r--test/files/run/t2106.check7
-rw-r--r--test/files/run/t2106.flags2
-rw-r--r--test/files/run/t2526.scala2
-rw-r--r--test/files/run/t4542.check2
-rw-r--r--test/files/run/t4594-repl-settings.scala2
-rw-r--r--test/files/run/t5655.check12
-rw-r--r--test/files/run/t6102.check5
-rw-r--r--test/files/run/t6240-universe-code-gen.scala4
-rw-r--r--test/files/run/t6502.scala2
-rw-r--r--test/files/run/t7319.check18
-rw-r--r--test/files/run/t7582.check5
-rw-r--r--test/files/run/t7582/InlineHolder.scala3
-rw-r--r--test/files/run/t7582b.check5
-rw-r--r--test/files/run/t7582b/InlineHolder.scala3
-rw-r--r--test/files/run/t7747-repl.check135
-rw-r--r--test/files/run/t7747-repl.scala6
-rw-r--r--test/files/run/t7817-tree-gen.scala2
-rw-r--r--test/files/run/t8601-closure-elim.flags2
-rw-r--r--test/files/run/t8601-closure-elim.scala2
-rw-r--r--test/files/run/t8708_b/Test_2.scala2
-rw-r--r--test/files/run/t8918-unary-ids.scala8
-rw-r--r--test/files/run/t9170.scala24
-rw-r--r--test/files/run/t9206.scala39
-rw-r--r--test/files/run/t9359.check18
-rw-r--r--test/files/run/t9359/A_1.java19
-rw-r--r--test/files/run/t9359/B_2.java19
-rw-r--r--test/files/run/t9359/Test_2.scala28
-rw-r--r--test/files/run/toolbox-varargs/Test.scala13
-rw-r--r--test/files/run/toolbox-varargs/Varargs.java8
-rw-r--r--test/files/run/xMigration.check18
65 files changed, 604 insertions, 213 deletions
diff --git a/test/files/run/blame_eye_triple_eee-double.check b/test/files/run/blame_eye_triple_eee-double.check
index 5e46d91a8f..53eac99ecd 100644
--- a/test/files/run/blame_eye_triple_eee-double.check
+++ b/test/files/run/blame_eye_triple_eee-double.check
@@ -6,4 +6,4 @@ if (x != x) is good
if (NaN != x) is good
x matching was good
NaN matching was good
-loop with NaN was goood
+loop with NaN was good
diff --git a/test/files/run/blame_eye_triple_eee-double.scala b/test/files/run/blame_eye_triple_eee-double.scala
index 1640aead40..4dcbfe7a7a 100644
--- a/test/files/run/blame_eye_triple_eee-double.scala
+++ b/test/files/run/blame_eye_triple_eee-double.scala
@@ -56,6 +56,6 @@ object Test extends App {
else z = NaN
i += 1
}
- if (z.isNaN && i == 10) println("loop with NaN was goood")
+ if (z.isNaN && i == 10) println("loop with NaN was good")
else println("loop with NaN was broken")
}
diff --git a/test/files/run/blame_eye_triple_eee-float.check b/test/files/run/blame_eye_triple_eee-float.check
index 5e46d91a8f..53eac99ecd 100644
--- a/test/files/run/blame_eye_triple_eee-float.check
+++ b/test/files/run/blame_eye_triple_eee-float.check
@@ -6,4 +6,4 @@ if (x != x) is good
if (NaN != x) is good
x matching was good
NaN matching was good
-loop with NaN was goood
+loop with NaN was good
diff --git a/test/files/run/blame_eye_triple_eee-float.scala b/test/files/run/blame_eye_triple_eee-float.scala
index 4deb9f3d60..bcc6b195d5 100644
--- a/test/files/run/blame_eye_triple_eee-float.scala
+++ b/test/files/run/blame_eye_triple_eee-float.scala
@@ -56,6 +56,6 @@ object Test extends App {
else z = NaN
i += 1
}
- if (z.isNaN && i == 10) println("loop with NaN was goood")
+ if (z.isNaN && i == 10) println("loop with NaN was good")
else println("loop with NaN was broken")
}
diff --git a/test/files/run/constrained-types.check b/test/files/run/constrained-types.check
index 89a08d5ccb..6dbf8088c9 100644
--- a/test/files/run/constrained-types.check
+++ b/test/files/run/constrained-types.check
@@ -135,16 +135,16 @@ y: String = hello
scala>
scala> val x = 3 : Int @Annot(e+f+g+h) // should have a graceful error message
-<console>:8: error: not found: value e
+<console>:11: error: not found: value e
val x = 3 : Int @Annot(e+f+g+h) // should have a graceful error message
^
-<console>:8: error: not found: value f
+<console>:11: error: not found: value f
val x = 3 : Int @Annot(e+f+g+h) // should have a graceful error message
^
-<console>:8: error: not found: value g
+<console>:11: error: not found: value g
val x = 3 : Int @Annot(e+f+g+h) // should have a graceful error message
^
-<console>:8: error: not found: value h
+<console>:11: error: not found: value h
val x = 3 : Int @Annot(e+f+g+h) // should have a graceful error message
^
diff --git a/test/files/run/deeps.scala b/test/files/run/deeps.scala
index 6049cc6024..1546112ed5 100644
--- a/test/files/run/deeps.scala
+++ b/test/files/run/deeps.scala
@@ -3,7 +3,7 @@
//############################################################################
//############################################################################
-// need to revisit array equqality
+// need to revisit array equality
object Test {
def testEquals1 {
diff --git a/test/files/run/finally.scala b/test/files/run/finally.scala
index 2c01edaaef..b66354ca03 100644
--- a/test/files/run/finally.scala
+++ b/test/files/run/finally.scala
@@ -93,7 +93,7 @@ object Test extends App {
}
}
- // nested finallies with return value
+ // nested finally blocks with return value
def nestedFinalies: Int =
try {
try {
diff --git a/test/files/run/function-null-unbox.scala b/test/files/run/function-null-unbox.scala
new file mode 100644
index 0000000000..6c0369fffd
--- /dev/null
+++ b/test/files/run/function-null-unbox.scala
@@ -0,0 +1,8 @@
+object Test {
+ def main(args: Array[String]): Unit = {
+ val i2s = (x: Int) => ""
+ assert(i2s.asInstanceOf[AnyRef => String].apply(null) == "")
+ val i2i = (x: Int) => x + 1
+ assert(i2i.asInstanceOf[AnyRef => Int].apply(null) == 1)
+ }
+}
diff --git a/test/files/run/indylambda-boxing/VC.scala b/test/files/run/indylambda-boxing/VC.scala
new file mode 100644
index 0000000000..ef867a3658
--- /dev/null
+++ b/test/files/run/indylambda-boxing/VC.scala
@@ -0,0 +1,2 @@
+
+class VC(private val i: Int) extends AnyVal
diff --git a/test/files/run/indylambda-boxing/test.scala b/test/files/run/indylambda-boxing/test.scala
new file mode 100644
index 0000000000..cc0a460640
--- /dev/null
+++ b/test/files/run/indylambda-boxing/test.scala
@@ -0,0 +1,29 @@
+class Capture
+class Test {
+ def test1 = (i: Int) => ""
+ def test2 = (i: VC) => i
+ def test3 = (i: Int) => i
+
+ def test4 = {val c = new Capture; (i: Int) => {(c, Test.this.toString); 42} }
+ def test5 = {val c = new Capture; (i: VC) => (c, Test.this.toString) }
+ def test6 = {val c = new Capture; (i: Int) => (c, Test.this.toString) }
+
+ def test7 = {val vc = new Capture; (i: Int) => vc }
+ def test8 = {val c = 42; (s: String) => (s, c)}
+ def test9 = {val c = 42; (s: String) => ()}
+}
+
+object Test {
+ def main(args: Array[String]): Unit = {
+ val t = new Test
+ assert(t.test1.apply(42) == "")
+ assert(t.test2.apply(new VC(42)) == new VC(42))
+ assert(t.test3.apply(-1) == -1)
+ t.test4.apply(0)
+ t.test5.apply(new VC(42))
+ t.test6.apply(42)
+ t.test7.apply(0)
+ t.test8.apply("")
+ t.test9.apply("")
+ }
+}
diff --git a/test/files/run/iq.scala b/test/files/run/iq.scala
index 1eb1d40e37..0ccf67a2e9 100644
--- a/test/files/run/iq.scala
+++ b/test/files/run/iq.scala
@@ -69,7 +69,7 @@ object iq {
val (_, q7) = q6.dequeue
//val q8 = q7 + 10 + 11 //deprecated
val q8 = q7.enqueue(10).enqueue(11)
- /* Test dequeu
+ /* Test dequeue
* Expected: q8: Queue(2,3,4,5,6,7,8,9,10,11)
*/
Console.println("q8: " + q8)
diff --git a/test/files/run/kind-repl-command.check b/test/files/run/kind-repl-command.check
index 586b2710e1..1853213555 100644
--- a/test/files/run/kind-repl-command.check
+++ b/test/files/run/kind-repl-command.check
@@ -21,8 +21,8 @@ scala> :k new { def empty = false }
AnyRef{def empty: Boolean}'s kind is A
scala> :k Nonexisting
-<console>:8: error: not found: value Nonexisting
- Nonexisting
- ^
+<console>:11: error: not found: value Nonexisting
+ Nonexisting
+ ^
scala> :quit
diff --git a/test/files/run/kmpSliceSearch.flags b/test/files/run/kmpSliceSearch.flags
new file mode 100644
index 0000000000..ac96850b69
--- /dev/null
+++ b/test/files/run/kmpSliceSearch.flags
@@ -0,0 +1 @@
+-Ydelambdafy:inline \ No newline at end of file
diff --git a/test/files/run/lambda-serialization-gc.scala b/test/files/run/lambda-serialization-gc.scala
new file mode 100644
index 0000000000..8fa0b4b402
--- /dev/null
+++ b/test/files/run/lambda-serialization-gc.scala
@@ -0,0 +1,40 @@
+import java.io._
+
+import java.net.URLClassLoader
+
+class C {
+ def serializeDeserialize[T <: AnyRef](obj: T) = {
+ val buffer = new ByteArrayOutputStream
+ val out = new ObjectOutputStream(buffer)
+ out.writeObject(obj)
+ val in = new ObjectInputStream(new ByteArrayInputStream(buffer.toByteArray))
+ in.readObject.asInstanceOf[T]
+ }
+
+ serializeDeserialize((c: String) => c.length)
+}
+
+object Test {
+ def main(args: Array[String]): Unit = {
+ test()
+ }
+
+ def test(): Unit = {
+ val loader = getClass.getClassLoader.asInstanceOf[URLClassLoader]
+ val loaderCClass = classOf[C]
+ def deserializedInThrowawayClassloader = {
+ val throwawayLoader: java.net.URLClassLoader = new java.net.URLClassLoader(loader.getURLs, ClassLoader.getSystemClassLoader) {
+ val maxMemory = Runtime.getRuntime.maxMemory()
+ val junk = new Array[Byte]((maxMemory / 2).toInt)
+ }
+ val clazz = throwawayLoader.loadClass("C")
+ assert(clazz != loaderCClass)
+ clazz.newInstance()
+ }
+ (1 to 4) foreach { i =>
+ // This would OOM by the third iteration if we leaked `throwawayLoader` during
+ // deserialization.
+ deserializedInThrowawayClassloader
+ }
+ }
+}
diff --git a/test/files/run/lambda-serialization.scala b/test/files/run/lambda-serialization.scala
new file mode 100644
index 0000000000..46b26d7c5e
--- /dev/null
+++ b/test/files/run/lambda-serialization.scala
@@ -0,0 +1,35 @@
+import java.io.{ByteArrayInputStream, ObjectInputStream, ObjectOutputStream, ByteArrayOutputStream}
+
+object Test {
+ def main(args: Array[String]): Unit = {
+ roundTrip
+ }
+
+ def roundTrip(): Unit = {
+ val c = new Capture("Capture")
+ val lambda = (p: Param) => ("a", p, c)
+ val reconstituted1 = serializeDeserialize(lambda).asInstanceOf[Object => Any]
+ val p = new Param
+ assert(reconstituted1.apply(p) == ("a", p, c))
+ val reconstituted2 = serializeDeserialize(lambda).asInstanceOf[Object => Any]
+ assert(reconstituted1.getClass == reconstituted2.getClass)
+
+ val reconstituted3 = serializeDeserialize(reconstituted1)
+ assert(reconstituted3.apply(p) == ("a", p, c))
+
+ val specializedLambda = (p: Int) => List(p, c).length
+ assert(serializeDeserialize(specializedLambda).apply(42) == 2)
+ assert(serializeDeserialize(serializeDeserialize(specializedLambda)).apply(42) == 2)
+ }
+
+ def serializeDeserialize[T <: AnyRef](obj: T) = {
+ val buffer = new ByteArrayOutputStream
+ val out = new ObjectOutputStream(buffer)
+ out.writeObject(obj)
+ val in = new ObjectInputStream(new ByteArrayInputStream(buffer.toByteArray))
+ in.readObject.asInstanceOf[T]
+ }
+}
+
+case class Capture(s: String) extends Serializable
+class Param
diff --git a/test/files/run/names-defaults.scala b/test/files/run/names-defaults.scala
index b7ed490cbc..7fb4a04546 100644
--- a/test/files/run/names-defaults.scala
+++ b/test/files/run/names-defaults.scala
@@ -86,7 +86,7 @@ object Test extends App {
def f(a: Object) = "first"
val f: String => String = a => "second"
}
- println(t5.f(new Sub1())) // firsst
+ println(t5.f(new Sub1())) // first
println(t5.f("dfklj")) // second
object t6 {
@@ -239,7 +239,7 @@ object Test extends App {
// result type of default getters: parameter type, except if this one mentions any type
// parameter, in which case the result type is inferred. examples:
- // result type of default getter is "String => String". if it were infered, the compiler
+ // result type of default getter is "String => String". if it were inferred, the compiler
// would put "Nothing => Nothing", which is useless
def transform(s: String, f: String => String = identity _) = f(s)
println(transform("my text"))
diff --git a/test/files/run/nullable-lazyvals.scala b/test/files/run/nullable-lazyvals.scala
index c201e74e75..be5d82f3a7 100644
--- a/test/files/run/nullable-lazyvals.scala
+++ b/test/files/run/nullable-lazyvals.scala
@@ -24,7 +24,7 @@ object Test extends App {
// test that try-finally does not generated a liftedTry
// helper. This would already fail the first part of the test,
- // but this check will help diganose it (if the single access to a
+ // but this check will help diagnose it (if the single access to a
// private field does not happen directly in the lazy val, it won't
// be nulled).
for (f <- foo.getClass.getDeclaredMethods) {
diff --git a/test/files/run/private-inline.flags b/test/files/run/private-inline.flags
index 00d3643fd4..c550fdce16 100644
--- a/test/files/run/private-inline.flags
+++ b/test/files/run/private-inline.flags
@@ -1 +1 @@
--optimise -Yinline-warnings
+-optimise -Yinline-warnings -Ybackend:GenASM
diff --git a/test/files/run/range.scala b/test/files/run/range.scala
index 4637ab874d..e50d0ac6a5 100644
--- a/test/files/run/range.scala
+++ b/test/files/run/range.scala
@@ -36,16 +36,19 @@ object Test {
def gr1 = NumericRange(x, x, x)
def gr2 = NumericRange.inclusive(x, x, x)
- def gr3 = NumericRange(x, x * fromInt(10), x)
- def gr4 = NumericRange.inclusive(x, x * fromInt(10), x)
- def gr5 = gr3.toList ::: negated.gr3.toList
+ def gr3 = NumericRange(x, x * fromInt(4), x * fromInt(2)) // SI-9348
+ def gr4 = NumericRange(x, x * fromInt(-2), x * fromInt(-2))
+ def gr5 = NumericRange(x, x * fromInt(10), x)
+ def gr6 = NumericRange.inclusive(x, x * fromInt(10), x)
+ def gr7 = gr3.toList ::: negated.gr3.toList
def check = {
assert(gr1.isEmpty && !gr2.isEmpty)
- assert(gr3.size == 9 && gr4.size == 10)
- assert(gr5.sum == num.zero, gr5.toString)
- assert(!(gr3 contains (x * fromInt(10))))
- assert((gr4 contains (x * fromInt(10))))
+ assert(gr3.size == 2 && gr4.size == 2)
+ assert(gr5.size == 9 && gr6.size == 10)
+ assert(gr7.sum == num.zero, gr7.toString)
+ assert(!(gr5 contains (x * fromInt(10))))
+ assert(gr6 contains (x * fromInt(10)))
}
}
@@ -55,6 +58,7 @@ object Test {
val _grs = List[GR[_]](
GR(BigDecimal(5.0)),
+ GR(BigDecimal(0.25)), // SI-9348
GR(BigInt(5)),
GR(5L),
GR(5.0d),
diff --git a/test/files/run/reify-repl-fail-gracefully.check b/test/files/run/reify-repl-fail-gracefully.check
index c9e69744d6..eac4d25869 100644
--- a/test/files/run/reify-repl-fail-gracefully.check
+++ b/test/files/run/reify-repl-fail-gracefully.check
@@ -10,8 +10,8 @@ import scala.reflect.runtime.universe._
scala>
scala> reify
-<console>:12: error: too few argument lists for macro invocation
- reify
- ^
+<console>:15: error: too few argument lists for macro invocation
+ reify
+ ^
scala> :quit
diff --git a/test/files/run/reify_newimpl_22.check b/test/files/run/reify_newimpl_22.check
index 952f384a1c..24334df92c 100644
--- a/test/files/run/reify_newimpl_22.check
+++ b/test/files/run/reify_newimpl_22.check
@@ -17,9 +17,9 @@ scala> {
}
println(code.eval)
}
-<console>:15: free term: Ident(TermName("x")) defined by res0 in <console>:14:21
- val code = reify {
- ^
+<console>:18: free term: Ident(TermName("x")) defined by res0 in <console>:17:14
+ val code = reify {
+ ^
2
scala> :quit
diff --git a/test/files/run/reify_newimpl_23.check b/test/files/run/reify_newimpl_23.check
index b7e9bfdfbc..f8379958db 100644
--- a/test/files/run/reify_newimpl_23.check
+++ b/test/files/run/reify_newimpl_23.check
@@ -16,7 +16,7 @@ scala> def foo[T]{
}
println(code.eval)
}
-<console>:13: free type: Ident(TypeName("T")) defined by foo in <console>:12:16
+<console>:16: free type: Ident(TypeName("T")) defined by foo in <console>:15:16
val code = reify {
^
foo: [T]=> Unit
diff --git a/test/files/run/reify_newimpl_25.check b/test/files/run/reify_newimpl_25.check
index 4f36ba10ee..f9a5d7b578 100644
--- a/test/files/run/reify_newimpl_25.check
+++ b/test/files/run/reify_newimpl_25.check
@@ -7,9 +7,9 @@ scala> {
val tt = implicitly[TypeTag[x.type]]
println(tt)
}
-<console>:11: free term: Ident(TermName("x")) defined by res0 in <console>:10:21
- val tt = implicitly[TypeTag[x.type]]
- ^
+<console>:14: free term: Ident(TermName("x")) defined by res0 in <console>:13:14
+ val tt = implicitly[TypeTag[x.type]]
+ ^
TypeTag[x.type]
scala> :quit
diff --git a/test/files/run/reify_newimpl_26.check b/test/files/run/reify_newimpl_26.check
index 681b862795..bd77d3d707 100644
--- a/test/files/run/reify_newimpl_26.check
+++ b/test/files/run/reify_newimpl_26.check
@@ -6,7 +6,7 @@ scala> def foo[T]{
val tt = implicitly[WeakTypeTag[List[T]]]
println(tt)
}
-<console>:9: free type: Ident(TypeName("T")) defined by foo in <console>:7:16
+<console>:12: free type: Ident(TypeName("T")) defined by foo in <console>:10:16
val tt = implicitly[WeakTypeTag[List[T]]]
^
foo: [T]=> Unit
diff --git a/test/files/run/repl-bare-expr.check b/test/files/run/repl-bare-expr.check
index 07cf23412f..38ad7e818d 100644
--- a/test/files/run/repl-bare-expr.check
+++ b/test/files/run/repl-bare-expr.check
@@ -2,33 +2,33 @@ Type in expressions to have them evaluated.
Type :help for more information.
scala> 2 ; 3
-<console>:7: warning: a pure expression does nothing in statement position; you may be omitting necessary parentheses
- 2 ;;
- ^
+<console>:10: warning: a pure expression does nothing in statement position; you may be omitting necessary parentheses
+ 2 ;;
+ ^
res0: Int = 3
scala> { 2 ; 3 }
-<console>:8: warning: a pure expression does nothing in statement position; you may be omitting necessary parentheses
- { 2 ; 3 }
- ^
+<console>:11: warning: a pure expression does nothing in statement position; you may be omitting necessary parentheses
+ { 2 ; 3 }
+ ^
res1: Int = 3
scala> 5 ; 10 ; case object Cow ; 20 ; class Moo { override def toString = "Moooooo" } ; 30 ; def bippy = {
1 +
2 +
3 } ; bippy+88+11
-<console>:7: warning: a pure expression does nothing in statement position; you may be omitting necessary parentheses
- 5 ; 10 ; case object Cow ; 20 ; class Moo { override def toString = "Moooooo" } ; 30 ; def bippy = {
- ^
-<console>:7: warning: a pure expression does nothing in statement position; you may be omitting necessary parentheses
- 5 ; 10 ; case object Cow ; 20 ; class Moo { override def toString = "Moooooo" } ; 30 ; def bippy = {
- ^
-<console>:7: warning: a pure expression does nothing in statement position; you may be omitting necessary parentheses
- 5 ; 10 ; case object Cow ; 20 ; class Moo { override def toString = "Moooooo" } ; 30 ; def bippy = {
- ^
-<console>:7: warning: a pure expression does nothing in statement position; you may be omitting necessary parentheses
- 5 ; 10 ; case object Cow ; 20 ; class Moo { override def toString = "Moooooo" } ; 30 ; def bippy = {
- ^
+<console>:10: warning: a pure expression does nothing in statement position; you may be omitting necessary parentheses
+ 5 ; 10 ; case object Cow ; 20 ; class Moo { override def toString = "Moooooo" } ; 30 ; def bippy = {
+ ^
+<console>:10: warning: a pure expression does nothing in statement position; you may be omitting necessary parentheses
+ 5 ; 10 ; case object Cow ; 20 ; class Moo { override def toString = "Moooooo" } ; 30 ; def bippy = {
+ ^
+<console>:10: warning: a pure expression does nothing in statement position; you may be omitting necessary parentheses
+ 5 ; 10 ; case object Cow ; 20 ; class Moo { override def toString = "Moooooo" } ; 30 ; def bippy = {
+ ^
+<console>:10: warning: a pure expression does nothing in statement position; you may be omitting necessary parentheses
+ 5 ; 10 ; case object Cow ; 20 ; class Moo { override def toString = "Moooooo" } ; 30 ; def bippy = {
+ ^
defined object Cow
defined class Moo
bippy: Int
diff --git a/test/files/run/repl-colon-type.check b/test/files/run/repl-colon-type.check
index 9898027c1d..fa33af3beb 100644
--- a/test/files/run/repl-colon-type.check
+++ b/test/files/run/repl-colon-type.check
@@ -3,8 +3,8 @@ Type :help for more information.
scala> :type List[1, 2, 3]
<console>:1: error: identifier expected but integer literal found.
- List[1, 2, 3]
- ^
+List[1, 2, 3]
+ ^
scala> :type List(1, 2, 3)
List[Int]
diff --git a/test/files/run/repl-parens.check b/test/files/run/repl-parens.check
index 74d15ff93c..756a063b68 100644
--- a/test/files/run/repl-parens.check
+++ b/test/files/run/repl-parens.check
@@ -20,12 +20,12 @@ scala> ( (2 + 2 ) )
res5: Int = 4
scala> 5 ; ( (2 + 2 ) ) ; ((5))
-<console>:7: warning: a pure expression does nothing in statement position; you may be omitting necessary parentheses
- 5 ; ( (2 + 2 ) ) ;;
- ^
-<console>:7: warning: a pure expression does nothing in statement position; you may be omitting necessary parentheses
- 5 ; ( (2 + 2 ) ) ;;
- ^
+<console>:10: warning: a pure expression does nothing in statement position; you may be omitting necessary parentheses
+ 5 ; ( (2 + 2 ) ) ;;
+ ^
+<console>:10: warning: a pure expression does nothing in statement position; you may be omitting necessary parentheses
+ 5 ; ( (2 + 2 ) ) ;;
+ ^
res6: Int = 5
scala> (((2 + 2)), ((2 + 2)))
@@ -40,18 +40,18 @@ res9: String = 4423
scala>
scala> 55 ; ((2 + 2)) ; (1, 2, 3)
-<console>:7: warning: a pure expression does nothing in statement position; you may be omitting necessary parentheses
- 55 ; ((2 + 2)) ;;
- ^
-<console>:7: warning: a pure expression does nothing in statement position; you may be omitting necessary parentheses
- 55 ; ((2 + 2)) ;;
- ^
+<console>:10: warning: a pure expression does nothing in statement position; you may be omitting necessary parentheses
+ 55 ; ((2 + 2)) ;;
+ ^
+<console>:10: warning: a pure expression does nothing in statement position; you may be omitting necessary parentheses
+ 55 ; ((2 + 2)) ;;
+ ^
res10: (Int, Int, Int) = (1,2,3)
scala> 55 ; (x: Int) => x + 1 ; () => ((5))
-<console>:7: warning: a pure expression does nothing in statement position; you may be omitting necessary parentheses
- 55 ; (x: Int) => x + 1 ;;
- ^
+<console>:10: warning: a pure expression does nothing in statement position; you may be omitting necessary parentheses
+ 55 ; (x: Int) => x + 1 ;;
+ ^
res11: () => Int = <function0>
scala>
@@ -60,9 +60,9 @@ scala> () => 5
res12: () => Int = <function0>
scala> 55 ; () => 5
-<console>:7: warning: a pure expression does nothing in statement position; you may be omitting necessary parentheses
- 55 ;;
- ^
+<console>:10: warning: a pure expression does nothing in statement position; you may be omitting necessary parentheses
+ 55 ;;
+ ^
res13: () => Int = <function0>
scala> () => { class X ; new X }
diff --git a/test/files/run/repl-paste-2.check b/test/files/run/repl-paste-2.check
index 6ea8e2f419..bc80615107 100644
--- a/test/files/run/repl-paste-2.check
+++ b/test/files/run/repl-paste-2.check
@@ -44,7 +44,7 @@ scala> res5 + res6
res1: Int = 690
scala> val x = dingus
-<console>:7: error: not found: value dingus
+<console>:10: error: not found: value dingus
val x = dingus
^
diff --git a/test/files/run/repl-reset.check b/test/files/run/repl-reset.check
index cd7893bbc3..a2d88fd445 100644
--- a/test/files/run/repl-reset.check
+++ b/test/files/run/repl-reset.check
@@ -30,23 +30,23 @@ Forgetting all expression results and named terms: $intp, BippyBungus, x1, x2, x
Forgetting defined types: BippyBungus
scala> x1 + x2 + x3
-<console>:8: error: not found: value x1
- x1 + x2 + x3
- ^
-<console>:8: error: not found: value x2
- x1 + x2 + x3
- ^
-<console>:8: error: not found: value x3
- x1 + x2 + x3
- ^
+<console>:11: error: not found: value x1
+ x1 + x2 + x3
+ ^
+<console>:11: error: not found: value x2
+ x1 + x2 + x3
+ ^
+<console>:11: error: not found: value x3
+ x1 + x2 + x3
+ ^
scala> val x1 = 4
x1: Int = 4
scala> new BippyBungus
-<console>:8: error: not found: type BippyBungus
- new BippyBungus
- ^
+<console>:11: error: not found: type BippyBungus
+ new BippyBungus
+ ^
scala> class BippyBungus() { def f = 5 }
defined class BippyBungus
diff --git a/test/files/run/repl-serialization.check b/test/files/run/repl-serialization.check
new file mode 100644
index 0000000000..eb62729f5c
--- /dev/null
+++ b/test/files/run/repl-serialization.check
@@ -0,0 +1,25 @@
+== evaluating lines
+extract: AnyRef => Unit = <function1>
+ evaluating x
+x: Int = 0
+getX: ()Int
+defined class U
+y: Int = <lazy>
+ evaluating z
+ evaluating zz
+defined class D
+z: Int = 0
+zz: Int = 0
+defined object O
+defined class A
+defined type alias AA
+constructing U
+u: U = U
+== evaluating lambda
+ evaluating y
+ evaluating O
+ constructing A
+== reconstituting into a fresh classloader
+ evaluating O
+== evaluating reconstituted lambda
+ constructing A
diff --git a/test/files/run/repl-serialization.scala b/test/files/run/repl-serialization.scala
new file mode 100644
index 0000000000..55b7519631
--- /dev/null
+++ b/test/files/run/repl-serialization.scala
@@ -0,0 +1,68 @@
+import java.io._
+
+import scala.reflect.io.AbstractFile
+import scala.tools.nsc.Settings
+import scala.tools.nsc.interpreter.IMain
+import scala.tools.nsc.util._
+import scala.reflect.internal.util.AbstractFileClassLoader
+
+object Test {
+ def main(args: Array[String]) {
+ run()
+ }
+
+ def run(): Unit = {
+ val settings = new Settings()
+ settings.Yreplclassbased.value = true
+ settings.usejavacp.value = true
+
+ var imain: IMain = null
+ object extract extends ((AnyRef) => Unit) with Serializable {
+ var value: AnyRef = null
+
+ def apply(a: AnyRef) = value = a
+ }
+
+ val code =
+ """val x = {println(" evaluating x"); 0 }
+ |def getX() = x
+ |class U extends Serializable { println("constructing U"); val x = 0 ; override def toString = "U" }
+ |lazy val y = {println(" evaluating y"); 0 }
+ |class D; val z = {println(" evaluating z"); 0}; val zz = {println(" evaluating zz"); 0}
+ |object O extends Serializable { val apply = {println(" evaluating O"); 0} }
+ |class A(i: Int) { println(" constructing A") }
+ |type AA = A
+ |val u = new U()
+ |extract(() => new AA(x + getX() + y + z + zz + O.apply + u.x))
+ """.stripMargin
+
+ imain = new IMain(settings)
+ println("== evaluating lines")
+ imain.directBind("extract", "(AnyRef => Unit)", extract)
+ code.lines.foreach(imain.interpret)
+
+ val virtualFile: AbstractFile = extract.value.getClass.getClassLoader.asInstanceOf[AbstractFileClassLoader].root
+ val newLoader = new AbstractFileClassLoader(virtualFile, getClass.getClassLoader)
+
+ def deserializeInNewLoader(string: Array[Byte]): AnyRef = {
+ val bis = new ByteArrayInputStream(string)
+ val in = new ObjectInputStream(bis) {
+ override def resolveClass(desc: ObjectStreamClass) = Class.forName(desc.getName, false, newLoader)
+ }
+ in.readObject()
+ }
+ def serialize(o: AnyRef): Array[Byte] = {
+ val bos = new ByteArrayOutputStream()
+ val out = new ObjectOutputStream(bos)
+ out.writeObject(o)
+ out.close()
+ bos.toByteArray
+ }
+ println("== evaluating lambda")
+ extract.value.asInstanceOf[() => Any].apply()
+ println("== reconstituting into a fresh classloader")
+ val reconstituted = deserializeInNewLoader(serialize(extract.value)).asInstanceOf[() => Any]
+ println("== evaluating reconstituted lambda")
+ reconstituted.apply() // should not print("evaluating x") a second time
+ }
+}
diff --git a/test/files/run/repl-trim-stack-trace.scala b/test/files/run/repl-trim-stack-trace.scala
index a53ce3b3e4..b8c1668691 100644
--- a/test/files/run/repl-trim-stack-trace.scala
+++ b/test/files/run/repl-trim-stack-trace.scala
@@ -13,7 +13,7 @@ f: Nothing
scala> f
java.lang.Exception: Uh-oh
- at .f(<console>:7)
+ at .f(<console>:10)
... 69 elided
scala> def f = throw new Exception("")
@@ -21,7 +21,7 @@ f: Nothing
scala> f
java.lang.Exception:
- at .f(<console>:7)
+ at .f(<console>:10)
... 69 elided
scala> def f = throw new Exception
@@ -29,7 +29,7 @@ f: Nothing
scala> f
java.lang.Exception
- at .f(<console>:7)
+ at .f(<console>:10)
... 69 elided
scala> :quit"""
diff --git a/test/files/run/synchronized.check b/test/files/run/synchronized.check
index 9add05ea0c..dd9f4ef424 100644
--- a/test/files/run/synchronized.check
+++ b/test/files/run/synchronized.check
@@ -1,8 +1,3 @@
-#partest !-Ybackend:GenBCode
-warning: there were 14 inliner warnings; re-run with -Yinline-warnings for details
-#partest -Ybackend:GenBCode
-warning: there were 14 inliner warnings; re-run with -Yopt-warnings for details
-#partest
.|. c1.f1: OK
.|. c1.fi: OK
.|... c1.fv: OK
diff --git a/test/files/run/synchronized.scala b/test/files/run/synchronized.scala
index 1f0e32992b..077e9d02e8 100644
--- a/test/files/run/synchronized.scala
+++ b/test/files/run/synchronized.scala
@@ -1,3 +1,6 @@
+/*
+ * filter: inliner warnings; re-run with
+ */
import java.lang.Thread.holdsLock
import scala.collection.mutable.StringBuilder
diff --git a/test/files/run/t0631.scala b/test/files/run/t0631.scala
index c401ed31cb..8d672574ec 100644
--- a/test/files/run/t0631.scala
+++ b/test/files/run/t0631.scala
@@ -11,6 +11,6 @@ object Test extends App {
case class Bar(x: Foo)
val b = new Bar(new Foo)
- // this should not call Foo.equals, but simply compare object identiy of b
+ // this should not call Foo.equals, but simply compare object identity of b
println(b == b)
}
diff --git a/test/files/run/t2106.check b/test/files/run/t2106.check
index f8f625ff46..66a0e707b3 100644
--- a/test/files/run/t2106.check
+++ b/test/files/run/t2106.check
@@ -1,3 +1,10 @@
+#partest -Ybackend:GenBCode
+t2106.scala:7: warning: A::foo()Ljava/lang/Object; is annotated @inline but could not be inlined:
+The callee A::foo()Ljava/lang/Object; contains the instruction INVOKEVIRTUAL java/lang/Object.clone ()Ljava/lang/Object;
+that would cause an IllegalAccessError when inlined into class Test$.
+ def main(args: Array[String]): Unit = x.foo
+ ^
+#partest !-Ybackend:GenBCode
t2106.scala:7: warning: Could not inline required method foo because access level required by callee not matched by caller.
def main(args: Array[String]): Unit = x.foo
^
diff --git a/test/files/run/t2106.flags b/test/files/run/t2106.flags
index 00d3643fd4..a2e413bb22 100644
--- a/test/files/run/t2106.flags
+++ b/test/files/run/t2106.flags
@@ -1 +1 @@
--optimise -Yinline-warnings
+-optimise -Yinline-warnings -Yopt:l:classpath
diff --git a/test/files/run/t2526.scala b/test/files/run/t2526.scala
index 53f3059135..9f3c48ec61 100644
--- a/test/files/run/t2526.scala
+++ b/test/files/run/t2526.scala
@@ -38,7 +38,7 @@ object Test {
/*
* Checks foreach of `actual` goes over all the elements in `expected`
- * We duplicate the method above because there is no common inteface between Traversable and
+ * We duplicate the method above because there is no common interface between Traversable and
* Iterator and we want to avoid converting between collections to ensure that we test what
* we mean to test.
*/
diff --git a/test/files/run/t4542.check b/test/files/run/t4542.check
index f7716dc2f0..f7aad3deb2 100644
--- a/test/files/run/t4542.check
+++ b/test/files/run/t4542.check
@@ -7,7 +7,7 @@ scala> @deprecated("foooo", "ReplTest version 1.0-FINAL") class Foo() {
defined class Foo
scala> val f = new Foo
-<console>:8: warning: class Foo is deprecated: foooo
+<console>:11: warning: class Foo is deprecated: foooo
val f = new Foo
^
f: Foo = Bippy
diff --git a/test/files/run/t4594-repl-settings.scala b/test/files/run/t4594-repl-settings.scala
index db5dc19866..1b883983cf 100644
--- a/test/files/run/t4594-repl-settings.scala
+++ b/test/files/run/t4594-repl-settings.scala
@@ -17,7 +17,7 @@ object Test extends SessionTest {
|scala> :settings -deprecation
|
|scala> def b = depp
- |<console>:8: warning: method depp is deprecated: Please don't do that.
+ |<console>:11: warning: method depp is deprecated: Please don't do that.
| def b = depp
| ^
|b: String
diff --git a/test/files/run/t5655.check b/test/files/run/t5655.check
index 4bbc54b641..e8375c3e90 100644
--- a/test/files/run/t5655.check
+++ b/test/files/run/t5655.check
@@ -8,19 +8,19 @@ scala> import x._
import x._
scala> x
-<console>:12: error: reference to x is ambiguous;
+<console>:15: error: reference to x is ambiguous;
it is imported twice in the same scope by
import x._
and import x
- x
- ^
+ x
+ ^
scala> x
-<console>:12: error: reference to x is ambiguous;
+<console>:15: error: reference to x is ambiguous;
it is imported twice in the same scope by
import x._
and import x
- x
- ^
+ x
+ ^
scala> :quit
diff --git a/test/files/run/t6102.check b/test/files/run/t6102.check
index aa3e6cc9e2..07378f5ed4 100644
--- a/test/files/run/t6102.check
+++ b/test/files/run/t6102.check
@@ -28,5 +28,10 @@
[running phase constopt on t6102.scala]
#partest
[running phase dce on t6102.scala]
+#partest !-Ybackend:GenBCode
[running phase jvm on icode]
+#partest -Ybackend:GenBCode
+[running phase jvm on t6102.scala]
+[running phase jvm on t6102.scala]
+#partest
hello
diff --git a/test/files/run/t6240-universe-code-gen.scala b/test/files/run/t6240-universe-code-gen.scala
index 9f7061ee1b..60e1f76b54 100644
--- a/test/files/run/t6240-universe-code-gen.scala
+++ b/test/files/run/t6240-universe-code-gen.scala
@@ -13,8 +13,8 @@ object Test extends App {
(sym.isMethod && sym.asMethod.isLazy)
|| sym.isModule
)
- val forcables = tp.members.sorted.filter(isLazyAccessorOrObject)
- forcables.map {
+ val forceables = tp.members.sorted.filter(isLazyAccessorOrObject)
+ forceables.map {
sym =>
val path = s"$prefix.${sym.name}"
" " + (
diff --git a/test/files/run/t6502.scala b/test/files/run/t6502.scala
index 52fabef6b8..d6b15a0189 100644
--- a/test/files/run/t6502.scala
+++ b/test/files/run/t6502.scala
@@ -123,7 +123,7 @@ object Test extends StoreReporterDirectTest {
}
def test6(): Unit = {
- // Avoid java.lang.NoClassDefFoundError triggered by the old appoach of using a Java
+ // Avoid java.lang.NoClassDefFoundError triggered by the old approach of using a Java
// classloader to parse .class files in order to read their names.
val jar = "test6.jar"
compileCode(app6, jar)
diff --git a/test/files/run/t7319.check b/test/files/run/t7319.check
index e35cfc90c0..885136b432 100644
--- a/test/files/run/t7319.check
+++ b/test/files/run/t7319.check
@@ -17,25 +17,25 @@ warning: there was one feature warning; re-run with -feature for details
convert: [F[X <: F[X]]](builder: F[_ <: F[_]])Int
scala> convert(Some[Int](0))
-<console>:12: error: no type parameters for method convert: (builder: F[_ <: F[_]])Int exist so that it can be applied to arguments (Some[Int])
+<console>:15: error: no type parameters for method convert: (builder: F[_ <: F[_]])Int exist so that it can be applied to arguments (Some[Int])
--- because ---
argument expression's type is not compatible with formal parameter type;
found : Some[Int]
required: ?F[_$1] forSome { type _$1 <: ?F[_$2] forSome { type _$2 } }
- convert(Some[Int](0))
- ^
-<console>:12: error: type mismatch;
+ convert(Some[Int](0))
+ ^
+<console>:15: error: type mismatch;
found : Some[Int]
required: F[_ <: F[_]]
- convert(Some[Int](0))
- ^
+ convert(Some[Int](0))
+ ^
scala> Range(1,2).toArray: Seq[_]
-<console>:11: error: polymorphic expression cannot be instantiated to expected type;
+<console>:14: error: polymorphic expression cannot be instantiated to expected type;
found : [B >: Int]Array[B]
required: Seq[_]
- Range(1,2).toArray: Seq[_]
- ^
+ Range(1,2).toArray: Seq[_]
+ ^
scala> 0
res2: Int = 0
diff --git a/test/files/run/t7582.check b/test/files/run/t7582.check
index 2a11210000..0cfbf08886 100644
--- a/test/files/run/t7582.check
+++ b/test/files/run/t7582.check
@@ -1,6 +1 @@
-#partest !-Ybackend:GenBCode
-warning: there was one inliner warning; re-run with -Yinline-warnings for details
-#partest -Ybackend:GenBCode
-warning: there was one inliner warning; re-run with -Yopt-warnings for details
-#partest
2
diff --git a/test/files/run/t7582/InlineHolder.scala b/test/files/run/t7582/InlineHolder.scala
index a18b9effaa..3cbf233ce1 100644
--- a/test/files/run/t7582/InlineHolder.scala
+++ b/test/files/run/t7582/InlineHolder.scala
@@ -1,3 +1,6 @@
+/*
+ * filter: inliner warning; re-run with
+ */
package p1 {
object InlineHolder {
@inline def inlinable = p1.PackageProtectedJava.protectedMethod() + 1
diff --git a/test/files/run/t7582b.check b/test/files/run/t7582b.check
index 2a11210000..0cfbf08886 100644
--- a/test/files/run/t7582b.check
+++ b/test/files/run/t7582b.check
@@ -1,6 +1 @@
-#partest !-Ybackend:GenBCode
-warning: there was one inliner warning; re-run with -Yinline-warnings for details
-#partest -Ybackend:GenBCode
-warning: there was one inliner warning; re-run with -Yopt-warnings for details
-#partest
2
diff --git a/test/files/run/t7582b/InlineHolder.scala b/test/files/run/t7582b/InlineHolder.scala
index a18b9effaa..3cbf233ce1 100644
--- a/test/files/run/t7582b/InlineHolder.scala
+++ b/test/files/run/t7582b/InlineHolder.scala
@@ -1,3 +1,6 @@
+/*
+ * filter: inliner warning; re-run with
+ */
package p1 {
object InlineHolder {
@inline def inlinable = p1.PackageProtectedJava.protectedMethod() + 1
diff --git a/test/files/run/t7747-repl.check b/test/files/run/t7747-repl.check
index 105b238d01..98e3d3b821 100644
--- a/test/files/run/t7747-repl.check
+++ b/test/files/run/t7747-repl.check
@@ -17,33 +17,33 @@ scala> val z = x * y
z: Int = 156
scala> 2 ; 3
-<console>:7: warning: a pure expression does nothing in statement position; you may be omitting necessary parentheses
- 2 ;;
- ^
+<console>:10: warning: a pure expression does nothing in statement position; you may be omitting necessary parentheses
+ 2 ;;
+ ^
res0: Int = 3
scala> { 2 ; 3 }
-<console>:8: warning: a pure expression does nothing in statement position; you may be omitting necessary parentheses
- { 2 ; 3 }
- ^
+<console>:11: warning: a pure expression does nothing in statement position; you may be omitting necessary parentheses
+ { 2 ; 3 }
+ ^
res1: Int = 3
scala> 5 ; 10 ; case object Cow ; 20 ; class Moo { override def toString = "Moooooo" } ; 30 ; def bippy = {
1 +
2 +
3 } ; bippy+88+11
-<console>:7: warning: a pure expression does nothing in statement position; you may be omitting necessary parentheses
- 5 ; 10 ; case object Cow ; 20 ; class Moo { override def toString = "Moooooo" } ; 30 ; def bippy = {
- ^
-<console>:7: warning: a pure expression does nothing in statement position; you may be omitting necessary parentheses
- 5 ; 10 ; case object Cow ; 20 ; class Moo { override def toString = "Moooooo" } ; 30 ; def bippy = {
- ^
-<console>:7: warning: a pure expression does nothing in statement position; you may be omitting necessary parentheses
- 5 ; 10 ; case object Cow ; 20 ; class Moo { override def toString = "Moooooo" } ; 30 ; def bippy = {
- ^
-<console>:7: warning: a pure expression does nothing in statement position; you may be omitting necessary parentheses
- 5 ; 10 ; case object Cow ; 20 ; class Moo { override def toString = "Moooooo" } ; 30 ; def bippy = {
- ^
+<console>:10: warning: a pure expression does nothing in statement position; you may be omitting necessary parentheses
+ 5 ; 10 ; case object Cow ; 20 ; class Moo { override def toString = "Moooooo" } ; 30 ; def bippy = {
+ ^
+<console>:10: warning: a pure expression does nothing in statement position; you may be omitting necessary parentheses
+ 5 ; 10 ; case object Cow ; 20 ; class Moo { override def toString = "Moooooo" } ; 30 ; def bippy = {
+ ^
+<console>:10: warning: a pure expression does nothing in statement position; you may be omitting necessary parentheses
+ 5 ; 10 ; case object Cow ; 20 ; class Moo { override def toString = "Moooooo" } ; 30 ; def bippy = {
+ ^
+<console>:10: warning: a pure expression does nothing in statement position; you may be omitting necessary parentheses
+ 5 ; 10 ; case object Cow ; 20 ; class Moo { override def toString = "Moooooo" } ; 30 ; def bippy = {
+ ^
defined object Cow
defined class Moo
bippy: Int
@@ -83,12 +83,12 @@ scala> ( (2 + 2 ) )
res10: Int = 4
scala> 5 ; ( (2 + 2 ) ) ; ((5))
-<console>:7: warning: a pure expression does nothing in statement position; you may be omitting necessary parentheses
- 5 ; ( (2 + 2 ) ) ;;
- ^
-<console>:7: warning: a pure expression does nothing in statement position; you may be omitting necessary parentheses
- 5 ; ( (2 + 2 ) ) ;;
- ^
+<console>:10: warning: a pure expression does nothing in statement position; you may be omitting necessary parentheses
+ 5 ; ( (2 + 2 ) ) ;;
+ ^
+<console>:10: warning: a pure expression does nothing in statement position; you may be omitting necessary parentheses
+ 5 ; ( (2 + 2 ) ) ;;
+ ^
res11: Int = 5
scala> (((2 + 2)), ((2 + 2)))
@@ -103,18 +103,18 @@ res14: String = 4423
scala>
scala> 55 ; ((2 + 2)) ; (1, 2, 3)
-<console>:7: warning: a pure expression does nothing in statement position; you may be omitting necessary parentheses
- 55 ; ((2 + 2)) ;;
- ^
-<console>:7: warning: a pure expression does nothing in statement position; you may be omitting necessary parentheses
- 55 ; ((2 + 2)) ;;
- ^
+<console>:10: warning: a pure expression does nothing in statement position; you may be omitting necessary parentheses
+ 55 ; ((2 + 2)) ;;
+ ^
+<console>:10: warning: a pure expression does nothing in statement position; you may be omitting necessary parentheses
+ 55 ; ((2 + 2)) ;;
+ ^
res15: (Int, Int, Int) = (1,2,3)
scala> 55 ; (x: Int) => x + 1 ; () => ((5))
-<console>:8: warning: a pure expression does nothing in statement position; you may be omitting necessary parentheses
- 55 ; (x: Int) => x + 1 ;;
- ^
+<console>:12: warning: a pure expression does nothing in statement position; you may be omitting necessary parentheses
+ 55 ; (x: Int) => x + 1 ;;
+ ^
res16: () => Int = <function0>
scala>
@@ -123,9 +123,9 @@ scala> () => 5
res17: () => Int = <function0>
scala> 55 ; () => 5
-<console>:7: warning: a pure expression does nothing in statement position; you may be omitting necessary parentheses
- 55 ;;
- ^
+<console>:10: warning: a pure expression does nothing in statement position; you may be omitting necessary parentheses
+ 55 ;;
+ ^
res18: () => Int = <function0>
scala> () => { class X ; new X }
@@ -211,23 +211,23 @@ Forgetting all expression results and named terms: $intp, BippyBungus, Bovine, C
Forgetting defined types: BippyBungus, Moo, Ruminant
scala> x1 + x2 + x3
-<console>:8: error: not found: value x1
- x1 + x2 + x3
- ^
-<console>:8: error: not found: value x2
- x1 + x2 + x3
- ^
-<console>:8: error: not found: value x3
- x1 + x2 + x3
- ^
+<console>:11: error: not found: value x1
+ x1 + x2 + x3
+ ^
+<console>:11: error: not found: value x2
+ x1 + x2 + x3
+ ^
+<console>:11: error: not found: value x3
+ x1 + x2 + x3
+ ^
scala> val x1 = 4
x1: Int = 4
scala> new BippyBungus
-<console>:8: error: not found: type BippyBungus
- new BippyBungus
- ^
+<console>:11: error: not found: type BippyBungus
+ new BippyBungus
+ ^
scala> class BippyBungus() { def f = 5 }
defined class BippyBungus
@@ -258,12 +258,12 @@ class $read extends Serializable {
super.<init>;
()
};
- import $line44.$read.$iw.$iw.BippyBups;
- import $line44.$read.$iw.$iw.BippyBups;
- import $line45.$read.$iw.$iw.PuppyPups;
- import $line45.$read.$iw.$iw.PuppyPups;
- import $line46.$read.$iw.$iw.Bingo;
- import $line46.$read.$iw.$iw.Bingo;
+ import $line44.$read.INSTANCE.$iw.$iw.BippyBups;
+ import $line44.$read.INSTANCE.$iw.$iw.BippyBups;
+ import $line45.$read.INSTANCE.$iw.$iw.PuppyPups;
+ import $line45.$read.INSTANCE.$iw.$iw.PuppyPups;
+ import $line46.$read.INSTANCE.$iw.$iw.Bingo;
+ import $line46.$read.INSTANCE.$iw.$iw.Bingo;
class $iw extends Serializable {
def <init>() = {
super.<init>;
@@ -275,12 +275,35 @@ class $read extends Serializable {
};
val $iw = new $iw.<init>
}
-object $read extends $read {
+object $read extends scala.AnyRef {
def <init>() = {
super.<init>;
()
- }
+ };
+ val INSTANCE = new $read.<init>
}
res3: List[Product with Serializable] = List(BippyBups(), PuppyPups(), Bingo())
+scala> case class Sum(exp: String, exp2: String)
+defined class Sum
+
+scala> val a = Sum("A", "B")
+a: Sum = Sum(A,B)
+
+scala> def b(a: Sum): String = a match { case Sum(_, _) => "Found Sum" }
+b: (a: Sum)String
+
+scala> b(a)
+res4: String = Found Sum
+
+scala> :power
+** Power User mode enabled - BEEP WHIR GYVE **
+** :phase has been set to 'typer'. **
+** scala.tools.nsc._ has been imported **
+** global._, definitions._ also imported **
+** Try :help, :vals, power.<tab> **
+
+scala> intp.lastRequest
+res5: $r.intp.Request = Request(line=def $ires3 = intp.global, 1 trees)
+
scala> :quit
diff --git a/test/files/run/t7747-repl.scala b/test/files/run/t7747-repl.scala
index 0e64210460..141c2d9844 100644
--- a/test/files/run/t7747-repl.scala
+++ b/test/files/run/t7747-repl.scala
@@ -65,5 +65,11 @@ object Test extends ReplTest {
|case class PuppyPups()
|case class Bingo()
|List(BippyBups(), PuppyPups(), Bingo()) // show
+ |case class Sum(exp: String, exp2: String)
+ |val a = Sum("A", "B")
+ |def b(a: Sum): String = a match { case Sum(_, _) => "Found Sum" }
+ |b(a)
+ |:power
+ |intp.lastRequest
|""".stripMargin
}
diff --git a/test/files/run/t7817-tree-gen.scala b/test/files/run/t7817-tree-gen.scala
index a8317fda6e..094c0d6289 100644
--- a/test/files/run/t7817-tree-gen.scala
+++ b/test/files/run/t7817-tree-gen.scala
@@ -1,6 +1,6 @@
import scala.tools.partest._
-// Testing that `mkAttributedRef` doesn't incude the package object test.`package`,
+// Testing that `mkAttributedRef` doesn't include the package object test.`package`,
// under joint and separate compilation.
package testSep { class C { object O } }
diff --git a/test/files/run/t8601-closure-elim.flags b/test/files/run/t8601-closure-elim.flags
index 2b5fd8a7b2..9158076b71 100644
--- a/test/files/run/t8601-closure-elim.flags
+++ b/test/files/run/t8601-closure-elim.flags
@@ -1 +1 @@
--optimize -Ydelambdafy:inline
+-optimize -Ydelambdafy:inline -Ybackend:GenASM
diff --git a/test/files/run/t8601-closure-elim.scala b/test/files/run/t8601-closure-elim.scala
index 2c5b03af77..ebeb16e0c7 100644
--- a/test/files/run/t8601-closure-elim.scala
+++ b/test/files/run/t8601-closure-elim.scala
@@ -11,7 +11,7 @@ object Test extends BytecodeTest {
val classNode = loadClassNode("Foo")
val methodNode = getMethod(classNode, "b")
val ops = methodNode.instructions.iterator.asScala.map(_.getOpcode).toList
- assert(!ops.contains(asm.Opcodes.NEW), ops)// should be allocation free if the closure is eliminiated
+ assert(!ops.contains(asm.Opcodes.NEW), ops)// should be allocation free if the closure is eliminated
}
test("b")
}
diff --git a/test/files/run/t8708_b/Test_2.scala b/test/files/run/t8708_b/Test_2.scala
index c978490609..fae3c677ec 100644
--- a/test/files/run/t8708_b/Test_2.scala
+++ b/test/files/run/t8708_b/Test_2.scala
@@ -13,7 +13,7 @@ object Test extends DirectTest {
val c = g.rootMirror.getRequiredClass("p.C")
println(c.info.decls)
val t = c.info.member(g.newTypeName("T"))
- // this test ensrues that the <local child> dummy class symbol is not entered in the
+ // this test ensures that the <local child> dummy class symbol is not entered in the
// scope of trait T during unpickling.
println(t.info.decls)
})
diff --git a/test/files/run/t8918-unary-ids.scala b/test/files/run/t8918-unary-ids.scala
index 1f29abe464..3aa990f72c 100644
--- a/test/files/run/t8918-unary-ids.scala
+++ b/test/files/run/t8918-unary-ids.scala
@@ -19,13 +19,13 @@ res0: Int = -42
scala> - if (true) 1 else 2
<console>:1: error: illegal start of simple expression
- - if (true) 1 else 2
- ^
+- if (true) 1 else 2
+ ^
scala> - - 1
<console>:1: error: ';' expected but integer literal found.
- - - 1
- ^
+- - 1
+ ^
scala> -.-(1)
res1: Int = 41
diff --git a/test/files/run/t9170.scala b/test/files/run/t9170.scala
index 25a0e84581..67a58d6803 100644
--- a/test/files/run/t9170.scala
+++ b/test/files/run/t9170.scala
@@ -10,17 +10,17 @@ object Test extends SessionTest {
Type :help for more information.
scala> object Y { def f[A](a: => A) = 1 ; def f[A](a: => Either[Exception, A]) = 2 }
-<console>:7: error: double definition:
-def f[A](a: => A): Int at line 7 and
-def f[A](a: => Either[Exception,A]): Int at line 7
+<console>:10: error: double definition:
+def f[A](a: => A): Int at line 10 and
+def f[A](a: => Either[Exception,A]): Int at line 10
have same type after erasure: (a: Function0)Int
object Y { def f[A](a: => A) = 1 ; def f[A](a: => Either[Exception, A]) = 2 }
^
scala> object Y { def f[A](a: => A) = 1 ; def f[A](a: => Either[Exception, A]) = 2 }
-<console>:7: error: double definition:
-def f[A](a: => A): Int at line 7 and
-def f[A](a: => Either[Exception,A]): Int at line 7
+<console>:10: error: double definition:
+def f[A](a: => A): Int at line 10 and
+def f[A](a: => Either[Exception,A]): Int at line 10
have same type after erasure: (a: Function0)Int
object Y { def f[A](a: => A) = 1 ; def f[A](a: => Either[Exception, A]) = 2 }
^
@@ -29,9 +29,9 @@ scala> object Y {
| def f[A](a: => A) = 1
| def f[A](a: => Either[Exception, A]) = 2
| }
-<console>:9: error: double definition:
-def f[A](a: => A): Int at line 8 and
-def f[A](a: => Either[Exception,A]): Int at line 9
+<console>:12: error: double definition:
+def f[A](a: => A): Int at line 11 and
+def f[A](a: => Either[Exception,A]): Int at line 12
have same type after erasure: (a: Function0)Int
def f[A](a: => Either[Exception, A]) = 2
^
@@ -46,9 +46,9 @@ object Y {
// Exiting paste mode, now interpreting.
-<console>:9: error: double definition:
-def f[A](a: => A): Int at line 8 and
-def f[A](a: => Either[Exception,A]): Int at line 9
+<console>:12: error: double definition:
+def f[A](a: => A): Int at line 11 and
+def f[A](a: => Either[Exception,A]): Int at line 12
have same type after erasure: (a: Function0)Int
def f[A](a: => Either[Exception, A]) = 2
^
diff --git a/test/files/run/t9206.scala b/test/files/run/t9206.scala
new file mode 100644
index 0000000000..2942d0f73e
--- /dev/null
+++ b/test/files/run/t9206.scala
@@ -0,0 +1,39 @@
+
+import scala.tools.partest.SessionTest
+
+object Test extends SessionTest {
+ //override def prompt = "XXX> "
+//Welcome to Scala version 2.11.6 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_40).
+ def session =
+ s"""|Type in expressions to have them evaluated.
+ |Type :help for more information.
+ |
+ |scala> val i: Int = "foo"
+ |<console>:10: error: type mismatch;
+ | found : String("foo")
+ | required: Int
+ | val i: Int = "foo"
+ | ^
+ |
+ |scala> { val j = 42 ; val i: Int = "foo" + j }
+ |<console>:11: error: type mismatch;
+ | found : String
+ | required: Int
+ | { val j = 42 ; val i: Int = "foo" + j }
+ | ^
+ |
+ |scala> :quit"""
+ /*
+ |XXX> XXX> def f = 42
+ |
+ |// Detected repl transcript paste: ctrl-D to finish.
+ |
+ |// Replaying 1 commands from transcript.
+ |
+ |XXX> def f = 42
+ |f: Int
+ |
+ |XXX> :quit"""
+ */
+
+}
diff --git a/test/files/run/t9359.check b/test/files/run/t9359.check
new file mode 100644
index 0000000000..8dcfe4f60a
--- /dev/null
+++ b/test/files/run/t9359.check
@@ -0,0 +1,18 @@
+ // access flags 0x4009
+ public static enum INNERCLASS A_1$A1N A_1 A1N
+
+ // access flags 0x4409
+ public static abstract enum INNERCLASS A_1$A1N_ABSTRACT A_1 A1N_ABSTRACT
+
+ // access flags 0x4019
+ public final static enum INNERCLASS A_1$A1N_FINAL A_1 A1N_FINAL
+
+ // access flags 0x4009
+ public static enum INNERCLASS B_2$A1N B_2 A1N
+
+ // access flags 0x4409
+ public static abstract enum INNERCLASS B_2$A1N_ABSTRACT B_2 A1N_ABSTRACT
+
+ // access flags 0x4019
+ public final static enum INNERCLASS B_2$A1N_FINAL B_2 A1N_FINAL
+
diff --git a/test/files/run/t9359/A_1.java b/test/files/run/t9359/A_1.java
new file mode 100644
index 0000000000..3ac82ed55f
--- /dev/null
+++ b/test/files/run/t9359/A_1.java
@@ -0,0 +1,19 @@
+public class A_1 {
+ // nested final
+ public static enum A1N_FINAL {
+ A1N_FINAL_VAL
+ }
+
+ // nested, non-final
+ public enum A1N {
+ A1N_VAL { } // value has a body, so a class extending A1N is generated
+ }
+
+ // nested, non-final, abstract
+ public enum A1N_ABSTRACT {
+ A1N_ABSTRACT_VAL {
+ void foo() { return; }
+ };
+ abstract void foo(); // abstract member makes the enum class abstract
+ }
+}
diff --git a/test/files/run/t9359/B_2.java b/test/files/run/t9359/B_2.java
new file mode 100644
index 0000000000..d824facda9
--- /dev/null
+++ b/test/files/run/t9359/B_2.java
@@ -0,0 +1,19 @@
+public class B_2 {
+ // nested final
+ public enum A1N_FINAL {
+ A1N_FINAL_VAL
+ }
+
+ // nested, non-final
+ public enum A1N {
+ A1N_VAL { } // value has a body, so a class extending A1N is generated
+ }
+
+ // nested, non-final, abstract
+ public enum A1N_ABSTRACT {
+ A1N_ABSTRACT_VAL {
+ void foo() { return; }
+ };
+ abstract void foo(); // abstract member makes the enum class abstract
+ }
+}
diff --git a/test/files/run/t9359/Test_2.scala b/test/files/run/t9359/Test_2.scala
new file mode 100644
index 0000000000..869c51b619
--- /dev/null
+++ b/test/files/run/t9359/Test_2.scala
@@ -0,0 +1,28 @@
+import scala.tools.partest.BytecodeTest
+import scala.tools.asm
+import asm.tree.{ClassNode, InnerClassNode}
+import asm.{Opcodes => Flags}
+import scala.collection.JavaConverters._
+
+class C {
+ def f1: A_1.A1N_FINAL = A_1.A1N_FINAL.A1N_FINAL_VAL
+ def f2: A_1.A1N = A_1.A1N.A1N_VAL
+ def f3: A_1.A1N_ABSTRACT = A_1.A1N_ABSTRACT.A1N_ABSTRACT_VAL
+
+ def f4: B_2.A1N_FINAL = B_2.A1N_FINAL.A1N_FINAL_VAL
+ def f5: B_2.A1N = B_2.A1N.A1N_VAL
+ def f6: B_2.A1N_ABSTRACT = B_2.A1N_ABSTRACT.A1N_ABSTRACT_VAL
+}
+
+object Test extends BytecodeTest {
+ def tost(n: InnerClassNode) = {
+ val t = new asm.util.Textifier
+ t.visitInnerClass(n.name, n.outerName, n.innerName, n.access)
+ t.getText.get(0);
+ }
+ def show(): Unit = {
+ for (n <- loadClassNode("C").innerClasses.asScala.toList.sortBy(_.name)) {
+ println(tost(n))
+ }
+ }
+}
diff --git a/test/files/run/toolbox-varargs/Test.scala b/test/files/run/toolbox-varargs/Test.scala
new file mode 100644
index 0000000000..be5ab45768
--- /dev/null
+++ b/test/files/run/toolbox-varargs/Test.scala
@@ -0,0 +1,13 @@
+object Test {
+ def main(args: Array[String]): Unit = {
+ import scala.tools.reflect.ToolBox
+ val m = reflect.runtime.currentMirror
+ val u = m.universe
+ import u._
+ val tb = m.mkToolBox();
+ tb.compile(q"new p.Varargs(null, null)")
+ tb.compile(q"p.Varargs.staticMethod(null, null)")
+ tb.compile(q"(null: p.Varargs).instanceMethod(null, null)")
+ }
+}
+
diff --git a/test/files/run/toolbox-varargs/Varargs.java b/test/files/run/toolbox-varargs/Varargs.java
new file mode 100644
index 0000000000..da1dbbacc9
--- /dev/null
+++ b/test/files/run/toolbox-varargs/Varargs.java
@@ -0,0 +1,8 @@
+package p;
+
+public class Varargs {
+ public Varargs(String... args) {}
+ public static void staticMethod(String... args) {}
+
+ public void instanceMethod(String... args) {}
+}
diff --git a/test/files/run/xMigration.check b/test/files/run/xMigration.check
index 378f7bb6c3..304132a848 100644
--- a/test/files/run/xMigration.check
+++ b/test/files/run/xMigration.check
@@ -12,10 +12,10 @@ res1: Iterable[String] = MapLike(eis)
scala> :setting -Xmigration:any
scala> Map(1 -> "eis").values // warn
-<console>:8: warning: method values in trait MapLike has changed semantics in version 2.8.0:
+<console>:11: warning: method values in trait MapLike has changed semantics in version 2.8.0:
`values` returns `Iterable[B]` rather than `Iterator[B]`.
- Map(1 -> "eis").values // warn
- ^
+ Map(1 -> "eis").values // warn
+ ^
res2: Iterable[String] = MapLike(eis)
scala> :setting -Xmigration:2.8
@@ -26,10 +26,10 @@ res3: Iterable[String] = MapLike(eis)
scala> :setting -Xmigration:2.7
scala> Map(1 -> "eis").values // warn
-<console>:8: warning: method values in trait MapLike has changed semantics in version 2.8.0:
+<console>:11: warning: method values in trait MapLike has changed semantics in version 2.8.0:
`values` returns `Iterable[B]` rather than `Iterator[B]`.
- Map(1 -> "eis").values // warn
- ^
+ Map(1 -> "eis").values // warn
+ ^
res4: Iterable[String] = MapLike(eis)
scala> :setting -Xmigration:2.11
@@ -40,10 +40,10 @@ res5: Iterable[String] = MapLike(eis)
scala> :setting -Xmigration // same as :any
scala> Map(1 -> "eis").values // warn
-<console>:8: warning: method values in trait MapLike has changed semantics in version 2.8.0:
+<console>:11: warning: method values in trait MapLike has changed semantics in version 2.8.0:
`values` returns `Iterable[B]` rather than `Iterator[B]`.
- Map(1 -> "eis").values // warn
- ^
+ Map(1 -> "eis").values // warn
+ ^
res6: Iterable[String] = MapLike(eis)
scala> :quit