diff options
author | Martin Odersky <odersky@gmail.com> | 2009-03-31 18:35:16 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2009-03-31 18:35:16 +0000 |
commit | 68bcc9e7c6fff8d2292527440fa0fe65ef8bdff2 (patch) | |
tree | 0e94200baeccd3106174aa6adf0aa152c20a6692 /src/compiler/scala/tools/nsc/typechecker/RefChecks.scala | |
parent | 79c1f9882a31a833bb02ecbbdfdcb6ca61d2c522 (diff) | |
download | scala-68bcc9e7c6fff8d2292527440fa0fe65ef8bdff2.tar.gz scala-68bcc9e7c6fff8d2292527440fa0fe65ef8bdff2.tar.bz2 scala-68bcc9e7c6fff8d2292527440fa0fe65ef8bdff2.zip |
Suppresses variance checking in type aliases; e...
Suppresses variance checking in type aliases; exapnds all type aliases
instead.
Diffstat (limited to 'src/compiler/scala/tools/nsc/typechecker/RefChecks.scala')
-rw-r--r-- | src/compiler/scala/tools/nsc/typechecker/RefChecks.scala | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/RefChecks.scala b/src/compiler/scala/tools/nsc/typechecker/RefChecks.scala index 28fea81d03..360ab6d09d 100644 --- a/src/compiler/scala/tools/nsc/typechecker/RefChecks.scala +++ b/src/compiler/scala/tools/nsc/typechecker/RefChecks.scala @@ -436,7 +436,7 @@ abstract class RefChecks extends InfoTransform { sym.isTerm && ((sym.isPrivateLocal || sym.isProtectedLocal) && !(escapedPrivateLocals contains sym))) state = AnyVariance else if (sym.isAliasType) - state = NoVariance + state = AnyVariance // was NoVariance, but now we always expand aliases. sym = sym.owner } state @@ -453,7 +453,9 @@ abstract class RefChecks extends InfoTransform { case SingleType(pre, sym) => validateVariance(pre, variance) case TypeRef(pre, sym, args) => - if (sym.variance != NoVariance) { + if (sym.isAliasType) + validateVariance(tp.normalize, variance) + else if (sym.variance != NoVariance) { val v = relativeVariance(sym); if (v != AnyVariance && sym.variance != v * variance) { //Console.println("relativeVariance(" + base + "," + sym + ") = " + v);//DEBUG |