Skip to content

Commit f7f1b6b

Browse files
committed
Compute list of experimental features
1 parent 6a64765 commit f7f1b6b

File tree

2 files changed

+7
-16
lines changed

2 files changed

+7
-16
lines changed

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

Lines changed: 4 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ object Feature:
2323
private val genericNumberLiterals = experimental("genericNumberLiterals")
2424
val scala2macros = experimental("macros")
2525

26-
val mode = experimental("mode")
2726
val dependent = experimental("dependent")
2827
val erasedDefinitions = experimental("erasedDefinitions")
2928
val symbolLiterals = deprecated("symbolLiterals")
@@ -35,21 +34,10 @@ object Feature:
3534
val into = experimental("into")
3635
val relaxedExtensionImports = experimental("relaxedExtensionImports")
3736

38-
// TODO compute this list
39-
// TODO remove features that do not enable experimental mode
40-
val experimentalAutoEnableFeatures: List[TermName] = List(
41-
mode,
42-
namedTypeArguments,
43-
genericNumberLiterals,
44-
erasedDefinitions,
45-
fewerBraces,
46-
saferExceptions,
47-
clauseInterleaving,
48-
pureFunctions,
49-
captureChecking,
50-
into,
51-
relaxedExtensionImports,
52-
)
37+
def experimentalAutoEnableFeatures(using Context): List[TermName] =
38+
defn.languageExperimentalFeatures
39+
.map(sym => experimental(sym.name.asTermName))
40+
.filterNot(_ == captureChecking) // TODO is this correct?
5341

5442
val globalOnlyImports: Set[TermName] = Set(pureFunctions, captureChecking)
5543

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2013,6 +2013,9 @@ class Definitions {
20132013
CapabilityAnnot, RequiresCapabilityAnnot,
20142014
RetainsAnnot, RetainsCapAnnot, RetainsByNameAnnot)
20152015

2016+
@tu lazy val languageExperimentalFeatures: List[Symbol] =
2017+
LanguageExperimentalModule.moduleClass.info.decls.toList.filter(_.isAllOf(Lazy | Module))
2018+
20162019
// ----- primitive value class machinery ------------------------------------------
20172020

20182021
class PerRun[T](generate: Context ?=> T) {

0 commit comments

Comments
 (0)