diff --git a/docs/docs/reference/new-types/match-types.md b/docs/docs/reference/new-types/match-types.md index bcb508675020..7be51e6a09bd 100644 --- a/docs/docs/reference/new-types/match-types.md +++ b/docs/docs/reference/new-types/match-types.md @@ -67,7 +67,7 @@ use of the match type as the return type): def leafElem[X](x: X): LeafElem[X] = x match case x: String => x.charAt(0) case x: Array[t] => leafElem(x(9)) - case x: Iterable[t] => leafElem(x.next()) + case x: Iterable[t] => leafElem(x.head) case x: AnyVal => x ``` diff --git a/tests/pos/11463.scala b/tests/pos/11463.scala new file mode 100644 index 000000000000..79ac01e24c1d --- /dev/null +++ b/tests/pos/11463.scala @@ -0,0 +1,11 @@ +type LeafElem[X] = X match + case String => Char + case Array[t] => LeafElem[t] + case Iterable[t] => LeafElem[t] + case AnyVal => X + +def leafElem[X](x: X): LeafElem[X] = x match + case x: String => x.charAt(0) + case x: Array[t] => leafElem(x(9)) + case x: Iterable[t] => leafElem(x.head) + case x: AnyVal => x