KT-59325 [SLC] Fix generation of fields from companion objects

This commit is contained in:
Pavel Mikhailovskii
2023-06-22 14:48:12 +00:00
committed by Space Team
parent 190d49a1e0
commit 9f763deea1
4 changed files with 13 additions and 20 deletions
@@ -21,8 +21,8 @@ import org.jetbrains.kotlin.asJava.elements.KtLightField
import org.jetbrains.kotlin.asJava.elements.KtLightMethod import org.jetbrains.kotlin.asJava.elements.KtLightMethod
import org.jetbrains.kotlin.lexer.KtTokens import org.jetbrains.kotlin.lexer.KtTokens
import org.jetbrains.kotlin.light.classes.symbol.annotations.hasJvmStaticAnnotation import org.jetbrains.kotlin.light.classes.symbol.annotations.hasJvmStaticAnnotation
import org.jetbrains.kotlin.light.classes.symbol.fields.SymbolLightField
import org.jetbrains.kotlin.light.classes.symbol.fields.SymbolLightFieldForObject import org.jetbrains.kotlin.light.classes.symbol.fields.SymbolLightFieldForObject
import org.jetbrains.kotlin.light.classes.symbol.fields.SymbolLightFieldForProperty
import org.jetbrains.kotlin.light.classes.symbol.isConstOrJvmField import org.jetbrains.kotlin.light.classes.symbol.isConstOrJvmField
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.GranularModifiersBox import org.jetbrains.kotlin.light.classes.symbol.modifierLists.GranularModifiersBox
import org.jetbrains.kotlin.psi.KtClassOrObject import org.jetbrains.kotlin.psi.KtClassOrObject
@@ -99,6 +99,7 @@ abstract class SymbolLightClassForNamedClassLike : SymbolLightClassForClassLike<
result: MutableList<KtLightField>, result: MutableList<KtLightField>,
classOrObjectSymbol: KtNamedClassOrObjectSymbol, classOrObjectSymbol: KtNamedClassOrObjectSymbol,
) { ) {
val nameGenerator = SymbolLightField.FieldNameGenerator()
classOrObjectSymbol.companionObject classOrObjectSymbol.companionObject
?.getDeclaredMemberScope() ?.getDeclaredMemberScope()
?.getCallableSymbols() ?.getCallableSymbols()
@@ -106,14 +107,12 @@ abstract class SymbolLightClassForNamedClassLike : SymbolLightClassForClassLike<
?.applyIf(isInterface) { ?.applyIf(isInterface) {
filter { it.isConstOrJvmField } filter { it.isConstOrJvmField }
} }
?.mapTo(result) { ?.forEach {
SymbolLightFieldForProperty( createField(
ktAnalysisSession = this@KtAnalysisSession, declaration = it,
propertySymbol = it, nameGenerator = nameGenerator,
fieldName = it.name.asString(),
containingClass = this,
lightMemberOrigin = null,
isStatic = true, isStatic = true,
result = result
) )
} }
} }
@@ -2,16 +2,16 @@ public abstract interface TraitClassObjectField /* TraitClassObjectField*/ {
@org.jetbrains.annotations.NotNull() @org.jetbrains.annotations.NotNull()
public static final TraitClassObjectField.Companion Companion; public static final TraitClassObjectField.Companion Companion;
@org.jetbrains.annotations.Nullable() @org.jetbrains.annotations.NotNull()
public static final java.lang.String x = "" /* initializer type: java.lang.String */ /* constant value */; public static final java.lang.String x = "" /* initializer type: java.lang.String */ /* constant value */;
public static final class Companion /* TraitClassObjectField.Companion*/ { public static final class Companion /* TraitClassObjectField.Companion*/ {
@org.jetbrains.annotations.NotNull()
public static final java.lang.String x = "" /* initializer type: java.lang.String */ /* constant value */;
@org.jetbrains.annotations.Nullable() @org.jetbrains.annotations.Nullable()
private static final java.lang.String y; private static final java.lang.String y;
@org.jetbrains.annotations.Nullable()
public static final java.lang.String x = "" /* initializer type: java.lang.String */ /* constant value */;
private Companion();// .ctor() private Companion();// .ctor()
} }
} }
@@ -2,7 +2,7 @@
interface TraitClassObjectField { interface TraitClassObjectField {
companion object { companion object {
const val x: String? = "" const val x: String = ""
private val y: String? = { "" }() private val y: String? = { "" }()
} }
} }
@@ -1,10 +1,4 @@
public final class C /* C*/ { public final class C /* C*/ {
@org.jetbrains.annotations.NotNull()
private static java.lang.String c1;
@org.jetbrains.annotations.NotNull()
private static java.lang.String c;
@org.jetbrains.annotations.NotNull() @org.jetbrains.annotations.NotNull()
private static java.lang.String x = "" /* initializer type: java.lang.String */; private static java.lang.String x = "" /* initializer type: java.lang.String */;