JVM_IR KT-45431 don't optimize out $$delegatedProperties in companion
Corresponding delegates are initialized in the host class, using '$$delegatedProperties'. TODO figure out proper code generation scheme for delegated properties in companions (KT-45580)
This commit is contained in:
committed by
TeamCityServer
parent
f6baabd98e
commit
73d4fa65ea
+5
-2
@@ -133,7 +133,10 @@ class ClassCodegen private constructor(
|
||||
irClass.functions.find { it.name.asString() == "<clinit>" }?.let { generateMethod(it, smap, delegatedPropertyOptimizer) }
|
||||
// 3. Now we have all the fields (`$$delegatedProperties` might be redundant if all reads were optimized out):
|
||||
for (field in irClass.fields) {
|
||||
if (field !== delegatedProperties || delegatedPropertyOptimizer?.needsDelegatedProperties == true) {
|
||||
if (field !== delegatedProperties ||
|
||||
delegatedPropertyOptimizer?.needsDelegatedProperties == true ||
|
||||
irClass.isCompanion
|
||||
) {
|
||||
generateField(field)
|
||||
}
|
||||
}
|
||||
@@ -326,7 +329,7 @@ class ClassCodegen private constructor(
|
||||
val (node, smap) = generateMethodNode(method)
|
||||
if (delegatedPropertyOptimizer != null) {
|
||||
delegatedPropertyOptimizer.transform(node)
|
||||
if (method.name.asString() == "<clinit>") {
|
||||
if (method.name.asString() == "<clinit>" && !irClass.isCompanion) {
|
||||
delegatedPropertyOptimizer.transformClassInitializer(node)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user