aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Zaugg <jzaugg@gmail.com>2012-11-23 17:18:43 +0100
committerJason Zaugg <jzaugg@gmail.com>2012-11-23 17:28:37 +0100
commit73ab189dcb45bccc0ba6e2e0d445b08057391496 (patch)
tree76ebecadbe2cc28ef284d967d0c9e8205f826730
parent4c1c9fcf075d6e1e5975a04c5a2ced674716069a (diff)
downloadscala-async-73ab189dcb45bccc0ba6e2e0d445b08057391496.tar.gz
scala-async-73ab189dcb45bccc0ba6e2e0d445b08057391496.tar.bz2
scala-async-73ab189dcb45bccc0ba6e2e0d445b08057391496.zip
Tightenen up modifiers and other refactoring.
-rw-r--r--src/main/scala/scala/async/AnfTransform.scala21
-rw-r--r--src/main/scala/scala/async/Async.scala6
-rw-r--r--src/main/scala/scala/async/AsyncAnalysis.scala2
-rw-r--r--src/main/scala/scala/async/ExprBuilder.scala2
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 =>