Skip to content

Commit 97757f7

Browse files
committed
Harden NamedTuple handling against ill-formed NamedTuples
1 parent fea5fe1 commit 97757f7

File tree

2 files changed

+8
-0
lines changed

2 files changed

+8
-0
lines changed

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

+1
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ class TypeUtils {
8282
case defn.NamedTuple(nmes, vals) =>
8383
val names = nmes.tupleElementTypesUpTo(bound, normalize).getOrElse(Nil).map:
8484
case ConstantType(Constant(str: String)) => str.toTermName
85+
case t => throw TypeError(em"Malformed NamedTuple: names must be string types, but $t was found.")
8586
val values = vals.tupleElementTypesUpTo(bound, normalize).getOrElse(Nil)
8687
names.zip(values)
8788
case t =>

tests/neg/named-tuples-3.scala

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import language.experimental.namedTuples
2+
3+
def f: NamedTuple.NamedTuple[(Int, Any), (Int, String)] = ??? // error
4+
5+
type Person = (name: Int, age: String)
6+
7+
val p: Person = f

0 commit comments

Comments
 (0)