Skip to content

Commit 6b75e61

Browse files
committed
Revert object state & mark as unshared
1 parent fadc720 commit 6b75e61

File tree

5 files changed

+22
-19
lines changed

5 files changed

+22
-19
lines changed

compiler/src/dotty/tools/dotc/config/ScalaSettings.scala

+14-14
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,20 @@ object ScalaSettingCategories:
2323
val AdvancedSetting = "X"
2424
val VerboseSetting = "V"
2525

26-
object ScalaSettings:
26+
type ScalaSettings = ScalaSettings.type
27+
28+
object ScalaSettings extends SettingGroup, AllScalaSettings:
29+
val settingsByCategory: Map[String, List[Setting[_]]] =
30+
allSettings.groupBy(_.category)
31+
.view.mapValues(_.toList).toMap
32+
.withDefaultValue(Nil)
33+
def categories: List[String] = settingsByCategory.keys.toList
34+
val rootSettings: List[Setting[_]] = settingsByCategory(RootSetting)
35+
val warningSettings: List[Setting[_]] = settingsByCategory(WarningSetting)
36+
val forkSettings: List[Setting[_]] = settingsByCategory(ForkSetting)
37+
val advancedSettings: List[Setting[_]] = settingsByCategory(AdvancedSetting)
38+
val verboseSettings: List[Setting[_]] = settingsByCategory(VerboseSetting)
39+
val settingsByAliases: Map[String, Setting[_]] = allSettings.flatMap(s => s.aliases.map(_ -> s)).toMap
2740

2841
private lazy val minTargetVersion = classfileVersionMap.keysIterator.map(_.toInt).min
2942
private lazy val maxTargetVersion = classfileVersionMap.keysIterator.map(_.toInt).max
@@ -58,19 +71,6 @@ object ScalaSettings:
5871
else defaultWidth
5972
}
6073

61-
class ScalaSettings extends SettingGroup, AllScalaSettings:
62-
val settingsByCategory: Map[String, List[Setting[_]]] =
63-
allSettings.groupBy(_.category)
64-
.view.mapValues(_.toList).toMap
65-
.withDefaultValue(Nil)
66-
def categories: List[String] = settingsByCategory.keys.toList
67-
val rootSettings: List[Setting[_]] = settingsByCategory(RootSetting)
68-
val warningSettings: List[Setting[_]] = settingsByCategory(WarningSetting)
69-
val forkSettings: List[Setting[_]] = settingsByCategory(ForkSetting)
70-
val advancedSettings: List[Setting[_]] = settingsByCategory(AdvancedSetting)
71-
val verboseSettings: List[Setting[_]] = settingsByCategory(VerboseSetting)
72-
val settingsByAliases: Map[String, Setting[_]] = allSettings.flatMap(s => s.aliases.map(_ -> s)).toMap
73-
7474
trait AllScalaSettings extends CommonScalaSettings, PluginSettings, VerboseSettings, WarningSettings, XSettings, YSettings:
7575
self: SettingGroup =>
7676

compiler/src/dotty/tools/dotc/config/Settings.scala

+3
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import core.Contexts.*
88
import dotty.tools.io.{AbstractFile, Directory, JarArchive, PlainDirectory}
99

1010
import annotation.tailrec
11+
import annotation.internal.unshared
1112
import collection.mutable.ArrayBuffer
1213
import collection.mutable
1314
import reflect.ClassTag
@@ -240,6 +241,7 @@ object Settings:
240241

241242
class SettingGroup {
242243

244+
@unshared
243245
private val _allSettings = new ArrayBuffer[Setting[?]]
244246
def allSettings: Seq[Setting[?]] = _allSettings.toSeq
245247

@@ -307,6 +309,7 @@ object Settings:
307309
setting
308310
}
309311

312+
@unshared
310313
val settingCharacters = "[a-zA-Z0-9_\\-]*".r
311314
def validateSetting(setting: String): String =
312315
assert(settingCharacters.matches(setting), s"Setting $setting contains invalid characters")

compiler/src/dotty/tools/dotc/core/Contexts.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -861,7 +861,7 @@ object Contexts {
861861
with Phases.PhasesBase
862862
with Plugins {
863863

864-
val settings: ScalaSettings = new ScalaSettings()
864+
val settings: ScalaSettings = ScalaSettings
865865

866866
/** The initial context */
867867
val initialCtx: Context = FreshContext.initial(this: @unchecked, settings)

compiler/test/dotty/tools/dotc/ScalaCommandTest.scala

+2-2
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ class ScalaCommandTest:
1717
def temporaryFolder = _temporaryFolder
1818

1919
@Test def `Simple one parameter`: Unit = inContext {
20-
val settings = new config.ScalaSettings()
20+
val settings = config.ScalaSettings
2121
val args = "-cp path/to/classes1:other/path/to/classes2 files".split(" ")
2222
val summary = ScalacCommand.distill(args, settings)()
2323
given SettingsState = summary.sstate
@@ -26,7 +26,7 @@ class ScalaCommandTest:
2626
}
2727

2828
@Test def `Unfold @file`: Unit = inContext {
29-
val settings = new config.ScalaSettings()
29+
val settings = config.ScalaSettings
3030
val file = temporaryFolder.newFile("config")
3131
val writer = java.io.FileWriter(file);
3232
writer.write("-sourceroot myNewRoot someMoreFiles");

compiler/test/dotty/tools/dotc/config/ScalaSettingsTests.scala

+2-2
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ class ScalaSettingsTests:
6767

6868
@Test def `WConf setting is parsed`: Unit =
6969
import reporting.{Action, Diagnostic, NoExplanation}
70-
val sets = new ScalaSettings()
70+
val sets = ScalaSettings
7171
val args = List("-Wconf:cat=deprecation:s,cat=feature:e", "-Wconf:msg=a problem\\.:s")
7272
val sumy = ArgsSummary(sets.defaultState, args, errors = Nil, warnings = Nil)
7373
val proc = sets.processArguments(sumy, processAll = true, skipped = Nil)
@@ -85,7 +85,7 @@ class ScalaSettingsTests:
8585

8686
@Test def `i18367 rightmost WConf flags take precedence over flags to the left`: Unit =
8787
import reporting.{Action, Diagnostic}
88-
val sets = new ScalaSettings()
88+
val sets = ScalaSettings
8989
val args = List("-Wconf:cat=deprecation:e", "-Wconf:cat=deprecation:s")
9090
val sumy = ArgsSummary(sets.defaultState, args, errors = Nil, warnings = Nil)
9191
val proc = sets.processArguments(sumy, processAll = true, skipped = Nil)

0 commit comments

Comments
 (0)