FIR2IR: bind fake overrides for classes on the fly right after member processing
#KT-57441 Fixed
This commit is contained in:
committed by
Space Team
parent
d3f1571d35
commit
9af944669a
+12
-2
@@ -259,9 +259,19 @@ class Fir2IrClassifierStorage(
|
||||
processMembersOfClassesOnTheFlyImmediately = true
|
||||
for ((klass, irClass) in localClassesCreatedOnTheFly) {
|
||||
processMembersOfClassCreatedOnTheFly(klass, irClass)
|
||||
// See the problem from KT-57441
|
||||
// class Wrapper {
|
||||
// private val dummy = object: Bar {}
|
||||
// private val bar = object: Bar by dummy {}
|
||||
// }
|
||||
// interface Bar {
|
||||
// val foo: String
|
||||
// get() = ""
|
||||
// }
|
||||
// When we are building bar.foo fake override, we should call dummy.foo,
|
||||
// so we should have object : Bar.foo fake override to be built and bound.
|
||||
converter.bindFakeOverridesInClass(irClass)
|
||||
}
|
||||
// Note: it's better to bind everything AFTER members are built, in case local classes are dependent on each other
|
||||
localClassesCreatedOnTheFly.values.forEach(converter::bindFakeOverridesInClass)
|
||||
localClassesCreatedOnTheFly.clear()
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user