From 948f4228c1a279f49093dbc7dc042eea749c463d Mon Sep 17 00:00:00 2001 From: Paul Phillips Date: Mon, 8 Nov 2010 14:25:01 +0000 Subject: A bit of -Xshow-class / -Xshow-object which did... A bit of -Xshow-class / -Xshow-object which didn't quite make the Global patch. Now type selections should do the right thing, e.g. scalac -Xshow-class Global#Run src/compiler/scala/tools/nsc/Global.scala will show you interesting things about Run. Or see the test case for even more thrills. No review. --- test/files/run/global-showdef.check | 14 ++++++++ test/files/run/global-showdef.scala | 69 +++++++++++++++++++++++++++++++++++++ 2 files changed, 83 insertions(+) create mode 100644 test/files/run/global-showdef.check create mode 100644 test/files/run/global-showdef.scala (limited to 'test') diff --git a/test/files/run/global-showdef.check b/test/files/run/global-showdef.check new file mode 100644 index 0000000000..8f67253ced --- /dev/null +++ b/test/files/run/global-showdef.check @@ -0,0 +1,14 @@ +<<-- class foo.bar.Bippy -->> + def showdefTestMemberClass1: Int +<<-- type foo.bar.Bippy.BippyType -->> + def showdefTestMemberType1: Unit +<<-- type foo.bar.Bippy.BippyType -->> + def showdefTestMemberType2: Unit +<<-- class foo.bar.Bippy.Boppity -->> + def showdefTestMemberClass2: Int +<<-- class foo.bar.Bippy.Boppity.Boo -->> + def showdefTestMemberClass3: Int +<<-- object foo.bar.Bippy -->> + def showdefTestMemberObject2: java.lang.String +<<-- object foo.bar.Bippy.Boppity.Boo -->> + def showdefTestMemberObject1: java.lang.String diff --git a/test/files/run/global-showdef.scala b/test/files/run/global-showdef.scala new file mode 100644 index 0000000000..0b34fc4548 --- /dev/null +++ b/test/files/run/global-showdef.scala @@ -0,0 +1,69 @@ +import scala.tools.nsc._ +import io.{ AbstractFile } +import util.{ SourceFile, BatchSourceFile, stringFromStream } +import scala.tools.nsc.reporters.ConsoleReporter + +object Test { + val src: SourceFile = new BatchSourceFile("src", """ +package foo.bar + +class Bippy { + type BippyType <: { + def showdefTestMemberType1: Unit + } + + def showdefTestMemberClass1 = 5 + class Boppity { + def showdefTestMemberClass2 = 5 + class Boo { + def showdefTestMemberClass3 = 5 + } + object Boo { + def showdefTestMemberObject1 = "abc" + } + } +} + +object Bippy { + type BippyType <: { + def showdefTestMemberType2: Unit + } + + def showdefTestMemberObject2 = "abc" +} + """) + + def mkCompiler(args: String*) = { + val settings = new Settings() + val command = new CompilerCommand("-usejavacp" :: args.toList, settings) + + new Global(settings) + } + + def slurp(body: => Unit): String = stringFromStream { stream => + Console.withOut(stream) { + Console.withErr(stream) { + body + } + } + } + def lines(args: String*): List[String] = { + val output = slurp { + val compiler = mkCompiler(args: _*) + val run = new compiler.Run() + run.compileSources(List(src)) + } + output split "\\n" toList + } + def showClass(name: String) = lines("-Xshow-class", name) + def showObject(name: String) = lines("-Xshow-object", name) + + def show(xs: List[String]) = { + xs filter (x => (x contains "def showdefTestMember") || (x startsWith "<<-- ")) foreach println + } + + def main(args: Array[String]) { + show(List("Bippy", "Bippy#BippyType", "Bippy.BippyType", "Bippy#Boppity", "Bippy#Boppity#Boo") flatMap showClass) + show(List("Bippy", "Bippy#Boppity#Boo") flatMap showObject) + } +} -- cgit v1.2.3