diff options
author | Felix Mulder <felix.mulder@gmail.com> | 2016-11-02 11:08:28 +0100 |
---|---|---|
committer | Guillaume Martres <smarter@ubuntu.com> | 2016-11-22 01:35:07 +0100 |
commit | 8a61ff432543a29234193cd1f7c14abd3f3d31a0 (patch) | |
tree | a8147561d307af862c295cfc8100d271063bb0dd /compiler/test/dotty/tools/DottyTypeStealer.scala | |
parent | 6a455fe6da5ff9c741d91279a2dc6fe2fb1b472f (diff) | |
download | dotty-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.scala | 32 |
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) + } +} |