aboutsummaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'src/main')
-rw-r--r--src/main/scala/scala/async/AnfTransform.scala4
-rw-r--r--src/main/scala/scala/async/AsyncAnalysis.scala4
-rw-r--r--src/main/scala/scala/async/AsyncUtils.scala12
3 files changed, 14 insertions, 6 deletions
diff --git a/src/main/scala/scala/async/AnfTransform.scala b/src/main/scala/scala/async/AnfTransform.scala
index 0756baf..cf6ed04 100644
--- a/src/main/scala/scala/async/AnfTransform.scala
+++ b/src/main/scala/scala/async/AnfTransform.scala
@@ -77,9 +77,9 @@ private[async] final case class AnfTransform[C <: Context](override val c: C) ex
def apply[T](prefix: String, args: Any)(t: => T): T = {
indent += 1
try {
- //println(s"${indentString}$prefix($args)")
+ AsyncUtils.trace(s"${indentString}$prefix($args)")
val result = t
- //println(s"${indentString}= $result")
+ AsyncUtils.trace(s"${indentString}= $result")
result
} finally {
indent -= 1
diff --git a/src/main/scala/scala/async/AsyncAnalysis.scala b/src/main/scala/scala/async/AsyncAnalysis.scala
index e319fe8..c1ee7f4 100644
--- a/src/main/scala/scala/async/AsyncAnalysis.scala
+++ b/src/main/scala/scala/async/AsyncAnalysis.scala
@@ -62,6 +62,10 @@ private[async] final case class AsyncAnalysis[C <: Context](override val c: C) e
tree match {
case Try(_, _, _) if containsAwait =>
reportUnsupportedAwait(tree, "try/catch")
+ super.traverse(tree)
+ case If(cond, _, _) if containsAwait =>
+ reportUnsupportedAwait(cond, "condition")
+ super.traverse(tree)
case Return(_) =>
c.abort(tree.pos, "return is illegal within a async block")
case _ =>
diff --git a/src/main/scala/scala/async/AsyncUtils.scala b/src/main/scala/scala/async/AsyncUtils.scala
index b2f6747..525f187 100644
--- a/src/main/scala/scala/async/AsyncUtils.scala
+++ b/src/main/scala/scala/async/AsyncUtils.scala
@@ -8,8 +8,12 @@ package scala.async
*/
object AsyncUtils {
- private val verbose = false || sys.props.getOrElse("scala.async.debug", "false").equalsIgnoreCase("true")
-
- private[async] def vprintln(s: => Any): Unit = if (verbose)
- println("[async] "+s)
+ private def enabled(level: String) = sys.props.getOrElse(s"scala.async.$level", "false").equalsIgnoreCase("true")
+
+ private val verbose = enabled("debug")
+ private val trace = enabled("trace")
+
+ private[async] def vprintln(s: => Any): Unit = if (verbose) println(s"[async] $s")
+
+ private[async] def trace(s: => Any): Unit = if (trace) println(s"[async] $s")
}