@@ -949,26 +949,28 @@ class Namer { typer: Typer =>
949
949
lazy val wildcardBound = importBound(selectors, isGiven = false )
950
950
lazy val givenBound = importBound(selectors, isGiven = true )
951
951
952
- def whyNoForwarder (mbr : SingleDenotation ): String = {
952
+ def whyNoForwarder (mbr : SingleDenotation , isSameName : Boolean ): String = {
953
953
val sym = mbr.symbol
954
- if (! sym.isAccessibleFrom(path.tpe)) " is not accessible"
955
- else if (sym.isConstructor || sym.is(ModuleClass ) || sym.is(Bridge )) SKIP
956
- else if (cls.derivesFrom(sym.owner) &&
957
- (sym.owner == cls || ! sym.is(Deferred ))) i " is already a member of $cls"
958
- else if (sym.is(Override ))
959
- sym.allOverriddenSymbols.find(
960
- other => cls.derivesFrom(other.owner) && ! other.is(Deferred )) match {
961
- case Some (other) => i " overrides ${other.showLocated}, which is already a member of $cls"
962
- case None => " "
963
- }
954
+ if ! sym.isAccessibleFrom(path.tpe) then " is not accessible"
955
+ else if sym.isConstructor || sym.is(ModuleClass ) || sym.is(Bridge ) then SKIP
956
+ else if isSameName then
957
+ if cls.derivesFrom(sym.owner) && (sym.owner == cls || ! sym.is(Deferred )) then
958
+ i " is already a member of $cls"
959
+ else if sym.is(Override ) then
960
+ sym.allOverriddenSymbols.find(
961
+ other => cls.derivesFrom(other.owner) && ! other.is(Deferred )) match {
962
+ case Some (other) => i " overrides ${other.showLocated}, which is already a member of $cls"
963
+ case None => " "
964
+ }
965
+ else " "
964
966
else " "
965
967
}
966
968
967
969
/** Add a forwarder with name `alias` or its type name equivalent to `mbr`,
968
970
* provided `mbr` is accessible and of the right implicit/non-implicit kind.
969
971
*/
970
- def addForwarder (alias : TermName , mbr : SingleDenotation , span : Span ): Unit =
971
- if (whyNoForwarder(mbr) == " " ) {
972
+ def addForwarder (alias : TermName , isSameName : Boolean , mbr : SingleDenotation , span : Span ): Unit =
973
+ if (whyNoForwarder(mbr, isSameName ) == " " ) {
972
974
val sym = mbr.symbol
973
975
val forwarder =
974
976
if mbr.isType then
@@ -1017,9 +1019,10 @@ class Namer { typer: Typer =>
1017
1019
def addForwardersNamed (name : TermName , alias : TermName , span : Span ): Unit = {
1018
1020
val size = buf.size
1019
1021
val mbrs = List (name, name.toTypeName, name.toExtensionName).flatMap(path.tpe.member(_).alternatives)
1020
- mbrs.foreach(addForwarder(alias, _, span))
1022
+ val isSameName = name == alias
1023
+ mbrs.foreach(addForwarder(alias, isSameName, _, span))
1021
1024
if (buf.size == size) {
1022
- val reason = mbrs.map(whyNoForwarder).dropWhile(_ == SKIP ) match {
1025
+ val reason = mbrs.map(whyNoForwarder(_, isSameName) ).dropWhile(_ == SKIP ) match {
1023
1026
case Nil => " "
1024
1027
case why :: _ => i " \n $path. $name cannot be exported because it $why"
1025
1028
}
@@ -1035,7 +1038,7 @@ class Namer { typer: Typer =>
1035
1038
val alias = mbr.name.toTermName
1036
1039
if ! seen.contains(alias)
1037
1040
&& mbr.matchesImportBound(if mbr.symbol.is(Given ) then givenBound else wildcardBound)
1038
- then addForwarder(alias, mbr, span)
1041
+ then addForwarder(alias, isSameName = true , mbr, span)
1039
1042
1040
1043
def addForwarders (sels : List [untpd.ImportSelector ], seen : List [TermName ]): Unit = sels match
1041
1044
case sel :: sels1 =>
0 commit comments