@@ -12,10 +12,7 @@ import com.intellij.psi.impl.light.LightModifierList
12
12
import org.jetbrains.annotations.NonNls
13
13
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
14
14
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.*
19
16
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtAnnotatedSymbol
20
17
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtSymbolWithVisibility
21
18
import org.jetbrains.kotlin.analysis.project.structure.KtModule
@@ -98,8 +95,7 @@ class SymbolLightClassForFacade(
98
95
if (callableSymbol !is KtFunctionSymbol && callableSymbol !is KtKotlinPropertySymbol ) continue
99
96
if (callableSymbol !is KtSymbolWithVisibility ) continue
100
97
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
103
99
yield (callableSymbol)
104
100
}
105
101
}
@@ -121,36 +117,31 @@ class SymbolLightClassForFacade(
121
117
result : MutableList <KtLightField >
122
118
) {
123
119
for (propertySymbol in fileScope.getCallableSymbols()) {
124
-
125
120
if (propertySymbol !is KtKotlinPropertySymbol ) continue
126
121
127
122
// If this facade represents multiple files, only `const` properties need to be generated.
128
123
if (multiFileClass && ! propertySymbol.isConst) continue
129
124
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()
141
130
142
131
createField(
143
132
propertySymbol,
144
133
nameGenerator,
145
134
isTopLevel = true ,
146
135
forceStatic = forceStaticAndPropertyVisibility,
147
136
takePropertyVisibility = forceStaticAndPropertyVisibility,
148
- result
137
+ result,
149
138
)
150
139
}
151
-
152
140
}
153
141
142
+ private fun KtPropertyAccessorSymbol?.isNullOrPublic (): Boolean =
143
+ this ?.toPsiVisibilityForMember()?.let { it == PsiModifier .PUBLIC } != false
144
+
154
145
private val _ownFields : List <KtLightField > by lazyPub {
155
146
val result = mutableListOf<KtLightField >()
156
147
val nameGenerator = SymbolLightField .FieldNameGenerator ()
0 commit comments