diff options
author | Martin Odersky <odersky@gmail.com> | 2017-03-19 19:04:03 +0100 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2017-04-06 13:15:29 +0200 |
commit | 15e60e8637887892b0c03e5f6948f1222819a746 (patch) | |
tree | c159c408a26025212d77baac11971291101d9870 /compiler/src/dotty/tools/dotc/core/TypeApplications.scala | |
parent | 8d33ca7460493427055daaecca53c66127772831 (diff) | |
download | dotty-15e60e8637887892b0c03e5f6948f1222819a746.tar.gz dotty-15e60e8637887892b0c03e5f6948f1222819a746.tar.bz2 dotty-15e60e8637887892b0c03e5f6948f1222819a746.zip |
Narrow matches from TypeLambda to HKTypeLambda where appropriate
Diffstat (limited to 'compiler/src/dotty/tools/dotc/core/TypeApplications.scala')
-rw-r--r-- | compiler/src/dotty/tools/dotc/core/TypeApplications.scala | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/compiler/src/dotty/tools/dotc/core/TypeApplications.scala b/compiler/src/dotty/tools/dotc/core/TypeApplications.scala index 1882489a5..23c3f96cc 100644 --- a/compiler/src/dotty/tools/dotc/core/TypeApplications.scala +++ b/compiler/src/dotty/tools/dotc/core/TypeApplications.scala @@ -215,7 +215,7 @@ class TypeApplications(val self: Type) extends AnyVal { self match { case self: ClassInfo => self.cls.typeParams - case self: TypeLambda => + case self: HKTypeLambda => self.typeParams case self: TypeRef => val tsym = self.symbol @@ -386,7 +386,7 @@ class TypeApplications(val self: Type) extends AnyVal { val dealiased = stripped.safeDealias if (args.isEmpty || ctx.erasedTypes) self else dealiased match { - case dealiased: TypeLambda => + case dealiased: HKTypeLambda => def tryReduce = if (!args.exists(_.isInstanceOf[TypeBounds])) { val followAlias = Config.simplifyApplications && { @@ -414,6 +414,8 @@ class TypeApplications(val self: Type) extends AnyVal { else HKApply(dealiased, args) } tryReduce + case dealiased: PolyType => + dealiased.instantiate(args) case dealiased: AndOrType => dealiased.derivedAndOrType(dealiased.tp1.appliedTo(args), dealiased.tp2.appliedTo(args)) case dealiased: TypeAlias => |