Skip to content

Commit 5851da3

Browse files
committed
Move required... calls from Space to Definitions
That way they are cached for the whole run, and not recomputed for each exhaustivity match.
1 parent daa5f79 commit 5851da3

File tree

2 files changed

+9
-6
lines changed

2 files changed

+9
-6
lines changed

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

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -431,8 +431,11 @@ class Definitions {
431431
methodNames.map(getWrapVarargsArrayModule.requiredMethod(_))
432432
})
433433

434-
@tu lazy val ListModule: Symbol = requiredModule("scala.collection.immutable.List")
435-
@tu lazy val NilModule: Symbol = requiredModule("scala.collection.immutable.Nil")
434+
@tu lazy val ListClass: Symbol = requiredClass("scala.collection.immutable.List")
435+
@tu lazy val ListModule: Symbol = requiredModule("scala.collection.immutable.List")
436+
@tu lazy val NilModule: Symbol = requiredModule("scala.collection.immutable.Nil")
437+
@tu lazy val ConsClass: Symbol = requiredClass("scala.collection.immutable.::")
438+
@tu lazy val SeqFactoryClass: Symbol = requiredClass("scala.collection.SeqFactory")
436439

437440
@tu lazy val SingletonClass: ClassSymbol =
438441
// needed as a synthetic class because Scala 2.x refers to it in classfiles

compiler/src/dotty/tools/dotc/transform/patmat/Space.scala

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -317,10 +317,10 @@ class SpaceEngine(using Context) extends SpaceLogic {
317317
import tpd._
318318
import SpaceEngine._
319319

320-
private val scalaSeqFactoryClass = requiredClass("scala.collection.SeqFactory")
321-
private val scalaListType = requiredClassRef("scala.collection.immutable.List")
322-
private val scalaNilType = requiredModuleRef("scala.collection.immutable.Nil")
323-
private val scalaConsType = requiredClassRef("scala.collection.immutable.::")
320+
private val scalaSeqFactoryClass = defn.SeqFactoryClass
321+
private val scalaListType = defn.ListClass.typeRef
322+
private val scalaNilType = defn.NilModule.termRef
323+
private val scalaConsType = defn.ConsClass.typeRef
324324

325325
private val constantNullType = ConstantType(Constant(null))
326326
private val constantNullSpace = Typ(constantNullType)

0 commit comments

Comments
 (0)