aboutsummaryrefslogtreecommitdiff
path: root/compiler/src/dotty/tools/dotc/core/TypeApplications.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2017-03-19 19:04:03 +0100
committerMartin Odersky <odersky@gmail.com>2017-04-06 13:15:29 +0200
commit15e60e8637887892b0c03e5f6948f1222819a746 (patch)
treec159c408a26025212d77baac11971291101d9870 /compiler/src/dotty/tools/dotc/core/TypeApplications.scala
parent8d33ca7460493427055daaecca53c66127772831 (diff)
downloaddotty-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.scala6
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 =>