Skip to content

Commit f24fd9f

Browse files
authored
Merge pull request #9214 from dotty-staging/fix-#9207
Fix #9207: Properly erase self type of classes
2 parents f5a0371 + 36799fa commit f24fd9f

File tree

2 files changed

+11
-1
lines changed

2 files changed

+11
-1
lines changed

compiler/src/dotty/tools/dotc/core/TypeErasure.scala

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -499,7 +499,8 @@ class TypeErasure(isJava: Boolean, semiEraseVCs: Boolean, isConstructor: Boolean
499499
case nil => nil
500500
}
501501
val erasedDecls = decls.filteredScope(sym => !sym.isType || sym.isClass)
502-
tp.derivedClassInfo(NoPrefix, erasedParents, erasedDecls, erasedRef(tp.selfType))
502+
val selfType1 = if cls.is(Module) then cls.sourceModule.termRef else NoType
503+
tp.derivedClassInfo(NoPrefix, erasedParents, erasedDecls, selfType1)
503504
// can't replace selftype by NoType because this would lose the sourceModule link
504505
}
505506
case _: ErrorType | JavaArrayType(_) =>

tests/pos/i9207.scala

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
class Child
2+
class HelloTest {
3+
def simpleTest(): Unit = {
4+
trait Parent {
5+
this: Child =>
6+
final def bar: Int = bar
7+
}
8+
}
9+
}

0 commit comments

Comments
 (0)