@@ -314,9 +314,11 @@ class Synthesizer(typer: Typer)(using @constructorOnly c: Context):
314
314
case AndType (tp1, tp2) =>
315
315
orElse(productMirror(tp1, formal, span), productMirror(tp2, formal, span))
316
316
case _ =>
317
- if mirroredType.termSymbol.is(CaseVal ) then
318
- val module = mirroredType.termSymbol
319
- val modulePath = pathFor(mirroredType).withSpan(span)
317
+ val cls = mirroredType.classSymbol
318
+ if cls.isAllOf(Case | Module ) then
319
+ val module = cls.sourceModule
320
+ val moduleRef = if mirroredType.termSymbol.exists then mirroredType else module.reachableTermRef
321
+ val modulePath = pathFor(moduleRef).withSpan(span)
320
322
if module.info.classSymbol.is(Scala2x ) then
321
323
val mirrorType = mirrorCore(defn.Mirror_SingletonProxyClass , mirroredType, mirroredType, module.name, formal)
322
324
val mirrorRef = New (defn.Mirror_SingletonProxyClass .typeRef, modulePath :: Nil )
@@ -325,7 +327,6 @@ class Synthesizer(typer: Typer)(using @constructorOnly c: Context):
325
327
val mirrorType = mirrorCore(defn.Mirror_SingletonClass , mirroredType, mirroredType, module.name, formal)
326
328
withNoErrors(modulePath.cast(mirrorType))
327
329
else
328
- val cls = mirroredType.classSymbol
329
330
val acceptableMsg = whyNotAcceptableType(mirroredType, cls)
330
331
if acceptableMsg.isEmpty then
331
332
if cls.isGenericProduct then makeProductMirror(cls)
0 commit comments