aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/typer/Typer.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2015-10-20 16:38:16 +0200
committerMartin Odersky <odersky@gmail.com>2015-10-20 16:52:05 +0200
commit3898deafe17eaf5e96387d02c58e4cc74f90838f (patch)
tree46b81dcf586b1dc21bc841cab394bb61839ef6e7 /src/dotty/tools/dotc/typer/Typer.scala
parentcbb565a436196b102c27688d1da8f27bea12bae4 (diff)
downloaddotty-3898deafe17eaf5e96387d02c58e4cc74f90838f.tar.gz
dotty-3898deafe17eaf5e96387d02c58e4cc74f90838f.tar.bz2
dotty-3898deafe17eaf5e96387d02c58e4cc74f90838f.zip
Fix #815.
Need to handle hk-aliases specially in typedNew
Diffstat (limited to 'src/dotty/tools/dotc/typer/Typer.scala')
-rw-r--r--src/dotty/tools/dotc/typer/Typer.scala7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/dotty/tools/dotc/typer/Typer.scala b/src/dotty/tools/dotc/typer/Typer.scala
index fbdfef930..a8e615246 100644
--- a/src/dotty/tools/dotc/typer/Typer.scala
+++ b/src/dotty/tools/dotc/typer/Typer.scala
@@ -347,7 +347,12 @@ class Typer extends Namer with TypeAssigner with Applications with Implicits wit
val clsDef = TypeDef(x, templ).withFlags(Final)
typed(cpy.Block(tree)(clsDef :: Nil, New(Ident(x), Nil)), pt)
case _ =>
- val tpt1 = typedType(tree.tpt)
+ var tpt1 = typedType(tree.tpt)
+ if (tpt1.tpe.isHK) {
+ val deAliased = tpt1.tpe.dealias.EtaReduce
+ if (deAliased.exists && deAliased.ne(tpt1.tpe))
+ tpt1 = tpt1.withType(deAliased)
+ }
checkClassTypeWithStablePrefix(tpt1.tpe, tpt1.pos, traitReq = false)
assignType(cpy.New(tree)(tpt1), tpt1)
// todo in a later phase: checkInstantiatable(cls, tpt1.pos)