Skip to content

Commit 66d34d9

Browse files
committed
Properly erase NonEmptyTuple
1 parent 16ad11d commit 66d34d9

File tree

2 files changed

+4
-1
lines changed

2 files changed

+4
-1
lines changed

compiler/src/dotty/tools/dotc/core/Definitions.scala

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -717,6 +717,8 @@ class Definitions {
717717

718718
lazy val TupleTypeRef = ctx.requiredClassRef("scala.Tuple")
719719
def TupleClass(implicit ctx: Context) = TupleTypeRef.symbol.asClass
720+
lazy val NonEmptyTupleTypeRef = ctx.requiredClassRef("scala.NonEmptyTuple")
721+
def NonEmptyTupleClass(implicit ctx: Context) = NonEmptyTupleTypeRef.symbol.asClass
720722

721723
lazy val PairType = ctx.requiredClassRef("scala.*:")
722724
def PairClass(implicit ctx: Context) = PairType.symbol.asClass
@@ -1225,7 +1227,7 @@ class Definitions {
12251227
def isValueSubClass(sym1: Symbol, sym2: Symbol) =
12261228
valueTypeEnc(sym2.asClass.name) % valueTypeEnc(sym1.asClass.name) == 0
12271229

1228-
lazy val erasedToObject = Set[Symbol](AnyClass, AnyValClass, TupleClass, SingletonClass)
1230+
lazy val erasedToObject = Set[Symbol](AnyClass, AnyValClass, TupleClass, NonEmptyTupleClass, SingletonClass)
12291231

12301232
// ----- Initialization ---------------------------------------------------
12311233

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,7 @@ class Erasure extends Phase with DenotTransformer {
141141
assert(isErasedType(tp) ||
142142
isAllowed(defn.ArrayClass, "Array.scala") ||
143143
isAllowed(defn.TupleClass, "Tuple.scala") ||
144+
isAllowed(defn.NonEmptyTupleClass, "Tuple.scala") ||
144145
isAllowed(defn.PairClass, "Tuple.scala"),
145146
i"The type $tp - ${tp.toString} of class ${tp.getClass} of tree $tree : ${tree.tpe} / ${tree.getClass} is illegal after erasure, phase = ${ctx.phase.prev}")
146147
}

0 commit comments

Comments
 (0)