@@ -1176,20 +1176,21 @@ class Namer { typer: Typer =>
11761176 Yes
11771177 }
11781178
1179- def foreachDefaultGetterOf (sym : TermSymbol , op : TermSymbol => Unit ): Unit =
1179+ def foreachDefaultGetterOf (sym : TermSymbol , alias : TermName )( op : ( TermSymbol , TermName ) => Unit ): Unit =
11801180 var n = 0
1181- val methodName =
1182- if sym.name == nme.apply && sym.is(Synthetic ) && sym.owner.companionClass.is(Case ) then
1183- // The synthesized `apply` methods of case classes use the constructor's default getters
1184- nme.CONSTRUCTOR
1185- else sym.name
1181+ // The synthesized `apply` methods of case classes use the constructor's default getters
1182+ val useConstructor = sym.name == nme.apply && sym.is(Synthetic ) && sym.owner.companionClass.is(Case )
1183+ val methodName = if useConstructor then nme. CONSTRUCTOR else sym.name
1184+ val aliasedName = if useConstructor then nme.CONSTRUCTOR else alias
1185+ val useAliased = ! useConstructor && methodName != aliasedName
11861186 for params <- sym.paramSymss; param <- params do
11871187 if param.isTerm then
11881188 if param.is(HasDefault ) then
11891189 val getterName = DefaultGetterName (methodName, n)
11901190 val getter = pathType.member(getterName).symbol
11911191 assert(getter.exists, i " $path does not have a default getter named $getterName" )
1192- op(getter.asTerm)
1192+ val targetName = if useAliased then DefaultGetterName (aliasedName, n) else getterName
1193+ op(getter.asTerm, targetName)
11931194 n += 1
11941195
11951196 /** Add a forwarder with name `alias` or its type name equivalent to `mbr`,
@@ -1310,9 +1311,8 @@ class Namer { typer: Typer =>
13101311 })
13111312 buf += ddef.withSpan(span)
13121313 if hasDefaults then
1313- foreachDefaultGetterOf(sym.asTerm,
1314- getter => addForwarder(
1315- getter.name.asTermName, getter.asSeenFrom(path.tpe), span))
1314+ foreachDefaultGetterOf(sym.asTerm, alias): (getter, getterName) =>
1315+ addForwarder(getterName, getter.asSeenFrom(path.tpe), span)
13161316
13171317 // adding annotations and flags at the parameter level
13181318 // TODO: This probably needs to be filtered to avoid adding some annotation
@@ -1367,13 +1367,13 @@ class Namer { typer: Typer =>
13671367 addWildcardForwardersNamed(alias, span)
13681368
13691369 def addForwarders (sels : List [untpd.ImportSelector ], seen : List [TermName ]): Unit = sels match
1370- case sel :: sels1 =>
1370+ case sel :: sels =>
13711371 if sel.isWildcard then
13721372 addWildcardForwarders(seen, sel.span)
13731373 else
13741374 if sel.rename != nme.WILDCARD then
13751375 addForwardersNamed(sel.name, sel.rename, sel.span)
1376- addForwarders(sels1 , sel.name :: seen)
1376+ addForwarders(sels , sel.name :: seen)
13771377 case _ =>
13781378
13791379 /** Avoid a clash of export forwarder `forwarder` with other forwarders in `forwarders`.
0 commit comments