SLC: merge field's static modifier setting

This commit is contained in:
Jinseong Jeon
2023-03-30 11:59:22 -07:00
committed by teamcity
parent 107b0229ef
commit 98074c4849
5 changed files with 10 additions and 25 deletions
@@ -88,8 +88,7 @@ internal class SymbolLightClassForAnonymousObject : SymbolLightClassForClassLike
createField(
propertySymbol,
nameGenerator,
isTopLevel = false,
forceStatic = false,
isStatic = false,
result,
)
}
@@ -27,7 +27,6 @@ import org.jetbrains.kotlin.fileClasses.javaFileFacadeFqName
import org.jetbrains.kotlin.light.classes.symbol.analyzeForLightClasses
import org.jetbrains.kotlin.light.classes.symbol.annotations.*
import org.jetbrains.kotlin.light.classes.symbol.cachedValue
import org.jetbrains.kotlin.light.classes.symbol.canHaveNonPrivateField
import org.jetbrains.kotlin.light.classes.symbol.fields.SymbolLightField
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.InitializedModifiersBox
import org.jetbrains.kotlin.light.classes.symbol.modifierLists.SymbolLightClassModifierList
@@ -117,15 +116,10 @@ internal class SymbolLightClassForFacade(
// If this facade represents multiple files, only `const` properties need to be generated.
if (multiFileClass && !propertySymbol.isConst) continue
val forceStatic = propertySymbol.canHaveNonPrivateField &&
propertySymbol.getter.isNullOrPublic() &&
propertySymbol.setter.isNullOrPublic()
createField(
propertySymbol,
nameGenerator,
isTopLevel = true,
forceStatic = forceStatic,
isStatic = true,
result,
)
}
@@ -113,8 +113,7 @@ abstract class SymbolLightClassForNamedClassLike : SymbolLightClassForClassLike<
fieldName = it.name.asString(),
containingClass = this,
lightMemberOrigin = null,
isTopLevel = false,
forceStatic = true,
isStatic = true,
)
}
}
@@ -362,8 +362,7 @@ context(KtAnalysisSession)
internal fun SymbolLightClassBase.createField(
declaration: KtPropertySymbol,
nameGenerator: SymbolLightField.FieldNameGenerator,
isTopLevel: Boolean,
forceStatic: Boolean,
isStatic: Boolean,
result: MutableList<KtLightField>
) {
if (!hasBackingField(declaration)) return
@@ -380,8 +379,7 @@ internal fun SymbolLightClassBase.createField(
fieldName = fieldName,
containingClass = this,
lightMemberOrigin = null,
isTopLevel = isTopLevel,
forceStatic = forceStatic,
isStatic = isStatic,
)
)
}
@@ -596,13 +594,12 @@ internal fun SymbolLightClassBase.addPropertyBackingFields(
val nameGenerator = SymbolLightField.FieldNameGenerator()
val forceStatic = symbolWithMembers is KtClassOrObjectSymbol && symbolWithMembers.classKind.isObject
val isStatic = symbolWithMembers is KtClassOrObjectSymbol && symbolWithMembers.classKind.isObject
fun addPropertyBackingField(propertySymbol: KtPropertySymbol) {
createField(
declaration = propertySymbol,
nameGenerator = nameGenerator,
isTopLevel = false,
forceStatic = forceStatic,
isStatic = isStatic,
result = result
)
}
@@ -35,8 +35,7 @@ internal class SymbolLightFieldForProperty private constructor(
private val fieldName: String,
containingClass: SymbolLightClassBase,
lightMemberOrigin: LightMemberOrigin?,
private val isTopLevel: Boolean,
private val forceStatic: Boolean,
private val isStatic: Boolean,
override val kotlinOrigin: KtCallableDeclaration?,
) : SymbolLightField(containingClass, lightMemberOrigin) {
internal constructor(
@@ -45,15 +44,13 @@ internal class SymbolLightFieldForProperty private constructor(
fieldName: String,
containingClass: SymbolLightClassBase,
lightMemberOrigin: LightMemberOrigin?,
isTopLevel: Boolean,
forceStatic: Boolean,
isStatic: Boolean,
) : this(
propertySymbolPointer = with(ktAnalysisSession) { propertySymbol.createPointer() },
fieldName = fieldName,
containingClass = containingClass,
lightMemberOrigin = lightMemberOrigin,
isTopLevel = isTopLevel,
forceStatic = forceStatic,
isStatic = isStatic,
kotlinOrigin = propertySymbol.sourcePsiSafe<KtCallableDeclaration>(),
)
@@ -120,7 +117,6 @@ internal class SymbolLightFieldForProperty private constructor(
}
PsiModifier.STATIC -> {
val isStatic = forceStatic || isTopLevel
mapOf(modifier to isStatic)
}