@@ -9,7 +9,7 @@ import unpickleScala2.Scala2Unpickler.ensureConstructor
99import scala .collection .mutable
1010import collection .mutable
1111import Denotations .SingleDenotation
12- import util .SimpleIdentityMap
12+ import util .{ SimpleIdentityMap , SourceFile , NoSource }
1313import typer .ImportInfo .RootRef
1414
1515import scala .annotation .tailrec
@@ -186,6 +186,13 @@ class Definitions {
186186 cls
187187 }
188188
189+ /** If `sym` is a patched library class, the source file of its patch class,
190+ * otherwise `NoSource`
191+ */
192+ def patchSource (sym : Symbol ): SourceFile =
193+ if sym == ScalaPredefModuleClass then ScalaPredefModuleClassPatch .source
194+ else NoSource
195+
189196 @ tu lazy val RootClass : ClassSymbol = newPackageSymbol(
190197 NoSymbol , nme.ROOT , (root, rootcls) => ctx.base.rootLoader(root)).moduleClass.asClass
191198 @ tu lazy val RootPackage : TermSymbol = newSymbol(
@@ -481,13 +488,16 @@ class Definitions {
481488 newPermanentSymbol(ScalaPackageClass , tpnme.IMPLICITkw , EmptyFlags , TypeBounds .empty).entered
482489 def ImplicitScrutineeTypeRef : TypeRef = ImplicitScrutineeTypeSym .typeRef
483490
484-
485491 @ tu lazy val ScalaPredefModule : Symbol = requiredModule(" scala.Predef" )
486492 @ tu lazy val Predef_conforms : Symbol = ScalaPredefModule .requiredMethod(nme.conforms_)
487493 @ tu lazy val Predef_classOf : Symbol = ScalaPredefModule .requiredMethod(nme.classOf )
488494 @ tu lazy val Predef_identity : Symbol = ScalaPredefModule .requiredMethod(nme.identity)
489495 @ tu lazy val Predef_undefined : Symbol = ScalaPredefModule .requiredMethod(nme.??? )
490496
497+ @ tu lazy val ScalaPredefModuleClass : ClassSymbol = ScalaPredefModule .moduleClass.asClass
498+ @ tu lazy val ScalaPredefModuleClassPatch : Symbol =
499+ getModuleIfDefined(" scala.runtime.stdLibPatches.Predef" ).moduleClass
500+
491501 @ tu lazy val SubTypeClass : ClassSymbol = requiredClass(" scala.<:<" )
492502 @ tu lazy val SubType_refl : Symbol = SubTypeClass .companionModule.requiredMethod(nme.refl)
493503
@@ -510,7 +520,7 @@ class Definitions {
510520 // will return "null" when called recursively, see #1856.
511521 def DottyPredefModule : Symbol = {
512522 if (myDottyPredefModule == null ) {
513- myDottyPredefModule = requiredModule (" dotty.DottyPredef" )
523+ myDottyPredefModule = getModuleIfDefined (" dotty.DottyPredef" )
514524 assert(myDottyPredefModule != null )
515525 }
516526 myDottyPredefModule
@@ -782,6 +792,7 @@ class Definitions {
782792 @ tu lazy val Mirror_SingletonProxyClass : ClassSymbol = requiredClass(" scala.deriving.Mirror.SingletonProxy" )
783793
784794 @ tu lazy val LanguageModule : Symbol = requiredModule(" scala.language" )
795+ @ tu lazy val LanguageModuleClass : Symbol = LanguageModule .moduleClass.asClass
785796 @ tu lazy val LanguageExperimentalModule : Symbol = requiredModule(" scala.language.experimental" )
786797 @ tu lazy val NonLocalReturnControlClass : ClassSymbol = requiredClass(" scala.runtime.NonLocalReturnControl" )
787798 @ tu lazy val SelectableClass : ClassSymbol = requiredClass(" scala.Selectable" )
0 commit comments