Skip to content

Commit bf9b0f1

Browse files
authored
Better implicit param check (#373)
1 parent d2cae7e commit bf9b0f1

File tree

1 file changed

+3
-1
lines changed

1 file changed

+3
-1
lines changed

macros/src/main/scala-3/com/softwaremill/macwire/internals/ConstructorCrimper.scala

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ private[macwire] class ConstructorCrimper[Q <: Quotes, T: Type](using val q: Q)(
1818
private def isAccessibleConstructor(s: Symbol) =
1919
s.isClassConstructor && !(s.flags is Flags.Private) && !(s.flags is Flags.Protected)
2020

21+
private def isImplicit(f: Flags): Boolean = f.is(Flags.Implicit) || f.is(Flags.Given)
22+
2123
lazy val publicConstructors: Iterable[Symbol] = {
2224
val ctors = targetType.typeSymbol.declarations
2325
.filter(isAccessibleConstructor)
@@ -96,7 +98,7 @@ private[macwire] class ConstructorCrimper[Q <: Quotes, T: Type](using val q: Q)(
9698

9799
def wireConstructorParamsWithImplicitLookups(paramLists: List[List[(Symbol, TypeRepr)]]): List[List[Term]] =
98100
paramLists.map {
99-
case params if params.forall(_._1.flags is Flags.Implicit) => params.map(resolveImplicitOrFail)
101+
case params if params.forall(p => isImplicit(p._1.flags)) => params.map(resolveImplicitOrFail)
100102
case params => params.map(p => dependencyResolver.resolve(p._1, /*SI-4751*/ p._2))
101103
}
102104

0 commit comments

Comments
 (0)