@@ -1765,19 +1765,24 @@ object desugar {
17651765 var selNames = pt.namedTupleElementTypes(false ).map(_(0 ))
17661766 if selNames.isEmpty && pt.classSymbol.is(CaseClass ) then
17671767 selNames = pt.classSymbol.caseAccessors.map(_.name.asTermName)
1768- val nameToIdx = selNames.zipWithIndex.toMap
1769- val reordered = Array .fill[untpd.Tree ](selNames.length):
1770- untpd.Ident (nme.WILDCARD ).withSpan(wildcardSpan)
1771- for case arg @ NamedArg (name : TermName , _) <- elems do
1772- nameToIdx.get(name) match
1773- case Some (idx) =>
1774- if reordered(idx).isInstanceOf [Ident ] then
1775- reordered(idx) = arg
1776- else
1777- report.error(em " Duplicate named pattern " , arg.srcPos)
1778- case _ =>
1779- report.error(em " No element named ` $name` is defined in selector type $pt" , arg.srcPos)
1780- reordered.toList
1768+ if selNames.isEmpty then {
1769+ report.error(NamedElementsNotDefined (pt), elems.head.srcPos)
1770+ Nil
1771+ } else {
1772+ val nameToIdx = selNames.zipWithIndex.toMap
1773+ val reordered = Array .fill[untpd.Tree ](selNames.length):
1774+ untpd.Ident (nme.WILDCARD ).withSpan(wildcardSpan)
1775+ for case arg@ NamedArg (name : TermName , _) <- elems do
1776+ nameToIdx.get(name) match
1777+ case Some (idx) =>
1778+ if reordered(idx).isInstanceOf [Ident ] then
1779+ reordered(idx) = arg
1780+ else
1781+ report.error(em " Duplicate named pattern " , arg.srcPos)
1782+ case _ =>
1783+ report.error(em " No element named ` $name` is defined in selector type $pt" , arg.srcPos)
1784+ reordered.toList
1785+ }
17811786
17821787 elems match
17831788 case (first @ NamedArg (_, _)) :: _ => reorderedNamedArgs(first.span.startPos)
0 commit comments