aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2015-06-19 23:08:11 +0200
committerMartin Odersky <odersky@gmail.com>2015-06-19 23:08:11 +0200
commit4a3be27db24c8a28da88d9a79d547849a7b28c2f (patch)
treeb17bf7329f2ac95f96328d3a14bcb2d5d329f038
parentbb75d4039ee127dfee2630609924f7f3c9132ff6 (diff)
downloaddotty-4a3be27db24c8a28da88d9a79d547849a7b28c2f.tar.gz
dotty-4a3be27db24c8a28da88d9a79d547849a7b28c2f.tar.bz2
dotty-4a3be27db24c8a28da88d9a79d547849a7b28c2f.zip
The expected type of a constructor body is Unit
Thsi was not true for erased typechecking.
-rw-r--r--src/dotty/tools/dotc/transform/Erasure.scala4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/dotty/tools/dotc/transform/Erasure.scala b/src/dotty/tools/dotc/transform/Erasure.scala
index 1664db456..962297517 100644
--- a/src/dotty/tools/dotc/transform/Erasure.scala
+++ b/src/dotty/tools/dotc/transform/Erasure.scala
@@ -479,7 +479,9 @@ object Erasure extends TypeTestsCasts{
val MethodType(pnames, ptypes) = sym.info.resultType
effectiveSym = sym.copy(info = MethodType(pnames, ptypes, defn.ObjectType))
}
- val restpe = effectiveSym.info.resultType
+ val restpe =
+ if (effectiveSym.isConstructor) defn.UnitType
+ else effectiveSym.info.resultType
val ddef1 = untpd.cpy.DefDef(ddef)(
tparams = Nil,
vparamss = (outer.paramDefs(effectiveSym) ::: ddef.vparamss.flatten) :: Nil,