aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/dotty/tools/dotc/core/Types.scala11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/dotty/tools/dotc/core/Types.scala b/src/dotty/tools/dotc/core/Types.scala
index 358720836..6797836cf 100644
--- a/src/dotty/tools/dotc/core/Types.scala
+++ b/src/dotty/tools/dotc/core/Types.scala
@@ -1815,7 +1815,16 @@ object Types {
}
case class LazyRef(refFn: () => Type) extends UncachedProxyType with ValueType {
- lazy val ref = refFn()
+ private var myRef: Type = null
+ private var computed = false
+ lazy val ref = {
+ if (computed) assert(myRef != null)
+ else {
+ computed = true
+ myRef = refFn()
+ }
+ myRef
+ }
override def underlying(implicit ctx: Context) = ref
override def toString = s"LazyRef($ref)"
override def equals(other: Any) = other match {