Skip to content

Commit 54bc59a

Browse files
committed
Introduce language import for experimental.dependent
1 parent ddde226 commit 54bc59a

File tree

5 files changed

+16
-4
lines changed

5 files changed

+16
-4
lines changed

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

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ package dotc
33
package config
44

55
import core._
6-
import Contexts._, Symbols._, Names._
6+
import Contexts._, Symbols._, Names._, NameOps._
77
import StdNames.nme
88
import Decorators.{given _}
99
import util.SourcePosition
@@ -22,7 +22,7 @@ object Feature:
2222
def enabledBySetting(feature: TermName, owner: Symbol = NoSymbol)(using Context): Boolean =
2323
def toPrefix(sym: Symbol): String =
2424
if !sym.exists || sym == defn.LanguageModule.moduleClass then ""
25-
else toPrefix(sym.owner) + sym.name + "."
25+
else toPrefix(sym.owner) + sym.name.stripModuleClassSuffix + "."
2626
val prefix = if owner.exists then toPrefix(owner) else ""
2727
ctx.base.settings.language.value.contains(prefix + feature)
2828

@@ -38,7 +38,7 @@ object Feature:
3838
def enabledByImport(feature: TermName, owner: Symbol = NoSymbol)(using Context): Boolean =
3939
ctx.atPhase(ctx.typerPhase) {
4040
ctx.importInfo != null
41-
&& ctx.importInfo.featureImported(feature.toTermName,
41+
&& ctx.importInfo.featureImported(feature,
4242
if owner.exists then owner else defn.LanguageModule.moduleClass)
4343
}
4444

@@ -57,6 +57,9 @@ object Feature:
5757
def dynamicsEnabled(using Context): Boolean =
5858
enabled(nme.dynamics)
5959

60+
def dependentEnabled(using Context) =
61+
enabled(nme.dependent, defn.LanguageExperimentalModule.moduleClass)
62+
6063
def sourceVersionSetting(using Context): SourceVersion =
6164
SourceVersion.valueOf(ctx.settings.source.value)
6265

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -664,6 +664,7 @@ class Definitions {
664664
@tu lazy val Mirror_SingletonProxyClass: ClassSymbol = ctx.requiredClass("scala.deriving.Mirror.SingletonProxy")
665665

666666
@tu lazy val LanguageModule: Symbol = ctx.requiredModule("scala.language")
667+
@tu lazy val LanguageExperimentalModule: Symbol = ctx.requiredModule("scala.language.experimental")
667668
@tu lazy val NonLocalReturnControlClass: ClassSymbol = ctx.requiredClass("scala.runtime.NonLocalReturnControl")
668669
@tu lazy val SelectableClass: ClassSymbol = ctx.requiredClass("scala.Selectable")
669670

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -441,6 +441,7 @@ object StdNames {
441441
val definitions: N = "definitions"
442442
val delayedInit: N = "delayedInit"
443443
val delayedInitArg: N = "delayedInit$body"
444+
val dependent: N = "dependent"
444445
val derived: N = "derived"
445446
val derives: N = "derives"
446447
val drop: N = "drop"

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1580,7 +1580,8 @@ object Parsers {
15801580

15811581
/** SimpleType ::= SimpleLiteral
15821582
* | ‘?’ SubtypeBounds
1583-
* | SimpleType1 { ‘(’ Singletons ‘)’ }
1583+
* | SimpleType1
1584+
* | SimpeType ‘(’ Singletons ‘)’ -- under language.experimental.dependent, checked in Typer
15841585
* Singletons ::= Singleton {‘,’ Singleton}
15851586
*/
15861587
def simpleType(): Tree =

library/src/scalaShadowing/language.scala

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,9 @@ object language {
210210
* to debug and understand.
211211
*/
212212
implicit lazy val macros: macros = languageFeature.experimental.macros
213+
214+
/** Experimental support for richer dependent types */
215+
object dependent
213216
}
214217

215218
/** Where imported, a backwards compatibility mode for Scala2 is enabled */
@@ -239,6 +242,9 @@ object language {
239242
*/
240243
object adhocExtensions
241244

245+
/** Experimental support for richer dependent types */
246+
object dependent
247+
242248
/** Source version */
243249
object `3.0-migration`
244250
object `3.0`

0 commit comments

Comments
 (0)