summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/compiler/scala/tools/nsc/backend/jvm/GenJVM.scala8
-rw-r--r--src/compiler/scala/tools/nsc/settings/AbsScalacSettings.scala2
-rw-r--r--src/compiler/scala/tools/nsc/settings/MutableSettings.scala33
-rw-r--r--src/compiler/scala/tools/nsc/settings/ScalacSettings.scala2
-rw-r--r--src/compiler/scala/tools/nsc/settings/StandardScalaSettings.scala2
5 files changed, 11 insertions, 36 deletions
diff --git a/src/compiler/scala/tools/nsc/backend/jvm/GenJVM.scala b/src/compiler/scala/tools/nsc/backend/jvm/GenJVM.scala
index 5929b45369..74100976fc 100644
--- a/src/compiler/scala/tools/nsc/backend/jvm/GenJVM.scala
+++ b/src/compiler/scala/tools/nsc/backend/jvm/GenJVM.scala
@@ -73,6 +73,8 @@ abstract class GenJVM extends SubComponent {
class BytecodeGenerator {
import JAccessFlags._
+ def debugLevel = settings.debuginfo.indexOfChoice
+
val MIN_SWITCH_DENSITY = 0.7
val INNER_CLASSES_FLAGS =
(ACC_PUBLIC | ACC_PRIVATE | ACC_PROTECTED | ACC_STATIC | ACC_FINAL | ACC_INTERFACE | ACC_ABSTRACT)
@@ -112,9 +114,9 @@ abstract class GenJVM extends SubComponent {
val fjbgContext = new FJBGContext(49, 0)
- val emitSource = settings.debuginfo.level >= 1
- val emitLines = settings.debuginfo.level >= 2
- val emitVars = settings.debuginfo.level >= 3
+ val emitSource = debugLevel >= 1
+ val emitLines = debugLevel >= 2
+ val emitVars = debugLevel >= 3
/** Write a class to disk, adding the Scala signature (pickled type information) and
* inner classes.
diff --git a/src/compiler/scala/tools/nsc/settings/AbsScalacSettings.scala b/src/compiler/scala/tools/nsc/settings/AbsScalacSettings.scala
index 34f10d3769..bb0c6f8ee7 100644
--- a/src/compiler/scala/tools/nsc/settings/AbsScalacSettings.scala
+++ b/src/compiler/scala/tools/nsc/settings/AbsScalacSettings.scala
@@ -11,7 +11,6 @@ trait AbsScalacSettings {
type BooleanSetting <: AbsSetting
type ChoiceSetting <: AbsSetting
- type DebugSetting <: AbsSetting
type DefinesSetting <: AbsSetting
type IntSetting <: AbsSetting
type MultiStringSetting <: AbsSetting
@@ -24,7 +23,6 @@ trait AbsScalacSettings {
def BooleanSetting(name: String, descr: String): BooleanSetting
def ChoiceSetting(name: String, descr: String, choices: List[String], default: String): ChoiceSetting
- def DebugSetting(name: String, descr: String, choices: List[String], default: String, defaultEmpty: String): DebugSetting
def DefinesSetting(): DefinesSetting
def IntSetting(name: String, descr: String, default: Int, range: Option[(Int, Int)], parser: String => Option[Int]): IntSetting
def MultiStringSetting(name: String, arg: String, descr: String): MultiStringSetting
diff --git a/src/compiler/scala/tools/nsc/settings/MutableSettings.scala b/src/compiler/scala/tools/nsc/settings/MutableSettings.scala
index 3b1cb89f41..8e11b4f506 100644
--- a/src/compiler/scala/tools/nsc/settings/MutableSettings.scala
+++ b/src/compiler/scala/tools/nsc/settings/MutableSettings.scala
@@ -174,8 +174,8 @@ class MutableSettings(val errorFn: String => Unit) extends AbsSettings with Scal
}
def BooleanSetting(name: String, descr: String) = add(new BooleanSetting(name, descr))
- def ChoiceSetting(name: String, descr: String, choices: List[String], default: String) = add(new ChoiceSetting(name, descr, choices, default))
- def DebugSetting(name: String, descr: String, choices: List[String], default: String, defaultEmpty: String) = add(new DebugSetting(name, descr, choices, default, defaultEmpty))
+ def ChoiceSetting(name: String, descr: String, choices: List[String], default: String) =
+ add(new ChoiceSetting(name, descr, choices, default))
def DefinesSetting() = add(new DefinesSetting())
def IntSetting(name: String, descr: String, default: Int, range: Option[(Int, Int)], parser: String => Option[Int]) = add(new IntSetting(name, descr, default, range, parser))
def MultiStringSetting(name: String, arg: String, descr: String) = add(new MultiStringSetting(name, arg, descr))
@@ -494,8 +494,10 @@ class MutableSettings(val errorFn: String => Unit) extends AbsSettings with Scal
type T = String
protected var v: String = default
protected def argument: String = name drop 1
+ def indexOfChoice: Int = choices indexOf value
def tryToSet(args: List[String]) = { value = default ; Some(args) }
+
override def tryToSetColon(args: List[String]) = args match {
case Nil => errorAndValue("missing " + argument, None)
case List(x) if choices contains x => value = x ; Some(Nil)
@@ -508,33 +510,6 @@ class MutableSettings(val errorFn: String => Unit) extends AbsSettings with Scal
withHelpSyntax(name + ":<" + argument + ">")
}
- /** Same as ChoiceSetting but have a <code>level</code> int which tells the
- * index of the selected choice. The <code>defaultEmpty</code> is used when
- * this setting is used without specifying any of the available choices.
- */
- class DebugSetting private[nsc](
- name: String,
- descr: String,
- choices: List[String],
- default: String,
- val defaultEmpty: String)
- extends ChoiceSetting(name, descr, choices, default) {
- def indexOf[T](xs: List[T], e: T): Option[Int] = xs.indexOf(e) match {
- case -1 => None
- case x => Some(x)
- }
- var level: Int = indexOf(choices, default).get
-
- override def value_=(choice: String) = {
- super.value_=(choice)
- level = indexOf(choices, choice).get
- }
-
- override def tryToSet(args: List[String]) =
- if (args.isEmpty) { value = defaultEmpty ; Some(Nil) }
- else super.tryToSet(args)
- }
-
/** A setting represented by a list of strings which should be prefixes of
* phase names. This is not checked here, however. Alternatively the string
* "all" can be used to represent all phases.
diff --git a/src/compiler/scala/tools/nsc/settings/ScalacSettings.scala b/src/compiler/scala/tools/nsc/settings/ScalacSettings.scala
index 2f9a362457..60c996f02d 100644
--- a/src/compiler/scala/tools/nsc/settings/ScalacSettings.scala
+++ b/src/compiler/scala/tools/nsc/settings/ScalacSettings.scala
@@ -64,7 +64,7 @@ trait ScalacSettings extends AbsScalacSettings with StandardScalaSettings {
val deprecation = BooleanSetting ("-deprecation", "Output source locations where deprecated APIs are used")
val encoding = StringSetting ("-encoding", "encoding", "Specify character encoding used by source files", Properties.sourceEncoding)
val explaintypes = BooleanSetting ("-explaintypes", "Explain type errors in more detail")
- val g = DebugSetting ("-g", "Specify level of generated debugging info", List("none", "source", "line", "vars", "notailcalls"), "vars", "vars")
+ val g = ChoiceSetting ("-g", "Specify level of generated debugging info", List("none", "source", "line", "vars", "notailcalls"), "vars")
val help = BooleanSetting ("-help", "Print a synopsis of standard options")
val make = ChoiceSetting ("-make", "Specify recompilation detection strategy", List("all", "changed", "immediate", "transitive", "transitivenocp"), "all") .
withHelpSyntax("-make:<strategy>")
diff --git a/src/compiler/scala/tools/nsc/settings/StandardScalaSettings.scala b/src/compiler/scala/tools/nsc/settings/StandardScalaSettings.scala
index 69d411235c..6ad82454e5 100644
--- a/src/compiler/scala/tools/nsc/settings/StandardScalaSettings.scala
+++ b/src/compiler/scala/tools/nsc/settings/StandardScalaSettings.scala
@@ -19,7 +19,7 @@ trait StandardScalaSettings {
val classpath: PathSetting
val d: OutputSetting
val extdirs: PathSetting
- val g: DebugSetting
+ val g: ChoiceSetting
val javabootclasspath: PathSetting
val javaextdirs: PathSetting
val javaignorecp: BooleanSetting