@@ -2898,6 +2898,7 @@ class Typer extends Namer
28982898 def dummyArg (tp : Type ) = untpd.Ident (nme.??? ).withTypeUnchecked(tp)
28992899
29002900 def addImplicitArgs (using Context ) = {
2901+ def hasDefaultParams = methPart(tree).symbol.hasDefaultParams
29012902 def implicitArgs (formals : List [Type ], argIndex : Int , pt : Type ): List [Tree ] = formals match {
29022903 case Nil => Nil
29032904 case formal :: formals1 =>
@@ -2907,7 +2908,7 @@ class Typer extends Namer
29072908 val pt1 = pt.deepenProto
29082909 if ((pt1 `ne` pt) && constrainResult(tree.symbol, wtp, pt1)) implicitArgs(formals, argIndex, pt1)
29092910 else arg :: implicitArgs(formals1, argIndex + 1 , pt1)
2910- case failed : SearchFailureType if ! tree.symbol. hasDefaultParams =>
2911+ case failed : SearchFailureType if ! hasDefaultParams =>
29112912 // no need to search further, the adapt fails in any case
29122913 // the reason why we continue inferring arguments in case of an AmbiguousImplicits
29132914 // is that we need to know whether there are further errors.
@@ -2963,7 +2964,7 @@ class Typer extends Namer
29632964
29642965 // If method has default params, fall back to regular application
29652966 // where all inferred implicits are passed as named args.
2966- if (methPart(tree).symbol. hasDefaultParams && ! propFail.isInstanceOf [AmbiguousImplicits ]) {
2967+ if hasDefaultParams && ! propFail.isInstanceOf [AmbiguousImplicits ] then
29672968 val namedArgs = wtp.paramNames.lazyZip(args).flatMap { (pname, arg) =>
29682969 if (arg.tpe.isError) Nil else untpd.NamedArg (pname, untpd.TypedSplice (arg)) :: Nil
29692970 }
@@ -2975,7 +2976,6 @@ class Typer extends Namer
29752976 } { (_, _) =>
29762977 issueErrors()
29772978 }
2978- }
29792979 else issueErrors()
29802980 }
29812981 else tree match {
0 commit comments