aboutsummaryrefslogtreecommitdiff
path: root/compiler/test/dotty/tools/DottyTypeStealer.scala
diff options
context:
space:
mode:
authorFelix Mulder <felix.mulder@gmail.com>2016-11-02 11:08:28 +0100
committerGuillaume Martres <smarter@ubuntu.com>2016-11-22 01:35:07 +0100
commit8a61ff432543a29234193cd1f7c14abd3f3d31a0 (patch)
treea8147561d307af862c295cfc8100d271063bb0dd /compiler/test/dotty/tools/DottyTypeStealer.scala
parent6a455fe6da5ff9c741d91279a2dc6fe2fb1b472f (diff)
downloaddotty-8a61ff432543a29234193cd1f7c14abd3f3d31a0.tar.gz
dotty-8a61ff432543a29234193cd1f7c14abd3f3d31a0.tar.bz2
dotty-8a61ff432543a29234193cd1f7c14abd3f3d31a0.zip
Move compiler and compiler tests to compiler dir
Diffstat (limited to 'compiler/test/dotty/tools/DottyTypeStealer.scala')
-rw-r--r--compiler/test/dotty/tools/DottyTypeStealer.scala32
1 files changed, 32 insertions, 0 deletions
diff --git a/compiler/test/dotty/tools/DottyTypeStealer.scala b/compiler/test/dotty/tools/DottyTypeStealer.scala
new file mode 100644
index 000000000..819f19d25
--- /dev/null
+++ b/compiler/test/dotty/tools/DottyTypeStealer.scala
@@ -0,0 +1,32 @@
+package dotty.tools
+
+import dotc.ast.tpd
+import dotc.core.Names._
+import dotc.ast.tpd._
+import dotc.core.Contexts.Context
+import dotc.core.Decorators._
+import dotc.core.Types.Type
+
+object DottyTypeStealer {
+ def stealType(source: String, typeStrings: String*): (Context, List[Type]) = {
+ val dummyName = "x_x_x"
+ val vals = typeStrings.zipWithIndex.map{case (s, x)=> s"val ${dummyName}$x: $s = ???"}.mkString("\n")
+ val gatheredSource = s" ${source}\n object A$dummyName {$vals}"
+ var scontext : Context = null
+ var tp: List[Type] = null
+ new DottyTest().checkCompile("frontend",gatheredSource) {
+ (tree, context) =>
+ implicit val ctx = context
+ val findValDef: (List[ValDef], tpd.Tree) => List[ValDef] =
+ (acc , tree) => { tree match {
+ case t: ValDef if t.name.startsWith(dummyName.toTermName) => t :: acc
+ case _ => acc
+ }
+ }
+ val d = new DeepFolder[List[ValDef]](findValDef).foldOver(Nil, tree)
+ tp = d.map(_.tpe.widen).reverse
+ scontext = context
+ }
+ (scontext, tp)
+ }
+}