aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/core/Types.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2013-04-23 14:43:06 +0200
committerMartin Odersky <odersky@gmail.com>2013-04-23 14:43:06 +0200
commitae816296034133b1dee25020224b9f7a334c8928 (patch)
treefcd5a2c70d63f61a7d90ed958368c4ea6c7f41f0 /src/dotty/tools/dotc/core/Types.scala
parent91f71c3112a06c86aa36a9aaedf4ed159c3d8961 (diff)
downloaddotty-ae816296034133b1dee25020224b9f7a334c8928.tar.gz
dotty-ae816296034133b1dee25020224b9f7a334c8928.tar.bz2
dotty-ae816296034133b1dee25020224b9f7a334c8928.zip
Making fields in MethodType, PolyType strict to avoid context capturing.
Diffstat (limited to 'src/dotty/tools/dotc/core/Types.scala')
-rw-r--r--src/dotty/tools/dotc/core/Types.scala9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/dotty/tools/dotc/core/Types.scala b/src/dotty/tools/dotc/core/Types.scala
index a2d8d596b..60f329bc6 100644
--- a/src/dotty/tools/dotc/core/Types.scala
+++ b/src/dotty/tools/dotc/core/Types.scala
@@ -189,7 +189,8 @@ object Types {
}
else tp.cls
case tp: TypeProxy =>
- tp.underlying.classSymbol
+ tp.underlying.typeSymbol // this should be classSymbol, but that produces
+ // stackoverflows at the moment. Need to follow up on this.
case AndType(l, r) =>
val lsym = l.classSymbol
val rsym = r.classSymbol
@@ -1220,7 +1221,7 @@ object Types {
(resultTypeExp: MethodType => Type)
extends CachedGroundType with BindingType with TermType {
- override lazy val resultType = resultTypeExp(this)
+ override val resultType = resultTypeExp(this)
def isJava = false
def isImplicit = false
@@ -1342,8 +1343,8 @@ object Types {
case class PolyType(paramNames: List[TypeName])(paramBoundsExp: PolyType => List[TypeBounds], resultTypeExp: PolyType => Type)
extends UncachedGroundType with BindingType with TermType {
- lazy val paramBounds = paramBoundsExp(this) // TODO !!! this captures context, consider forcing the vals!
- override lazy val resultType = resultTypeExp(this)
+ val paramBounds = paramBoundsExp(this)
+ override val resultType = resultTypeExp(this)
override def signature(implicit ctx: Context) = resultType.signature