diff options
author | Martin Odersky <odersky@gmail.com> | 2015-05-29 11:15:04 +0200 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2015-06-01 15:04:44 +0200 |
commit | 6cdb3d45bf2b0b9ebfad73991be37a80f0c8639f (patch) | |
tree | ae0d9e22bdc192681ece64fe0120cf9e39b8899d /src | |
parent | 4f0af8ec7916503d878712eb99a7a64ea8191bc8 (diff) | |
download | dotty-6cdb3d45bf2b0b9ebfad73991be37a80f0c8639f.tar.gz dotty-6cdb3d45bf2b0b9ebfad73991be37a80f0c8639f.tar.bz2 dotty-6cdb3d45bf2b0b9ebfad73991be37a80f0c8639f.zip |
Make ensureMethodic work after erasure.
Previously it didn't, because it created an ExprType, which is
illegal after erasure.
Diffstat (limited to 'src')
-rw-r--r-- | src/dotty/tools/dotc/core/TypeErasure.scala | 2 | ||||
-rw-r--r-- | src/dotty/tools/dotc/transform/TypeUtils.scala | 2 |
2 files changed, 2 insertions, 2 deletions
diff --git a/src/dotty/tools/dotc/core/TypeErasure.scala b/src/dotty/tools/dotc/core/TypeErasure.scala index fac795ef8..92e32d4b1 100644 --- a/src/dotty/tools/dotc/core/TypeErasure.scala +++ b/src/dotty/tools/dotc/core/TypeErasure.scala @@ -164,7 +164,7 @@ object TypeErasure { else if (sym.isConstructor) outer.addParam(sym.owner.asClass, erase(tp)(erasureCtx)) else erase.eraseInfo(tp, sym)(erasureCtx) match { case einfo: MethodType if sym.isGetter && einfo.resultType.isRef(defn.UnitClass) => - MethodType(Nil, Nil, defn.BoxedUnitClass.typeRef) + MethodType(Nil, defn.BoxedUnitClass.typeRef) case einfo => einfo } diff --git a/src/dotty/tools/dotc/transform/TypeUtils.scala b/src/dotty/tools/dotc/transform/TypeUtils.scala index c01b6478c..d474c77b4 100644 --- a/src/dotty/tools/dotc/transform/TypeUtils.scala +++ b/src/dotty/tools/dotc/transform/TypeUtils.scala @@ -29,6 +29,6 @@ class TypeUtils(val self: Type) extends AnyVal { def ensureMethodic(implicit ctx: Context): Type = self match { case self: MethodicType => self - case _ => ExprType(self) + case _ => if (ctx.erasedTypes) MethodType(Nil, self) else ExprType(self) } } |