diff options
author | Martin Odersky <odersky@gmail.com> | 2013-06-12 16:30:49 +0200 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2013-06-12 16:30:49 +0200 |
commit | 27ca695e2726e4f6a9446b5e81b0755dc0fdba9b (patch) | |
tree | 9cf5adb1773cac6fc7d20c7708c302b31638e836 /src/dotty/tools/dotc/core/pickling/UnPickler.scala | |
parent | 8ad783bf633ba5f913fda84c376dcec9dabd69a9 (diff) | |
download | dotty-27ca695e2726e4f6a9446b5e81b0755dc0fdba9b.tar.gz dotty-27ca695e2726e4f6a9446b5e81b0755dc0fdba9b.tar.bz2 dotty-27ca695e2726e4f6a9446b5e81b0755dc0fdba9b.zip |
Made type parameters left leaning for AndTypes.
What did not work before:
type F[T] = G[X] & Runnable
We now make this work by interpreting type parameters of the RHS to be the type parameters of G[X].
Diffstat (limited to 'src/dotty/tools/dotc/core/pickling/UnPickler.scala')
-rw-r--r-- | src/dotty/tools/dotc/core/pickling/UnPickler.scala | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/src/dotty/tools/dotc/core/pickling/UnPickler.scala b/src/dotty/tools/dotc/core/pickling/UnPickler.scala index f35c24fd7..ea42b40a4 100644 --- a/src/dotty/tools/dotc/core/pickling/UnPickler.scala +++ b/src/dotty/tools/dotc/core/pickling/UnPickler.scala @@ -44,8 +44,21 @@ object UnPickler { */ def depoly(tp: Type, denot: SymDenotation)(implicit ctx: Context): Type = tp match { case TempPolyType(tparams, restpe) => - if (denot.isAbstractType) restpe.bounds.higherKinded(tparams) - else PolyType.fromSymbols(tparams, restpe) + if (denot.isAbstractType) + restpe.bounds.higherKinded(tparams) + else if (denot.isAliasType) { + var err: Option[(String, Position)] = None + val result = restpe.LambdaAbstract(tparams) { (msg, pos) => err = Some((msg, pos)) } + for ((msg, pos) <- err) + ctx.warning( + s"""$msg + |originally parsed type : ${tp.show} + |will be approximated by: ${result.show}. + |Proceed at own risk.""".stripMargin) + result + } + else + PolyType.fromSymbols(tparams, restpe) case tp => tp } |