aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/core/TypeErasure.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2015-10-22 12:01:56 +0200
committerMartin Odersky <odersky@gmail.com>2015-10-22 12:21:26 +0200
commit28193a6c53482cbec36530c25dc1a26438b81a18 (patch)
tree2046a91a827298876d825022ed80e3d2c6ad15bb /src/dotty/tools/dotc/core/TypeErasure.scala
parentf1b3859911ee04a90a0b169c5eefa2c64ce5d265 (diff)
downloaddotty-28193a6c53482cbec36530c25dc1a26438b81a18.tar.gz
dotty-28193a6c53482cbec36530c25dc1a26438b81a18.tar.bz2
dotty-28193a6c53482cbec36530c25dc1a26438b81a18.zip
Avoid caching in sigName
Use more complicated control flow with returns instead. sigName is likely performance critical, so some trickiness is justified.
Diffstat (limited to 'src/dotty/tools/dotc/core/TypeErasure.scala')
-rw-r--r--src/dotty/tools/dotc/core/TypeErasure.scala15
1 files changed, 7 insertions, 8 deletions
diff --git a/src/dotty/tools/dotc/core/TypeErasure.scala b/src/dotty/tools/dotc/core/TypeErasure.scala
index dd6589a08..35c24ff5a 100644
--- a/src/dotty/tools/dotc/core/TypeErasure.scala
+++ b/src/dotty/tools/dotc/core/TypeErasure.scala
@@ -446,17 +446,16 @@ class TypeErasure(isJava: Boolean, semiEraseVCs: Boolean, isConstructor: Boolean
case tp: TypeRef =>
if (!tp.denot.exists) throw new MissingType(tp.prefix, tp.name)
val sym = tp.symbol
- var edvc: Type = null
- def dvcErasure: Type = {
- if (edvc == null) edvc = eraseDerivedValueClassRef(tp)
- edvc
- }
if (!sym.isClass) {
val info = tp.info
if (!info.exists) assert(false, "undefined: $tp with symbol $sym")
- sigName(info)
- } else if (isDerivedValueClass(sym) && dvcErasure.exists) sigName(dvcErasure)
- else normalizeClass(sym.asClass).fullName.asTypeName
+ return sigName(info)
+ }
+ if (isDerivedValueClass(sym)) {
+ val erasedVCRef = eraseDerivedValueClassRef(tp)
+ if (erasedVCRef.exists) return sigName(erasedVCRef)
+ }
+ normalizeClass(sym.asClass).fullName.asTypeName
case defn.ArrayType(elem) =>
sigName(this(tp))
case JavaArrayType(elem) =>