From 73ab189dcb45bccc0ba6e2e0d445b08057391496 Mon Sep 17 00:00:00 2001 From: Jason Zaugg Date: Fri, 23 Nov 2012 17:18:43 +0100 Subject: Tightenen up modifiers and other refactoring. --- src/main/scala/scala/async/AnfTransform.scala | 21 ++++++++------------- src/main/scala/scala/async/Async.scala | 6 +++--- src/main/scala/scala/async/AsyncAnalysis.scala | 2 +- src/main/scala/scala/async/ExprBuilder.scala | 2 +- 4 files changed, 13 insertions(+), 18 deletions(-) diff --git a/src/main/scala/scala/async/AnfTransform.scala b/src/main/scala/scala/async/AnfTransform.scala index a69fd4e..4c78b5a 100644 --- a/src/main/scala/scala/async/AnfTransform.scala +++ b/src/main/scala/scala/async/AnfTransform.scala @@ -3,11 +3,7 @@ package scala.async import scala.reflect.macros.Context -object AnfTranform { - def apply[C <: Context](c: C): AnfTransform[c.type] = new AnfTransform[c.type](c) -} - -class AnfTransform[C <: Context](override val c: C) extends TransformUtils(c) { +private[async] final case class AnfTransform[C <: Context](override val c: C) extends TransformUtils(c) { import c.universe._ @@ -26,7 +22,7 @@ class AnfTransform[C <: Context](override val c: C) extends TransformUtils(c) { * * This step is needed to allow us to safely merge blocks during the `inline` transform below. */ - final class UniqueNames(tree: Tree) extends Transformer { + private final class UniqueNames(tree: Tree) extends Transformer { val repeatedNames: Set[Name] = tree.collect { case dt: DefTree => dt.symbol.name }.groupBy(x => x).filter(_._2.size > 1).keySet @@ -75,7 +71,7 @@ class AnfTransform[C <: Context](override val c: C) extends TransformUtils(c) { } } - final class Indent { + private object trace { private var indent = -1 def indentString = " " * indent def apply[T](prefix: String, args: Any)(t: => T): T = { @@ -90,10 +86,9 @@ class AnfTransform[C <: Context](override val c: C) extends TransformUtils(c) { } } } - private val indent = new Indent - object inline { - def transformToList(tree: Tree): List[Tree] = indent("inline", tree) { + private object inline { + def transformToList(tree: Tree): List[Tree] = trace("inline", tree) { val stats :+ expr = anf.transformToList(tree) expr match { case Apply(fun, args) if isAwait(fun) => @@ -160,9 +155,10 @@ class AnfTransform[C <: Context](override val c: C) extends TransformUtils(c) { vd } } - object anf { - private[AnfTransform] def transformToList(tree: Tree): List[Tree] = indent("anf", tree) { + private object anf { + + private[AnfTransform] def transformToList(tree: Tree): List[Tree] = trace("anf", tree) { def containsAwait = tree exists isAwait tree match { case Select(qual, sel) if containsAwait => @@ -217,5 +213,4 @@ class AnfTransform[C <: Context](override val c: C) extends TransformUtils(c) { } } } - } diff --git a/src/main/scala/scala/async/Async.scala b/src/main/scala/scala/async/Async.scala index ed79d0b..106bdf0 100644 --- a/src/main/scala/scala/async/Async.scala +++ b/src/main/scala/scala/async/Async.scala @@ -65,8 +65,8 @@ abstract class AsyncBase { import c.universe._ import Flag._ - val builder = new ExprBuilder[c.type, futureSystem.type](c, self.futureSystem) - val anaylzer = new AsyncAnalysis[c.type](c) + val builder = ExprBuilder[c.type, futureSystem.type](c, self.futureSystem) + val anaylzer = AsyncAnalysis[c.type](c) import builder.defn._ import builder.name @@ -78,7 +78,7 @@ abstract class AsyncBase { // - no await calls in qualifiers or arguments, // - if/match only used in statement position. val anfTree: Block = { - val anf = AnfTranform(c) + val anf = AnfTransform[c.type](c) val stats1 :+ expr1 = anf(body.tree) val block = Block(stats1, expr1) c.typeCheck(block).asInstanceOf[Block] diff --git a/src/main/scala/scala/async/AsyncAnalysis.scala b/src/main/scala/scala/async/AsyncAnalysis.scala index 180e006..35d2854 100644 --- a/src/main/scala/scala/async/AsyncAnalysis.scala +++ b/src/main/scala/scala/async/AsyncAnalysis.scala @@ -3,7 +3,7 @@ package scala.async import scala.reflect.macros.Context import collection.mutable -private[async] final class AsyncAnalysis[C <: Context](override val c: C) extends TransformUtils(c) { +private[async] final case class AsyncAnalysis[C <: Context](override val c: C) extends TransformUtils(c) { import c.universe._ /** diff --git a/src/main/scala/scala/async/ExprBuilder.scala b/src/main/scala/scala/async/ExprBuilder.scala index b7cfc8f..4b81d1e 100644 --- a/src/main/scala/scala/async/ExprBuilder.scala +++ b/src/main/scala/scala/async/ExprBuilder.scala @@ -10,7 +10,7 @@ import collection.mutable /* * @author Philipp Haller */ -final class ExprBuilder[C <: Context, FS <: FutureSystem](override val c: C, val futureSystem: FS) +final case class ExprBuilder[C <: Context, FS <: FutureSystem](override val c: C, val futureSystem: FS) extends TransformUtils(c) { builder => -- cgit v1.2.3