summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLi Haoyi <haoyi.sg@gmail.com>2017-10-21 21:00:40 -0700
committerLi Haoyi <haoyi.sg@gmail.com>2017-10-21 21:00:40 -0700
commit06afaf6d3cf65cc7b42fa5f31aa6c48421626b6e (patch)
tree7b7ea4d8c1358b763e3372daa66dc66783678297 /src
parent5a7e3db2e39e8cd1d3cd56d186c055439ed6d160 (diff)
downloadmill-06afaf6d3cf65cc7b42fa5f31aa6c48421626b6e.tar.gz
mill-06afaf6d3cf65cc7b42fa5f31aa6c48421626b6e.tar.bz2
mill-06afaf6d3cf65cc7b42fa5f31aa6c48421626b6e.zip
- Nest `StaticContext` into `DefCtx`
- Implement `Target.noop`, to let us construct target graphs without needing to create dummy implementations
Diffstat (limited to 'src')
-rw-r--r--src/main/scala/hbt/DefCtx.scala35
-rw-r--r--src/main/scala/hbt/StaticContext.scala33
-rw-r--r--src/main/scala/hbt/Target.scala4
-rw-r--r--src/test/scala/hbt/StaticContextTests.scala2
4 files changed, 40 insertions, 34 deletions
diff --git a/src/main/scala/hbt/DefCtx.scala b/src/main/scala/hbt/DefCtx.scala
new file mode 100644
index 00000000..1be06cd4
--- /dev/null
+++ b/src/main/scala/hbt/DefCtx.scala
@@ -0,0 +1,35 @@
+package hbt
+
+
+import scala.language.experimental.macros
+import scala.reflect.macros._
+
+
+case class DefCtx(staticEnclosing: Option[String])
+object DefCtx{
+ case class StaticContext(value: Boolean)
+ object StaticContext {
+ implicit def default: StaticContext = macro applyImpl
+ def rec(c: Context)(expr: c.Symbol): Boolean = {
+ import c.universe._
+ // Classes and traits and such
+ if(!expr.isModuleClass && expr.isClass) false
+ // Method contents
+ else if(expr.isMethod) false
+ else if(expr.owner == NoSymbol) true
+ else rec(c)(expr.owner)
+ }
+
+ def applyImpl(c: Context): c.Expr[StaticContext] = {
+ import c.universe._
+ val staticContext = rec(c)(c.internal.enclosingOwner)
+ c.Expr[StaticContext](q"hbt.DefCtx.StaticContext($staticContext)")
+ }
+ }
+
+ implicit def default(implicit enc: sourcecode.Enclosing,
+ sc: StaticContext) = {
+ if (sc.value) DefCtx(Some(enc.value))
+ else DefCtx(None)
+ }
+} \ No newline at end of file
diff --git a/src/main/scala/hbt/StaticContext.scala b/src/main/scala/hbt/StaticContext.scala
deleted file mode 100644
index 60298a3f..00000000
--- a/src/main/scala/hbt/StaticContext.scala
+++ /dev/null
@@ -1,33 +0,0 @@
-package hbt
-
-
-import scala.language.experimental.macros
-import scala.reflect.macros._
-
-case class StaticContext(value: Boolean)
-object StaticContext {
- implicit def default: StaticContext = macro applyImpl
- def rec(c: Context)(expr: c.Symbol): Boolean = {
- import c.universe._
- // Classes and traits and such
- if(!expr.isModuleClass && expr.isClass) false
- // Method contents
- else if(expr.isMethod) false
- else if(expr.owner == NoSymbol) true
- else rec(c)(expr.owner)
- }
-
- def applyImpl(c: Context): c.Expr[StaticContext] = {
- import c.universe._
- val staticContext = rec(c)(c.internal.enclosingOwner)
- c.Expr[StaticContext](q"hbt.StaticContext($staticContext)")
- }
-}
-case class DefCtx(staticEnclosing: Option[String])
-object DefCtx{
- implicit def default(implicit enc: sourcecode.Enclosing,
- sc: StaticContext) = {
- if (sc.value) DefCtx(Some(enc.value))
- else DefCtx(None)
- }
-} \ No newline at end of file
diff --git a/src/main/scala/hbt/Target.scala b/src/main/scala/hbt/Target.scala
index 7b1c5166..c5d5433b 100644
--- a/src/main/scala/hbt/Target.scala
+++ b/src/main/scala/hbt/Target.scala
@@ -22,6 +22,10 @@ trait Target[T]{
}
object Target{
+ def noop(inputs: Target[_]*)(implicit defCtx: DefCtx) = NoopTarget(inputs, defCtx)
+ case class NoopTarget(inputs: Seq[Target[_]], defCtx: DefCtx) extends Target[Unit]{
+ def evaluate(args: Args) = ()
+ }
def traverse[T](source: Seq[Target[T]])(implicit defCtx: DefCtx) = {
Traverse[T](source, defCtx)
}
diff --git a/src/test/scala/hbt/StaticContextTests.scala b/src/test/scala/hbt/StaticContextTests.scala
index 022cfd1e..c7fcdcd7 100644
--- a/src/test/scala/hbt/StaticContextTests.scala
+++ b/src/test/scala/hbt/StaticContextTests.scala
@@ -1,5 +1,5 @@
package hbt
-
+import DefCtx.StaticContext
import utest._
class Helper{
val static = implicitly[StaticContext]