Skip to content

Commit 2fe5bcf

Browse files
committed
Tweak performance of findRef
1 parent 0a76dcf commit 2fe5bcf

File tree

1 file changed

+10
-9
lines changed

1 file changed

+10
-9
lines changed

compiler/src/dotty/tools/dotc/typer/Typer.scala

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -503,15 +503,16 @@ class Typer extends Namer
503503
// Convert a reference `f` to an extension method select `p.f`, where
504504
// `p` is the closest enclosing extension parameter, or else convert to `this.f`.
505505
val xmethod = ctx.owner.enclosingExtensionMethod
506-
val qualifier =
507-
if xmethod.exists then untpd.ref(xmethod.extensionParam.termRef)
508-
else untpd.This(untpd.EmptyTypeIdent)
509-
val selection = untpd.cpy.Select(tree)(qualifier, name)
510-
val result = tryEither(typed(selection, pt))((_, _) => fail)
511-
def canAccessUnqualified(sym: Symbol) =
512-
sym.is(ExtensionMethod) && (sym.extensionParam.span == xmethod.extensionParam.span)
513-
if !xmethod.exists || result.tpe.isError || canAccessUnqualified(result.symbol) then
514-
result
506+
if xmethod.exists then
507+
val qualifier = untpd.ref(xmethod.extensionParam.termRef)
508+
val selection = untpd.cpy.Select(tree)(qualifier, name)
509+
val result = tryEither(typed(selection, pt))((_, _) => fail)
510+
def canAccessUnqualified(sym: Symbol) =
511+
sym.is(ExtensionMethod) && (sym.extensionParam.span == xmethod.extensionParam.span)
512+
if result.tpe.isError || canAccessUnqualified(result.symbol) then
513+
result
514+
else
515+
fail
515516
else
516517
fail
517518
else

0 commit comments

Comments
 (0)