aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/config
diff options
context:
space:
mode:
authorodersky <odersky@gmail.com>2016-03-18 11:16:50 +0100
committerodersky <odersky@gmail.com>2016-03-18 11:16:50 +0100
commitcdbc1631d1eda5a1a3eaa708b585a6a052852646 (patch)
tree060bc8fbe8d44ae9ba202f94fd98c9e7904180eb /src/dotty/tools/dotc/config
parent16f0bea7e4169ab89eddf2e7bae1de08ded3c84b (diff)
parent6c18e37886e90d217579112ccf867c22658273be (diff)
downloaddotty-cdbc1631d1eda5a1a3eaa708b585a6a052852646.tar.gz
dotty-cdbc1631d1eda5a1a3eaa708b585a6a052852646.tar.bz2
dotty-cdbc1631d1eda5a1a3eaa708b585a6a052852646.zip
Merge pull request #1154 from dotty-staging/add-rewrite
First steps towards rewriting from Scala2 in dotty
Diffstat (limited to 'src/dotty/tools/dotc/config')
-rw-r--r--src/dotty/tools/dotc/config/ScalaSettings.scala5
-rw-r--r--src/dotty/tools/dotc/config/Settings.scala9
2 files changed, 12 insertions, 2 deletions
diff --git a/src/dotty/tools/dotc/config/ScalaSettings.scala b/src/dotty/tools/dotc/config/ScalaSettings.scala
index b1d53c90d..07a23fdb6 100644
--- a/src/dotty/tools/dotc/config/ScalaSettings.scala
+++ b/src/dotty/tools/dotc/config/ScalaSettings.scala
@@ -1,6 +1,8 @@
-package dotty.tools.dotc.config
+package dotty.tools.dotc
+package config
import PathResolver.Defaults
+import rewrite.Rewrites
class ScalaSettings extends Settings.SettingGroup {
@@ -48,6 +50,7 @@ class ScalaSettings extends Settings.SettingGroup {
val d = StringSetting("-d", "directory|jar", "destination for generated classfiles.", ".")
val nospecialization = BooleanSetting("-no-specialization", "Ignore @specialize annotations.")
val language = MultiStringSetting("-language", "feature", "Enable one or more language features.")
+ val rewrite = OptionSetting[Rewrites]("-rewrite", "When used in conjunction with -language:Scala2 rewrites sources to migrate to new syntax")
/** -X "Advanced" settings
*/
diff --git a/src/dotty/tools/dotc/config/Settings.scala b/src/dotty/tools/dotc/config/Settings.scala
index 73bb056aa..eddeb83ab 100644
--- a/src/dotty/tools/dotc/config/Settings.scala
+++ b/src/dotty/tools/dotc/config/Settings.scala
@@ -19,6 +19,7 @@ object Settings {
val StringTag = ClassTag(classOf[String])
val ListTag = ClassTag(classOf[List[_]])
val VersionTag = ClassTag(classOf[ScalaVersion])
+ val OptionTag = ClassTag(classOf[Option[_]])
class SettingsState(initialValues: Seq[Any]) {
private var values = ArrayBuffer(initialValues: _*)
@@ -55,7 +56,8 @@ object Settings {
choices: Seq[T] = Nil,
prefix: String = "",
aliases: List[String] = Nil,
- depends: List[(Setting[_], Any)] = Nil)(private[Settings] val idx: Int) {
+ depends: List[(Setting[_], Any)] = Nil,
+ propertyClass: Option[Class[_]] = None)(private[Settings] val idx: Int) {
def withAbbreviation(abbrv: String): Setting[T] =
copy(aliases = aliases :+ abbrv)(idx)
@@ -112,6 +114,8 @@ object Settings {
def doSet(argRest: String) = ((implicitly[ClassTag[T]], args): @unchecked) match {
case (BooleanTag, _) =>
update(true, args)
+ case (OptionTag, _) =>
+ update(Some(propertyClass.get.newInstance), args)
case (ListTag, _) =>
if (argRest.isEmpty) missingArg
else update((argRest split ",").toList, args)
@@ -255,5 +259,8 @@ object Settings {
def VersionSetting(name: String, descr: String, default: ScalaVersion = NoScalaVersion): Setting[ScalaVersion] =
publish(Setting(name, descr, default))
+
+ def OptionSetting[T: ClassTag](name: String, descr: String): Setting[Option[T]] =
+ publish(Setting(name, descr, None, propertyClass = Some(implicitly[ClassTag[T]].runtimeClass)))
}
}