Skip to content

Commit 762e1b4

Browse files
committed
Fix #1169: Fix strange type formatting in error message
We already generate an error message for i1169.scala, but it looked weird: |bridge generated for member method produce=> X in class XProducer |which overrides method produce=> T in trait Producer |clashes with definition of the member itself; both have erased type (): Object. The fix changes how ExprTypes in method signatures are handled. We now get: |bridge generated for member method produce: X in class XProducer |which overrides method produce: T in trait Producer |clashes with definition of the member itself; both have erased type (): Object."
1 parent 5b1b747 commit 762e1b4

File tree

2 files changed

+16
-1
lines changed

2 files changed

+16
-1
lines changed

compiler/src/dotty/tools/dotc/transform/Bridges.scala

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,13 @@ class Bridges(root: ClassSymbol)(implicit ctx: Context) {
5656
bridgesScope.lookupAll(member.name).exists(bridge =>
5757
bridgeTarget(bridge) == member && bridge.signature == other.signature)
5858
def info(sym: Symbol)(implicit ctx: Context) = sym.info
59-
def desc(sym: Symbol)= i"$sym${info(sym)(preErasureCtx)} in ${sym.owner}"
59+
def desc(sym: Symbol)= {
60+
val infoStr = info(sym)(preErasureCtx) match {
61+
case ExprType(info) => i": $info"
62+
case info => info.show
63+
}
64+
i"$sym$infoStr in ${sym.owner}"
65+
}
6066
if (member.signature == other.signature) {
6167
if (!member.info.matches(other.info))
6268
ctx.error(em"""bridge generated for member ${desc(member)}

tests/neg/i1169.scala

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
class X(val underlying: Object) extends AnyVal
2+
3+
trait Producer[T] {
4+
def produce: T
5+
}
6+
7+
class XProducer extends Producer[X] {
8+
def produce = new X(null)
9+
}

0 commit comments

Comments
 (0)