@@ -1175,20 +1175,21 @@ class Namer { typer: Typer =>
11751175 Yes
11761176 }
11771177
1178- def foreachDefaultGetterOf (sym : TermSymbol , op : TermSymbol => Unit ): Unit =
1178+ def foreachDefaultGetterOf (sym : TermSymbol , alias : TermName )( op : ( TermSymbol , TermName ) => Unit ): Unit =
11791179 var n = 0
1180- val methodName =
1181- if sym.name == nme.apply && sym.is(Synthetic ) && sym.owner.companionClass.is(Case ) then
1182- // The synthesized `apply` methods of case classes use the constructor's default getters
1183- nme.CONSTRUCTOR
1184- else sym.name
1180+ // The synthesized `apply` methods of case classes use the constructor's default getters
1181+ val useConstructor = sym.name == nme.apply && sym.is(Synthetic ) && sym.owner.companionClass.is(Case )
1182+ val methodName = if useConstructor then nme. CONSTRUCTOR else sym.name
1183+ val aliasedName = if useConstructor then nme.CONSTRUCTOR else alias
1184+ val useAliased = ! useConstructor && methodName != aliasedName
11851185 for params <- sym.paramSymss; param <- params do
11861186 if param.isTerm then
11871187 if param.is(HasDefault ) then
11881188 val getterName = DefaultGetterName (methodName, n)
11891189 val getter = pathType.member(getterName).symbol
11901190 assert(getter.exists, i " $path does not have a default getter named $getterName" )
1191- op(getter.asTerm)
1191+ val targetName = if useAliased then DefaultGetterName (aliasedName, n) else getterName
1192+ op(getter.asTerm, targetName)
11921193 n += 1
11931194
11941195 /** 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.isUnimport 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