summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/repl/scala/tools/nsc/interpreter/Imports.scala8
-rw-r--r--test/files/run/repl-serialization.check4
-rw-r--r--test/files/run/repl-serialization.scala5
-rw-r--r--test/files/run/t7747-repl.check14
-rw-r--r--test/files/run/t7747-repl.scala4
5 files changed, 29 insertions, 6 deletions
diff --git a/src/repl/scala/tools/nsc/interpreter/Imports.scala b/src/repl/scala/tools/nsc/interpreter/Imports.scala
index c52869e208..3ec77e46f1 100644
--- a/src/repl/scala/tools/nsc/interpreter/Imports.scala
+++ b/src/repl/scala/tools/nsc/interpreter/Imports.scala
@@ -166,15 +166,15 @@ trait Imports {
for (imv <- x.definedNames) {
if (!currentImps.contains(imv)) {
x match {
- case _: ValHandler | _: ModuleHandler =>
+ case _: ClassHandler =>
+ code.append("import " + objName + req.accessPath + ".`" + imv + "`\n")
+ case _ =>
val valName = req.lineRep.packageName + req.lineRep.readName
if (!tempValLines.contains(req.lineRep.lineId)) {
code.append(s"val $valName = $objName\n")
tempValLines += req.lineRep.lineId
}
- code.append(s"import $valName ${req.accessPath}.`$imv`;\n")
- case _ =>
- code.append("import " + objName + req.accessPath + ".`" + imv + "`\n")
+ code.append(s"import $valName${req.accessPath}.`$imv`;\n")
}
currentImps += imv
}
diff --git a/test/files/run/repl-serialization.check b/test/files/run/repl-serialization.check
index c8439ea023..eb62729f5c 100644
--- a/test/files/run/repl-serialization.check
+++ b/test/files/run/repl-serialization.check
@@ -2,6 +2,8 @@
extract: AnyRef => Unit = <function1>
evaluating x
x: Int = 0
+getX: ()Int
+defined class U
y: Int = <lazy>
evaluating z
evaluating zz
@@ -11,6 +13,8 @@ zz: Int = 0
defined object O
defined class A
defined type alias AA
+constructing U
+u: U = U
== evaluating lambda
evaluating y
evaluating O
diff --git a/test/files/run/repl-serialization.scala b/test/files/run/repl-serialization.scala
index 64915ce51e..55b7519631 100644
--- a/test/files/run/repl-serialization.scala
+++ b/test/files/run/repl-serialization.scala
@@ -25,12 +25,15 @@ object Test {
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
- |extract(() => new AA(x + y + z + zz + O.apply))
+ |val u = new U()
+ |extract(() => new AA(x + getX() + y + z + zz + O.apply + u.x))
""".stripMargin
imain = new IMain(settings)
diff --git a/test/files/run/t7747-repl.check b/test/files/run/t7747-repl.check
index af47f23c62..5f436ba6b1 100644
--- a/test/files/run/t7747-repl.check
+++ b/test/files/run/t7747-repl.check
@@ -284,6 +284,18 @@ object $read extends scala.AnyRef {
}
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'. **
@@ -292,6 +304,6 @@ scala> :power
** Try :help, :vals, power.<tab> **
scala> intp.lastRequest
-res4: $r.intp.Request = Request(line=def $ires3 = intp.global, 1 trees)
+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 a681eb8851..141c2d9844 100644
--- a/test/files/run/t7747-repl.scala
+++ b/test/files/run/t7747-repl.scala
@@ -65,6 +65,10 @@ 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