Skip to content

Commit c1f2338

Browse files
committed
Run type inference before implicit search
1 parent 05b102a commit c1f2338

File tree

1 file changed

+5
-4
lines changed

1 file changed

+5
-4
lines changed

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

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4250,13 +4250,14 @@ class Typer(@constructorOnly nestingLevel: Int = 0) extends Namer
42504250
else formals1
42514251
implicitArgs(formals2, argIndex + 1, pt)
42524252

4253+
val pt1 = pt.deepenProtoTrans
4254+
if ((pt1 `ne` pt) && (pt1 ne sharpenedPt) && constrainResult(tree.symbol, wtp, pt1)) {
4255+
return implicitArgs(formals, argIndex, pt1)
4256+
}
42534257
val arg = inferImplicitArg(formal, tree.span.endPos)
42544258
arg.tpe match
42554259
case failed: AmbiguousImplicits =>
4256-
val pt1 = pt.deepenProtoTrans
4257-
if (pt1 `ne` pt) && (pt1 ne sharpenedPt) && constrainResult(tree.symbol, wtp, pt1)
4258-
then implicitArgs(formals, argIndex, pt1)
4259-
else arg :: implicitArgs(formals1, argIndex + 1, pt1)
4260+
arg :: implicitArgs(formals1, argIndex + 1, pt1)
42604261
case failed: SearchFailureType =>
42614262
lazy val defaultArg = findDefaultArgument(argIndex)
42624263
.showing(i"default argument: for $formal, $tree, $argIndex = $result", typr)

0 commit comments

Comments
 (0)