Skip to content

Commit 09816ef

Browse files
committed
Added a copy() method to Settings. No review.
1 parent 84da1b2 commit 09816ef

File tree

1 file changed

+16
-2
lines changed

1 file changed

+16
-2
lines changed

src/compiler/scala/tools/nsc/Settings.scala

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,15 @@ class Settings(errorFn: String => Unit) extends ScalacSettings {
8888
case _ => false
8989
}
9090

91+
/** Create a new Settings object, copying all user-set values.
92+
*/
93+
def copy(): Settings = {
94+
val s = new Settings()
95+
val xs = userSetSettings flatMap (_.unparse)
96+
s.processArguments(xs.toList, true)
97+
s
98+
}
99+
91100
def checkDependencies: Boolean = {
92101
def hasValue(s: Setting, value: String): Boolean = s match {
93102
case bs: BooleanSetting => bs.value
@@ -253,7 +262,7 @@ class Settings(errorFn: String => Unit) extends ScalacSettings {
253262
lazy val OutputSetting = untupled((output _).tupled andThen add[OutputSetting])
254263

255264
override def toString() =
256-
"Settings(\n%s)" format (settingSet filter (s => !s.isDefault) map (" " + _ + "\n") mkString)
265+
"Settings(\n%s)" format (userSetSettings map (" " + _ + "\n") mkString)
257266
}
258267

259268
object Settings {
@@ -777,10 +786,15 @@ trait ScalacSettings {
777786

778787
import PathResolver.{ Defaults, Environment }
779788

780-
/** A list of all settings */
789+
/** Sorted set of settings */
781790
protected var allsettings: Set[Setting] = TreeSet[Setting]()
791+
792+
/** All settings */
782793
def settingSet: Set[Setting] = allsettings
783794

795+
/** Set settings */
796+
def userSetSettings: Set[Setting] = settingSet filterNot (_.isDefault)
797+
784798
/** Disable a setting */
785799
def disable(s: Setting) = allsettings -= s
786800

0 commit comments

Comments
 (0)