From 0b82c376e771e493e4d595bf22b478790f7b5166 Mon Sep 17 00:00:00 2001 From: Martin Odersky Date: Fri, 5 Dec 2014 16:29:05 +0100 Subject: Better typing of seqLiteral in erasure. Fixed two problems with previous commit. --- src/dotty/tools/dotc/core/TypeApplications.scala | 7 +++++-- src/dotty/tools/dotc/transform/Erasure.scala | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) (limited to 'src/dotty/tools') diff --git a/src/dotty/tools/dotc/core/TypeApplications.scala b/src/dotty/tools/dotc/core/TypeApplications.scala index d00b018c8..874928fcc 100644 --- a/src/dotty/tools/dotc/core/TypeApplications.scala +++ b/src/dotty/tools/dotc/core/TypeApplications.scala @@ -367,8 +367,11 @@ class TypeApplications(val self: Type) extends AnyVal { } /** The element type of a sequence or array */ - def elemType(implicit ctx: Context): Type = - firstBaseArgInfo(defn.SeqClass) orElse firstBaseArgInfo(defn.ArrayClass) + def elemType(implicit ctx: Context): Type = self match { + case defn.ArrayType(elemtp) => elemtp + case JavaArrayType(elemtp) => elemtp + case _ => firstBaseArgInfo(defn.SeqClass) + } /** Given a type alias * diff --git a/src/dotty/tools/dotc/transform/Erasure.scala b/src/dotty/tools/dotc/transform/Erasure.scala index f27fea673..fe8f86722 100644 --- a/src/dotty/tools/dotc/transform/Erasure.scala +++ b/src/dotty/tools/dotc/transform/Erasure.scala @@ -375,7 +375,7 @@ object Erasure extends TypeTestsCasts{ } override def typedSeqLiteral(tree: untpd.SeqLiteral, pt: Type)(implicit ctx: Context) = - super.typedSeqLiteral(tree, tree.typeOpt) + super.typedSeqLiteral(tree, erasure(tree.typeOpt)) // proto type of typed seq literal is original type; this makes elements be adapted to correct type. override def typedValDef(vdef: untpd.ValDef, sym: Symbol)(implicit ctx: Context): ValDef = -- cgit v1.2.3