@@ -3348,11 +3348,8 @@ class Typer extends Namer
33483348 // implicit conversion to the receiver type.
33493349 def sharpenedPt = pt match
33503350 case pt : SelectionProto
3351- if pt.name.isExtensionName
3352- || pt.memberProto.revealIgnored.isExtensionApplyProto =>
3353- pt.deepenProto
3354- case _ =>
3355- pt
3351+ if pt.memberProto.revealIgnored.isExtensionApplyProto => pt.deepenProto
3352+ case _ => pt
33563353
33573354 def adaptNoArgs (wtp : Type ): Tree = {
33583355 val ptNorm = underlyingApplied(pt)
@@ -3499,24 +3496,27 @@ class Typer extends Namer
34993496 // try an extension method in scope
35003497 pt match {
35013498 case selProto @ SelectionProto (selName : TermName , mbrType, _, _) =>
3499+
35023500 def tryExtension (using Context ): Tree =
3503- try
3504- findRef(selName, WildcardType , ExtensionMethod , EmptyFlags , tree.srcPos) match
3505- case ref : TermRef =>
3506- extMethodApply(untpd.ref(ref).withSpan(tree.span), tree, mbrType)
3507- case _ => findRef(selProto.extensionName, WildcardType , ExtensionMethod , EmptyFlags , tree.srcPos) match
3508- case ref : TermRef =>
3509- extMethodApply(untpd.ref(ref).withSpan(tree.span), tree, mbrType)
3510- case _ => EmptyTree
3511- catch case ex : TypeError => errorTree(tree, ex, tree.srcPos)
3512- val nestedCtx = ctx.fresh.setNewTyperState()
3513- val app = tryExtension(using nestedCtx)
3514- if (! app.isEmpty && ! nestedCtx.reporter.hasErrors) {
3515- nestedCtx.typerState.commit()
3516- return ExtMethodApply (app)
3517- }
3518- else if ! app.isEmpty then
3519- rememberSearchFailure(tree, SearchFailure (app.withType(FailedExtension (app, pt))))
3501+ findRef(selName, WildcardType , ExtensionMethod , EmptyFlags , tree.srcPos) match
3502+ case ref : TermRef =>
3503+ extMethodApply(untpd.ref(ref).withSpan(tree.span), tree, mbrType)
3504+ case _ =>
3505+ EmptyTree
3506+
3507+ try
3508+ val nestedCtx = ctx.fresh.setNewTyperState()
3509+ val app = tryExtension(using nestedCtx)
3510+ if ! app.isEmpty && ! nestedCtx.reporter.hasErrors then
3511+ nestedCtx.typerState.commit()
3512+ return ExtMethodApply (app)
3513+ else
3514+ for err <- nestedCtx.reporter.allErrors.take(1 ) do
3515+ rememberSearchFailure(tree,
3516+ SearchFailure (app.withType(FailedExtension (app, pt, err.msg))))
3517+ catch case ex : TypeError =>
3518+ rememberSearchFailure(tree,
3519+ SearchFailure (tree.withType(NestedFailure (ex.toMessage, pt))))
35203520 case _ =>
35213521 }
35223522
0 commit comments