Skip to content

Commit e91f7ac

Browse files
authored
Don't register companion class from const val property (#251)
Fixes #250
1 parent 037e784 commit e91f7ac

File tree

3 files changed

+27
-3
lines changed

3 files changed

+27
-3
lines changed

src/main/kotlin/api/KotlinSignaturesLoading.kt

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -127,11 +127,11 @@ private fun FieldNode.buildFieldSignature(
127127
foundAnnotations.addAll(companionClass?.visibleAnnotations.orEmpty())
128128
foundAnnotations.addAll(companionClass?.invisibleAnnotations.orEmpty())
129129
} else if (isStatic(access) && isFinal(access)) {
130-
companionClass = ownerClass.companionName(ownerClass.kotlinMetadata)?.let {
130+
val companionClassCandidate = ownerClass.companionName(ownerClass.kotlinMetadata)?.let {
131131
classes[it]
132132
}
133133

134-
val property = companionClass?.kmProperty(name)
134+
val property = companionClassCandidate?.kmProperty(name)
135135

136136
if (property != null && JvmFlag.Property.IS_MOVED_FROM_INTERFACE_COMPANION(property.flags)) {
137137
/*
@@ -140,7 +140,11 @@ private fun FieldNode.buildFieldSignature(
140140
*
141141
* See https://github.com/Kotlin/binary-compatibility-validator/issues/90
142142
*/
143-
foundAnnotations.addAll(companionClass!!.methods.annotationsFor(property.syntheticMethodForAnnotations))
143+
foundAnnotations.addAll(
144+
companionClassCandidate.methods.annotationsFor(
145+
property.syntheticMethodForAnnotations
146+
)
147+
)
144148
}
145149
}
146150

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
/*
2+
* Copyright 2016-2024 JetBrains s.r.o.
3+
* Use of this source code is governed by the Apache 2.0 License that can be found in the LICENSE.txt file.
4+
*/
5+
6+
package cases.enums
7+
8+
public enum class EnumWithInternalCompanion {
9+
A, B;
10+
11+
internal companion object
12+
}

src/test/kotlin/cases/enums/enums.txt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,14 @@ public final class cases/enums/EnumClass : java/lang/Enum {
1111
public static fun values ()[Lcases/enums/EnumClass;
1212
}
1313

14+
public final class cases/enums/EnumWithInternalCompanion : java/lang/Enum {
15+
public static final field A Lcases/enums/EnumWithInternalCompanion;
16+
public static final field B Lcases/enums/EnumWithInternalCompanion;
17+
public static fun getEntries ()Lkotlin/enums/EnumEntries;
18+
public static fun valueOf (Ljava/lang/String;)Lcases/enums/EnumWithInternalCompanion;
19+
public static fun values ()[Lcases/enums/EnumWithInternalCompanion;
20+
}
21+
1422
public final class cases/enums/JavaEnum : java/lang/Enum {
1523
public static final field JA Lcases/enums/JavaEnum;
1624
public static final field JB Lcases/enums/JavaEnum;

0 commit comments

Comments
 (0)