summaryrefslogtreecommitdiff
path: root/main/core/src/util/EnclosingClass.scala
diff options
context:
space:
mode:
Diffstat (limited to 'main/core/src/util/EnclosingClass.scala')
-rw-r--r--main/core/src/util/EnclosingClass.scala15
1 files changed, 15 insertions, 0 deletions
diff --git a/main/core/src/util/EnclosingClass.scala b/main/core/src/util/EnclosingClass.scala
new file mode 100644
index 00000000..a69cc525
--- /dev/null
+++ b/main/core/src/util/EnclosingClass.scala
@@ -0,0 +1,15 @@
+package mill.util
+
+import sourcecode.Compat.Context
+import language.experimental.macros
+case class EnclosingClass(value: Class[_])
+object EnclosingClass{
+ def apply()(implicit c: EnclosingClass) = c.value
+ implicit def generate: EnclosingClass = macro impl
+ def impl(c: Context): c.Tree = {
+ import c.universe._
+ val cls = c.internal.enclosingOwner.owner.asType.asClass
+ // q"new _root_.mill.define.EnclosingClass(classOf[$cls])"
+ q"new _root_.mill.util.EnclosingClass(this.getClass)"
+ }
+}