Skip to content

Commit 9a2c0fd

Browse files
committed
Streamline feature handling in Parser
1 parent 95fa9cb commit 9a2c0fd

File tree

2 files changed

+16
-14
lines changed

2 files changed

+16
-14
lines changed

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

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,12 @@ object Feature:
1919
private def deprecated(str: String): TermName =
2020
QualifiedName(nme.deprecated, str.toTermName)
2121

22-
private val Xdependent = experimental("dependent")
23-
private val XnamedTypeArguments = experimental("namedTypeArguments")
24-
private val XgenericNumberLiterals = experimental("genericNumberLiterals")
25-
private val Xmacros = experimental("macros")
26-
private val symbolLiterals: TermName = deprecated("symbolLiterals")
22+
private val namedTypeArguments = experimental("namedTypeArguments")
23+
private val genericNumberLiterals = experimental("genericNumberLiterals")
24+
private val macros = experimental("macros")
25+
26+
val dependent = experimental("dependent")
27+
val symbolLiterals: TermName = deprecated("symbolLiterals")
2728

2829
/** Is `feature` enabled by by a command-line setting? The enabling setting is
2930
*
@@ -62,15 +63,13 @@ object Feature:
6263

6364
def dynamicsEnabled(using Context): Boolean = enabled(nme.dynamics)
6465

65-
def dependentEnabled(using Context) = enabled(Xdependent)
66-
67-
def namedTypeArgsEnabled(using Context) = enabled(XnamedTypeArguments)
66+
def dependentEnabled(using Context) = enabled(dependent)
6867

69-
def genericNumberLiteralsEnabled(using Context) = enabled(XgenericNumberLiterals)
68+
def namedTypeArgsEnabled(using Context) = enabled(namedTypeArguments)
7069

71-
def symbolLiteralsEnabled(using Context) = enabled(symbolLiterals)
70+
def genericNumberLiteralsEnabled(using Context) = enabled(genericNumberLiterals)
7271

73-
def scala2ExperimentalMacroEnabled(using Context) = enabled(Xmacros)
72+
def scala2ExperimentalMacroEnabled(using Context) = enabled(macros)
7473

7574
def sourceVersionSetting(using Context): SourceVersion =
7675
SourceVersion.valueOf(ctx.settings.source.value)

compiler/src/dotty/tools/dotc/parsing/Parsers.scala

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,8 @@ import util.Chars
2828
import scala.annotation.{tailrec, switch}
2929
import rewrites.Rewrites.{patch, overlapsPatch}
3030
import reporting._
31-
import config.Feature.{sourceVersion, migrateTo3, dependentEnabled, symbolLiteralsEnabled}
31+
import config.Feature
32+
import config.Feature.{sourceVersion, migrateTo3}
3233
import config.SourceVersion._
3334
import config.SourceVersion
3435

@@ -590,6 +591,8 @@ object Parsers {
590591
if in.currentRegion.indentWidth < nextIndentWidth then
591592
warning(i"Line is indented too far to the right, or a `{` or `:` is missing", in.next.offset)
592593

594+
def featureEnabled(name: TermName) = Feature.enabled(name)(using languageImportContext)
595+
593596
/* -------- REWRITES ----------------------------------------------------------- */
594597

595598
/** The last offset where a colon at the end of line would be required if a subsequent { ... }
@@ -1141,7 +1144,7 @@ object Parsers {
11411144
Quote(t)
11421145
}
11431146
else
1144-
if !symbolLiteralsEnabled(using languageImportContext) then
1147+
if !featureEnabled(Feature.symbolLiterals) then
11451148
report.errorOrMigrationWarning(
11461149
em"""symbol literal '${in.name} is no longer supported,
11471150
|use a string literal "${in.name}" or an application Symbol("${in.name}") instead,
@@ -1572,7 +1575,7 @@ object Parsers {
15721575
typeIdent()
15731576
else
15741577
def singletonArgs(t: Tree): Tree =
1575-
if in.token == LPAREN && dependentEnabled(using languageImportContext)
1578+
if in.token == LPAREN && featureEnabled(Feature.dependent)
15761579
then singletonArgs(AppliedTypeTree(t, inParens(commaSeparated(singleton))))
15771580
else t
15781581
singletonArgs(simpleType1())

0 commit comments

Comments
 (0)