Skip to content

Commit 4d7a736

Browse files
committed
Generalize UniqueNamedTypes
1 parent a0b7e47 commit 4d7a736

File tree

2 files changed

+9
-8
lines changed

2 files changed

+9
-8
lines changed

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

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1502,7 +1502,7 @@ object Types {
15021502
private[this] var myName: ThisName = _
15031503
private[this] var mySig: Signature = null
15041504

1505-
def designatorName: Name = designator.asInstanceOf[Name] // ### todo: remove
1505+
def designatorName: Name = designator.asInstanceOf[Name] // ### todo: remove
15061506

15071507
private[dotc] def init()(implicit ctx: Context): this.type = {
15081508
(designator: Designator) match { // dotty shortcoming: need the upcast
@@ -1513,6 +1513,7 @@ object Types {
15131513
case designator: Name =>
15141514
myName = designator.asInstanceOf[ThisName]
15151515
case designator: Symbol =>
1516+
assert(designator.exists)
15161517
myName = designator.name.asInstanceOf[ThisName]
15171518
uncheckedSetSym(designator)
15181519
}
@@ -2029,13 +2030,13 @@ object Types {
20292030
override def computeHash = unsupported("computeHash")
20302031
}
20312032

2032-
final class CachedTermRef(prefix: Type, designator: TermName, hc: Int) extends TermRef(prefix, designator) {
2033+
final class CachedTermRef(prefix: Type, designator: TermDesignator, hc: Int) extends TermRef(prefix, designator) {
20332034
assert(prefix ne NoPrefix)
20342035
myHash = hc
20352036
override def computeHash = unsupported("computeHash")
20362037
}
20372038

2038-
final class CachedTypeRef(prefix: Type, designator: TypeName, hc: Int) extends TypeRef(prefix, designator) {
2039+
final class CachedTypeRef(prefix: Type, designator: TypeDesignator, hc: Int) extends TypeRef(prefix, designator) {
20392040
assert(prefix ne NoPrefix)
20402041
myHash = hc
20412042
override def computeHash = unsupported("computeHash")

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package dotty.tools.dotc
22
package core
33

4-
import Types._, Symbols._, Contexts._, util.Stats._, Hashable._, Names._
4+
import Types._, Symbols._, Contexts._, util.Stats._, Hashable._, Names._, Designators._
55
import config.Config
66
import util.HashSet
77

@@ -43,7 +43,7 @@ object Uniques {
4343
final class NamedTypeUniques extends HashSet[NamedType](Config.initialUniquesCapacity) with Hashable {
4444
override def hash(x: NamedType): Int = x.hash
4545

46-
private def findPrevious(h: Int, prefix: Type, designator: Name): NamedType = {
46+
private def findPrevious(h: Int, prefix: Type, designator: Designator): NamedType = {
4747
var e = findEntryByHash(h)
4848
while (e != null) {
4949
if ((e.prefix eq prefix) && (e.designator eq designator)) return e
@@ -52,12 +52,12 @@ object Uniques {
5252
e
5353
}
5454

55-
def enterIfNew(prefix: Type, designator: Name)(implicit ctx: Context): NamedType = {
55+
def enterIfNew(prefix: Type, designator: Designator)(implicit ctx: Context): NamedType = {
5656
val h = doHash(designator, prefix)
5757
if (monitored) recordCaching(h, classOf[NamedType])
5858
def newType = {
59-
if (designator.isTypeName) new CachedTypeRef(prefix, designator.asTypeName, h)
60-
else new CachedTermRef(prefix, designator.asTermName, h)
59+
if (designator.isType) new CachedTypeRef(prefix, designator.asType, h)
60+
else new CachedTermRef(prefix, designator.asTerm, h)
6161
}.init()
6262
if (h == NotCached) newType
6363
else {

0 commit comments

Comments
 (0)