File: repl-javap-lambdas.scala

package info (click to toggle)
scala 2.11.12-5
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 62,828 kB
  • sloc: javascript: 28,808; java: 13,415; xml: 3,250; sh: 1,620; python: 756; makefile: 38; awk: 36; ansic: 6
file content (23 lines) | stat: -rw-r--r-- 786 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import scala.tools.partest.JavapTest
import scala.tools.nsc.Settings

// see repl-javap-memfun.java for the complementary version
object Test extends JavapTest {
  override def transformSettings(s: Settings) = { s.Ydelambdafy.value = "method" ; s }
  def code = """
    |object Betty {
    | List(1,2,3) count (_ % 2 != 0)
    | def f = List(1,2,3) filter ((x: Any) => true) map (x => "m1")
    | def g = List(1,2,3) filter ((x: Any) => true) map (x => "m1") map (x => "m2")
    |}
    |:javap -fun Betty#g
  """.stripMargin

  // three anonfuns of Betty#g
  override def yah(res: Seq[String]) = {
    import PartialFunction.{ cond => when }
    val r = """.*final .* .*\$anonfun\$\d+\(.*""".r
    def filtered = res filter (when(_) { case r(_*) => true })
    3 == filtered.size
  }
}