diff options
-rw-r--r-- | src/dotty/tools/dotc/core/Types.scala | 11 |
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 { |