diff --git a/main/settings/Def.scala b/main/settings/Def.scala index 6c49012e3e..3589dedaab 100644 --- a/main/settings/Def.scala +++ b/main/settings/Def.scala @@ -64,6 +64,11 @@ object Def extends Init[Scope] with TaskMacroExtra // be used in the inputTask macro as an input with an ultimate result of type T implicit def parserInitToInput[T](p: Initialize[Parser[T]]): InitParserInput[T] = ??? implicit def parserInitStateToInput[T](p: Initialize[State => Parser[T]]): StateParserInput[T] = ??? + + import language.experimental.macros + def settingKey[T](description: String): SettingKey[T] = macro std.KeyMacro.settingKeyImpl[T] + def taskKey[T](description: String): TaskKey[T] = macro std.KeyMacro.taskKeyImpl[T] + def inputKey[T](description: String): TaskKey[T] = macro std.KeyMacro.taskKeyImpl[T] } // these need to be mixed into the sbt package object because the target doesn't involve Initialize or anything in Def trait TaskMacroExtra diff --git a/main/settings/Structure.scala b/main/settings/Structure.scala index 2d360cda72..f08d915d88 100644 --- a/main/settings/Structure.scala +++ b/main/settings/Structure.scala @@ -500,16 +500,3 @@ object SettingKey def local[T: Manifest]: SettingKey[T] = apply[T](AttributeKey.local[T]) } - -object settingKey -{ - def apply[T](description: String): SettingKey[T] = macro std.KeyMacro.settingKeyImpl[T] -} -object taskKey -{ - def apply[T](description: String): TaskKey[T] = macro std.KeyMacro.taskKeyImpl[T] -} -object inputKey -{ - def apply[T](description: String): TaskKey[T] = macro std.KeyMacro.taskKeyImpl[T] -} diff --git a/main/settings/src/test/scala/UsageTest.scala b/main/settings/src/test/scala/UsageTest.scala index e9484cc10a..ae3380ec4a 100644 --- a/main/settings/src/test/scala/UsageTest.scala +++ b/main/settings/src/test/scala/UsageTest.scala @@ -21,6 +21,7 @@ package std object Assign { import java.io.File + import Def.{inputKey,settingKey,taskKey} import Def.{Initialize,macroValueT,parserToInput} // import UseTask.{x,y,z,a,set,plain} diff --git a/sbt/package.scala b/sbt/package.scala index a0e1da1276..cf99aea6e5 100644 --- a/sbt/package.scala +++ b/sbt/package.scala @@ -50,4 +50,9 @@ package object sbt extends sbt.std.TaskExtra with sbt.Types with sbt.ProcessExtr // final val System = C.System final val Optional = C.Optional def config(s: String): Configuration = Configurations.config(s) + + import language.experimental.macros + def settingKey[T](description: String): SettingKey[T] = macro std.KeyMacro.settingKeyImpl[T] + def taskKey[T](description: String): TaskKey[T] = macro std.KeyMacro.taskKeyImpl[T] + def inputKey[T](description: String): TaskKey[T] = macro std.KeyMacro.taskKeyImpl[T] }