@@ -22,6 +22,8 @@ import modulecheck.parsing.psi.internal.callSiteName
22
22
import modulecheck.parsing.psi.internal.getByNameOrIndex
23
23
import modulecheck.parsing.psi.internal.getChildrenOfTypeRecursive
24
24
import modulecheck.parsing.psi.internal.identifier
25
+ import modulecheck.parsing.psi.internal.isCompanionObject
26
+ import modulecheck.parsing.psi.internal.isInCompanionObject
25
27
import modulecheck.parsing.psi.internal.isJvmStatic
26
28
import modulecheck.parsing.psi.internal.isPartOf
27
29
import modulecheck.parsing.psi.internal.isPrivateOrInternal
@@ -146,18 +148,29 @@ class RealKotlinFile(
146
148
}
147
149
}
148
150
151
+ val psi = this @declaredNames
152
+
153
+ fun parseCompanionObjectDeclarations (companionName : String ) {
154
+ both(nameAsString)
155
+
156
+ if (isStatic()) {
157
+ both(nameAsString.remove(" .$companionName " ))
158
+ } else if (psi is KtCallableDeclaration ) {
159
+ kotlin(nameAsString.remove(" .$companionName " ))
160
+ }
161
+ }
162
+
149
163
when {
150
- nameAsString.contains(" .Companion" ) -> {
151
- both(nameAsString)
164
+ psi.isCompanionObject() -> {
165
+ parseCompanionObjectDeclarations(psi.name ? : " Companion" )
166
+ }
152
167
153
- if (isStatic()) {
154
- both(nameAsString.remove(" .Companion" ))
155
- } else if (this @declaredNames is KtCallableDeclaration ) {
156
- kotlin(nameAsString.remove(" .Companion" ))
157
- }
168
+ psi.isInCompanionObject() -> {
169
+ val companion = containingClassOrObject as KtObjectDeclaration
170
+ parseCompanionObjectDeclarations(companion .name ? : " Companion" )
158
171
}
159
172
160
- isTopLevelKtOrJavaMember() && this @declaredNames !is KtClassOrObject && ! isStatic() -> {
173
+ isTopLevelKtOrJavaMember() && psi !is KtClassOrObject && ! isStatic() -> {
161
174
kotlin(nameAsString)
162
175
163
176
jvmSimpleNames().forEach {
@@ -190,7 +203,7 @@ class RealKotlinFile(
190
203
191
204
val jvmNames = jvmSimpleNames()
192
205
193
- if (this @declaredNames is KtFunction && jvmNameOrNull() == null ) {
206
+ if (psi is KtFunction && psi. jvmNameOrNull() == null ) {
194
207
both(nameAsString)
195
208
} else {
196
209
kotlin(nameAsString)
@@ -204,8 +217,7 @@ class RealKotlinFile(
204
217
}
205
218
}
206
219
207
- this @declaredNames is KtParameter ||
208
- (this @declaredNames is KtProperty && ! isTopLevelKtOrJavaMember()) -> {
220
+ psi is KtParameter || (psi is KtProperty && ! psi.isTopLevelKtOrJavaMember()) -> {
209
221
210
222
kotlin(nameAsString)
211
223
0 commit comments