Skip to content

Commit e751d5a

Browse files
committed
Keep ScalaSettings class for back compat
1 parent 84863d5 commit e751d5a

File tree

3 files changed

+26
-20
lines changed

3 files changed

+26
-20
lines changed

Diff for: compiler/src/dotty/tools/dotc/config/CompilerCommand.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import Settings.*
55
import core.Contexts.*
66

77
abstract class CompilerCommand extends CliCommand:
8-
type ConcreteSettings = ScalaSettings.type
8+
type ConcreteSettings = ScalaSettings
99

1010
final def helpMsg(using settings: ConcreteSettings)(using SettingsState, Context): String =
1111
settings.allSettings.find(isHelping) match

Diff for: compiler/src/dotty/tools/dotc/config/ScalaSettings.scala

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

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

3928
private lazy val minTargetVersion = classfileVersionMap.keysIterator.map(_.toInt).min
4029
private lazy val maxTargetVersion = classfileVersionMap.keysIterator.map(_.toInt).max
@@ -68,6 +57,23 @@ object ScalaSettings extends SettingGroup, AllScalaSettings:
6857
else defaultWidth
6958
else defaultWidth
7059
}
60+
61+
object ScalaSettings extends ScalaSettings
62+
63+
// Kept as seperate type to avoid breaking backward compatibility
64+
abstract class ScalaSettings extends SettingGroup, AllScalaSettings:
65+
val settingsByCategory: Map[String, List[Setting[_]]] =
66+
allSettings.groupBy(_.category)
67+
.view.mapValues(_.toList).toMap
68+
.withDefaultValue(Nil)
69+
def categories: List[String] = settingsByCategory.keys.toList
70+
val rootSettings: List[Setting[_]] = settingsByCategory(RootSetting)
71+
val warningSettings: List[Setting[_]] = settingsByCategory(WarningSetting)
72+
val forkSettings: List[Setting[_]] = settingsByCategory(ForkSetting)
73+
val advancedSettings: List[Setting[_]] = settingsByCategory(AdvancedSetting)
74+
val verboseSettings: List[Setting[_]] = settingsByCategory(VerboseSetting)
75+
val settingsByAliases: Map[String, Setting[_]] = allSettings.flatMap(s => s.aliases.map(_ -> s)).toMap
76+
7177

7278
trait AllScalaSettings extends CommonScalaSettings, PluginSettings, VerboseSettings, WarningSettings, XSettings, YSettings:
7379
self: SettingGroup =>
@@ -76,7 +82,7 @@ trait AllScalaSettings extends CommonScalaSettings, PluginSettings, VerboseSetti
7682
val semanticdbTarget: Setting[String] = PathSetting(RootSetting, "semanticdb-target", "Specify an alternative output directory for SemanticDB files.", "")
7783
val semanticdbText: Setting[Boolean] = BooleanSetting(RootSetting, "semanticdb-text", "Specifies whether to include source code in SemanticDB files or not.")
7884

79-
val source: Setting[String] = ChoiceSetting(RootSetting, "source", "source version", "source version", ScalaSettings.supportedSourceVersions, SourceVersion.defaultSourceVersion.toString, aliases = List("--source"))
85+
val source: Setting[String] = ChoiceSetting(RootSetting, "source", "source version", "source version", ScalaSettingsProperties.supportedSourceVersions, SourceVersion.defaultSourceVersion.toString, aliases = List("--source"))
8086
val uniqid: Setting[Boolean] = BooleanSetting(RootSetting, "uniqid", "Uniquely tag all identifiers in debugging output.", aliases = List("--unique-id"))
8187
val rewrite: Setting[Option[Rewrites]] = OptionSetting[Rewrites](RootSetting, "rewrite", "When used in conjunction with a `...-migration` source version, rewrites sources to migrate to new version.", aliases = List("--rewrite"))
8288
val fromTasty: Setting[Boolean] = BooleanSetting(RootSetting, "from-tasty", "Compile classes from tasty files. The arguments are .tasty or .jar files.", aliases = List("--from-tasty"))
@@ -119,17 +125,17 @@ trait CommonScalaSettings:
119125
val sourcepath: Setting[String] = PathSetting(RootSetting, "sourcepath", "Specify location(s) of source files.", Defaults.scalaSourcePath, aliases = List("--source-path"))
120126
val sourceroot: Setting[String] = PathSetting(RootSetting, "sourceroot", "Specify workspace root directory.", ".")
121127

122-
val classpath: Setting[String] = PathSetting(RootSetting, "classpath", "Specify where to find user class files.", ScalaSettings.defaultClasspath, aliases = List("-cp", "--class-path"))
128+
val classpath: Setting[String] = PathSetting(RootSetting, "classpath", "Specify where to find user class files.", ScalaSettingsProperties.defaultClasspath, aliases = List("-cp", "--class-path"))
123129
val outputDir: Setting[AbstractFile] = OutputSetting(RootSetting, "d", "directory|jar", "Destination for generated classfiles.",
124130
new PlainDirectory(Directory(".")))
125131
val color: Setting[String] = ChoiceSetting(RootSetting, "color", "mode", "Colored output", List("always", "never"/*, "auto"*/), "always"/* "auto"*/, aliases = List("--color"))
126132
val verbose: Setting[Boolean] = BooleanSetting(RootSetting, "verbose", "Output messages about what the compiler is doing.", aliases = List("--verbose"))
127133
val version: Setting[Boolean] = BooleanSetting(RootSetting, "version", "Print product version and exit.", aliases = List("--version"))
128134
val help: Setting[Boolean] = BooleanSetting(RootSetting, "help", "Print a synopsis of standard options.", aliases = List("--help", "-h"))
129-
val pageWidth: Setting[Int] = IntSetting(RootSetting, "pagewidth", "Set page width", ScalaSettings.defaultPageWidth, aliases = List("--page-width"))
135+
val pageWidth: Setting[Int] = IntSetting(RootSetting, "pagewidth", "Set page width", ScalaSettingsProperties.defaultPageWidth, aliases = List("--page-width"))
130136
val silentWarnings: Setting[Boolean] = BooleanSetting(RootSetting, "nowarn", "Silence all warnings.", aliases = List("--no-warnings"))
131137

132-
val javaOutputVersion: Setting[String] = ChoiceSetting(RootSetting, "java-output-version", "version", "Compile code with classes specific to the given version of the Java platform available on the classpath and emit bytecode for this version. Corresponds to -release flag in javac.", ScalaSettings.supportedReleaseVersions, "", aliases = List("-release", "--release"))
138+
val javaOutputVersion: Setting[String] = ChoiceSetting(RootSetting, "java-output-version", "version", "Compile code with classes specific to the given version of the Java platform available on the classpath and emit bytecode for this version. Corresponds to -release flag in javac.", ScalaSettingsProperties.supportedReleaseVersions, "", aliases = List("-release", "--release"))
133139

134140
val deprecation: Setting[Boolean] = BooleanSetting(RootSetting, "deprecation", "Emit warning and location for usages of deprecated APIs.", aliases = List("--deprecation"))
135141
val feature: Setting[Boolean] = BooleanSetting(RootSetting, "feature", "Emit warning and location for usages of features that should be imported explicitly.", aliases = List("--feature"))
@@ -338,7 +344,7 @@ private sealed trait XSettings:
338344
val XignoreScala2Macros: Setting[Boolean] = BooleanSetting(AdvancedSetting, "Xignore-scala2-macros", "Ignore errors when compiling code that calls Scala2 macros, these will fail at runtime.")
339345
val XimportSuggestionTimeout: Setting[Int] = IntSetting(AdvancedSetting, "Ximport-suggestion-timeout", "Timeout (in ms) for searching for import suggestions when errors are reported.", 8000)
340346
val Xsemanticdb: Setting[Boolean] = BooleanSetting(AdvancedSetting, "Xsemanticdb", "Store information in SemanticDB.", aliases = List("-Ysemanticdb"))
341-
val XuncheckedJavaOutputVersion: Setting[String] = ChoiceSetting(AdvancedSetting, "Xunchecked-java-output-version", "target", "Emit bytecode for the specified version of the Java platform. This might produce bytecode that will break at runtime. Corresponds to -target flag in javac. When on JDK 9+, consider -java-output-version as a safer alternative.", ScalaSettings.supportedTargetVersions, "", aliases = List("-Xtarget", "--Xtarget"))
347+
val XuncheckedJavaOutputVersion: Setting[String] = ChoiceSetting(AdvancedSetting, "Xunchecked-java-output-version", "target", "Emit bytecode for the specified version of the Java platform. This might produce bytecode that will break at runtime. Corresponds to -target flag in javac. When on JDK 9+, consider -java-output-version as a safer alternative.", ScalaSettingsProperties.supportedTargetVersions, "", aliases = List("-Xtarget", "--Xtarget"))
342348
val XcheckMacros: Setting[Boolean] = BooleanSetting(AdvancedSetting, "Xcheck-macros", "Check some invariants of macro generated code while expanding macros", aliases = List("--Xcheck-macros"))
343349
val XmainClass: Setting[String] = StringSetting(AdvancedSetting, "Xmain-class", "path", "Class for manifest's Main-Class entry (only useful with -d <jar>)", "")
344350
val XimplicitSearchLimit: Setting[Int] = IntSetting(AdvancedSetting, "Ximplicit-search-limit", "Maximal number of expressions to be generated in an implicit search", 50000)

Diff for: compiler/src/dotty/tools/dotc/core/Contexts.scala

+2-2
Original file line numberDiff line numberDiff line change
@@ -513,7 +513,7 @@ object Contexts {
513513
s"""Context(
514514
|${outersIterator.map(ctx => cinfo(using ctx)).mkString("\n\n")})""".stripMargin
515515

516-
def settings: ScalaSettings.type = base.settings
516+
def settings: ScalaSettings = base.settings
517517
def definitions: Definitions = base.definitions
518518
def platform: Platform = base.platform
519519
def pendingUnderlying: util.HashSet[Type] = base.pendingUnderlying
@@ -861,7 +861,7 @@ object Contexts {
861861
with Phases.PhasesBase
862862
with Plugins {
863863

864-
val settings: ScalaSettings.type = ScalaSettings
864+
val settings: ScalaSettings = ScalaSettings
865865

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

0 commit comments

Comments
 (0)