Skip to content

Commit a058424

Browse files
dimonchik0036Space Team
authored andcommitted
[SLC] SymbolLightClassForFacade: reduce access to visibility
1 parent 96aa067 commit a058424

File tree

1 file changed

+11
-20
lines changed

1 file changed

+11
-20
lines changed

analysis/symbol-light-classes/src/org/jetbrains/kotlin/light/classes/symbol/classes/SymbolLightClassForFacade.kt

Lines changed: 11 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,7 @@ import com.intellij.psi.impl.light.LightModifierList
1212
import org.jetbrains.annotations.NonNls
1313
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
1414
import org.jetbrains.kotlin.analysis.api.scopes.KtScope
15-
import org.jetbrains.kotlin.analysis.api.symbols.KtCallableSymbol
16-
import org.jetbrains.kotlin.analysis.api.symbols.KtFileSymbol
17-
import org.jetbrains.kotlin.analysis.api.symbols.KtFunctionSymbol
18-
import org.jetbrains.kotlin.analysis.api.symbols.KtKotlinPropertySymbol
15+
import org.jetbrains.kotlin.analysis.api.symbols.*
1916
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtAnnotatedSymbol
2017
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtSymbolWithVisibility
2118
import org.jetbrains.kotlin.analysis.project.structure.KtModule
@@ -98,8 +95,7 @@ class SymbolLightClassForFacade(
9895
if (callableSymbol !is KtFunctionSymbol && callableSymbol !is KtKotlinPropertySymbol) continue
9996
if (callableSymbol !is KtSymbolWithVisibility) continue
10097
if ((callableSymbol as? KtAnnotatedSymbol)?.hasInlineOnlyAnnotation() == true) continue
101-
val isPrivate = callableSymbol.toPsiVisibilityForMember() == PsiModifier.PRIVATE
102-
if (isPrivate && multiFileClass) continue
98+
if (multiFileClass && callableSymbol.toPsiVisibilityForMember() == PsiModifier.PRIVATE) continue
10399
yield(callableSymbol)
104100
}
105101
}
@@ -121,36 +117,31 @@ class SymbolLightClassForFacade(
121117
result: MutableList<KtLightField>
122118
) {
123119
for (propertySymbol in fileScope.getCallableSymbols()) {
124-
125120
if (propertySymbol !is KtKotlinPropertySymbol) continue
126121

127122
// If this facade represents multiple files, only `const` properties need to be generated.
128123
if (multiFileClass && !propertySymbol.isConst) continue
129124

130-
val isLateInitWithPublicAccessors = if (propertySymbol.isLateInit) {
131-
val getterIsPublic = propertySymbol.getter?.toPsiVisibilityForMember()
132-
?.let { it == PsiModifier.PUBLIC } ?: true
133-
val setterIsPublic = propertySymbol.setter?.toPsiVisibilityForMember()
134-
?.let { it == PsiModifier.PUBLIC } ?: true
135-
getterIsPublic && setterIsPublic
136-
} else false
137-
138-
val forceStaticAndPropertyVisibility = isLateInitWithPublicAccessors ||
139-
(propertySymbol.isConst) ||
140-
propertySymbol.hasJvmFieldAnnotation()
125+
val forceStaticAndPropertyVisibility = propertySymbol.isConst ||
126+
propertySymbol.hasJvmFieldAnnotation() ||
127+
propertySymbol.isLateInit &&
128+
propertySymbol.getter.isNullOrPublic() &&
129+
propertySymbol.setter.isNullOrPublic()
141130

142131
createField(
143132
propertySymbol,
144133
nameGenerator,
145134
isTopLevel = true,
146135
forceStatic = forceStaticAndPropertyVisibility,
147136
takePropertyVisibility = forceStaticAndPropertyVisibility,
148-
result
137+
result,
149138
)
150139
}
151-
152140
}
153141

142+
private fun KtPropertyAccessorSymbol?.isNullOrPublic(): Boolean =
143+
this?.toPsiVisibilityForMember()?.let { it == PsiModifier.PUBLIC } != false
144+
154145
private val _ownFields: List<KtLightField> by lazyPub {
155146
val result = mutableListOf<KtLightField>()
156147
val nameGenerator = SymbolLightField.FieldNameGenerator()

0 commit comments

Comments
 (0)