summaryrefslogtreecommitdiff
path: root/src/repl/scala/tools/nsc/interpreter/package.scala
diff options
context:
space:
mode:
authorSom Snytt <som.snytt@gmail.com>2014-10-18 22:43:57 -0700
committerSom Snytt <som.snytt@gmail.com>2014-11-04 07:49:16 -0800
commitd7835d62cf0093e4a8f17f6eabd334e74be6ffcb (patch)
tree99624fca28f394aacc2738e8ff347970c4579240 /src/repl/scala/tools/nsc/interpreter/package.scala
parent2b5df373638d08204b71258928289f6b39e25d5f (diff)
downloadscala-d7835d62cf0093e4a8f17f6eabd334e74be6ffcb.tar.gz
scala-d7835d62cf0093e4a8f17f6eabd334e74be6ffcb.tar.bz2
scala-d7835d62cf0093e4a8f17f6eabd334e74be6ffcb.zip
SI-8898 javap -fun under new style lambdas
To support both -Ydelambdafy strategies, look for both inline (anonfun) and method (lambda) closure classes. For method (lambda) style, use the anonfun method that is invoked by the accessor. Also, the output of javap must be captured eagerly for filtering for the current target method. If the user asks for a module, e.g., `Foo$`, don't yield results for companion class, but for `Foo`, do yield companion module results. Just because.
Diffstat (limited to 'src/repl/scala/tools/nsc/interpreter/package.scala')
-rw-r--r--src/repl/scala/tools/nsc/interpreter/package.scala11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/repl/scala/tools/nsc/interpreter/package.scala b/src/repl/scala/tools/nsc/interpreter/package.scala
index 079097d7a2..56f1e65376 100644
--- a/src/repl/scala/tools/nsc/interpreter/package.scala
+++ b/src/repl/scala/tools/nsc/interpreter/package.scala
@@ -11,6 +11,7 @@ import scala.reflect.runtime.{ universe => ru }
import scala.reflect.{ClassTag, classTag}
import scala.reflect.api.{Mirror, TypeCreator, Universe => ApiUniverse}
import scala.util.control.Exception.catching
+import scala.util.Try
/** The main REPL related classes and values are as follows.
* In addition to standard compiler classes Global and Settings, there are:
@@ -196,4 +197,14 @@ package object interpreter extends ReplConfig with ReplStrings {
}
}
}
+
+ /* debug assist
+ private[nsc] implicit class `smart stringifier`(val sc: StringContext) extends AnyVal {
+ import StringContext._, runtime.ScalaRunTime.stringOf
+ def ss(args: Any*): String = sc.standardInterpolator(treatEscapes, args map stringOf)
+ } debug assist */
+ private[nsc] implicit class `try lastly`[A](val t: Try[A]) extends AnyVal {
+ private def effect[X](last: =>Unit)(a: X): Try[A] = { last; t }
+ def lastly(last: =>Unit): Try[A] = t transform (effect(last) _, effect(last) _)
+ }
}