Skip to content

Commit 1ce4c34

Browse files
committed
Merge pull request #265 from dotty-staging/fix/type-seqliteral
Pass right prototype to SeqLiteral elements.
2 parents 95ef88f + 0b82c37 commit 1ce4c34

File tree

2 files changed

+9
-2
lines changed

2 files changed

+9
-2
lines changed

src/dotty/tools/dotc/core/TypeApplications.scala

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -367,8 +367,11 @@ class TypeApplications(val self: Type) extends AnyVal {
367367
}
368368

369369
/** The element type of a sequence or array */
370-
def elemType(implicit ctx: Context): Type =
371-
firstBaseArgInfo(defn.SeqClass) orElse firstBaseArgInfo(defn.ArrayClass)
370+
def elemType(implicit ctx: Context): Type = self match {
371+
case defn.ArrayType(elemtp) => elemtp
372+
case JavaArrayType(elemtp) => elemtp
373+
case _ => firstBaseArgInfo(defn.SeqClass)
374+
}
372375

373376
/** Given a type alias
374377
*

src/dotty/tools/dotc/transform/Erasure.scala

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -387,6 +387,10 @@ object Erasure extends TypeTestsCasts{
387387
}
388388
}
389389

390+
override def typedSeqLiteral(tree: untpd.SeqLiteral, pt: Type)(implicit ctx: Context) =
391+
super.typedSeqLiteral(tree, erasure(tree.typeOpt))
392+
// proto type of typed seq literal is original type; this makes elements be adapted to correct type.
393+
390394
override def typedValDef(vdef: untpd.ValDef, sym: Symbol)(implicit ctx: Context): ValDef =
391395
super.typedValDef(untpd.cpy.ValDef(vdef)(
392396
tpt = untpd.TypedSplice(TypeTree(sym.info).withPos(vdef.tpt.pos))), sym)

0 commit comments

Comments
 (0)