@@ -3592,26 +3592,17 @@ class Typer extends Namer
3592
3592
3593
3593
/** Convert constructor proxy reference to a new expression */
3594
3594
def newExpr =
3595
- def recur (tpt : Tree , pt : Type ): Tree = pt.revealIgnored match
3596
- case PolyProto (targs, pt1) =>
3597
- if targs.exists(_.isInstanceOf [NamedArg ]) then
3598
- errorTree(tpt, " Named type argument not allowed in constructor application" )
3599
- else
3600
- IntegratedTypeArgs (recur(AppliedTypeTree (tpt, targs), pt1))
3601
- case _ =>
3602
- typed(untpd.Select (untpd.New (untpd.TypedSplice (tpt)), nme.CONSTRUCTOR ), pt)
3603
-
3604
- tree match
3605
- case Select (qual, nme.apply) =>
3606
- val tycon = tree.tpe.widen.finalResultType.underlyingClassRef(refinementOK = false )
3607
- val tpt = qual match
3608
- case Ident (name) => cpy.Ident (qual)(name.toTypeName)
3609
- case Select (pre, name) => cpy.Select (qual)(pre, name.toTypeName)
3610
- recur(tpt.withType(tycon), pt)
3611
- .showing(i " convert creator $tree -> $result" , typr)
3612
- case _ =>
3613
- throw AssertionError (i " bad case for newExpr: $tree, $pt" )
3614
- end newExpr
3595
+ val Select (qual, nme.apply) = tree; @ unchecked
3596
+ val tycon = tree.tpe.widen.finalResultType.underlyingClassRef(refinementOK = false )
3597
+ val tpt = qual match
3598
+ case Ident (name) => cpy.Ident (qual)(name.toTypeName)
3599
+ case Select (pre, name) => cpy.Select (qual)(pre, name.toTypeName)
3600
+ typed(
3601
+ untpd.Select (
3602
+ untpd.New (untpd.TypedSplice (tpt.withType(tycon))),
3603
+ nme.CONSTRUCTOR ),
3604
+ pt)
3605
+ .showing(i " convert creator $tree -> $result" , typr)
3615
3606
3616
3607
tree match {
3617
3608
case _ : MemberDef | _ : PackageDef | _ : Import | _ : WithoutTypeOrPos [? ] | _ : Closure => tree
0 commit comments