Skip to content

Commit 49c1bcc

Browse files
ilmirusSpace Team
authored andcommitted
JVM: Set value of propagated @JvmExposeBoxed argument to empty string
if there is no @JvmName annotation to copy the value from. #KT-78358
1 parent b7aaeec commit 49c1bcc

File tree

104 files changed

+261
-254
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

104 files changed

+261
-254
lines changed

compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/MemoizedValueClassAbstractReplacements.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,13 @@ package org.jetbrains.kotlin.backend.jvm
77

88
import org.jetbrains.kotlin.backend.jvm.ir.isInlineClassType
99
import org.jetbrains.kotlin.descriptors.Modality
10+
import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET
1011
import org.jetbrains.kotlin.ir.builders.declarations.IrFunctionBuilder
1112
import org.jetbrains.kotlin.ir.builders.declarations.buildFun
1213
import org.jetbrains.kotlin.ir.builders.declarations.buildProperty
1314
import org.jetbrains.kotlin.ir.declarations.*
1415
import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
16+
import org.jetbrains.kotlin.ir.expressions.impl.IrConstImpl
1517
import org.jetbrains.kotlin.ir.expressions.impl.IrConstructorCallImpl
1618
import org.jetbrains.kotlin.ir.expressions.impl.fromSymbolOwner
1719
import org.jetbrains.kotlin.ir.irAttribute
@@ -190,6 +192,7 @@ fun List<IrConstructorCall>.withJvmExposeBoxedAnnotation(declaration: IrDeclarat
190192
// Copy the name from @JvmName if it is present
191193
val jvmName = declaration.getAnnotation(JVM_NAME_ANNOTATION_FQ_NAME)?.arguments[0]
192194
arguments[0] = jvmName?.deepCopyWithSymbols()
195+
?: IrConstImpl.string(UNDEFINED_OFFSET, UNDEFINED_OFFSET, context.irBuiltIns.stringType, "")
193196
}
194197
}
195198

compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/ir/JvmIrUtils.kt

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -73,10 +73,9 @@ import java.lang.annotation.RetentionPolicy
7373

7474
fun IrDeclaration.getJvmNameFromAnnotation(): String? {
7575
// TODO lower @JvmName and @JvmExposeBoxed?
76-
val const = getAnnotation(DescriptorUtils.JVM_NAME)?.arguments[0] as? IrConst
77-
?: getAnnotation(JVM_EXPOSE_BOXED_ANNOTATION_FQ_NAME)?.arguments[0] as? IrConst
76+
val value = (getAnnotation(DescriptorUtils.JVM_NAME)?.arguments[0] as? IrConst)?.value as? String
77+
?: getJvmNameFromJvmExposeBoxedAnnotation()
7878
?: return null
79-
val value = const.value as? String ?: return null
8079
return when (origin) {
8180
IrDeclarationOrigin.FUNCTION_FOR_DEFAULT_PARAMETER -> "$value\$default"
8281
JvmLoweredDeclarationOrigin.FOR_INLINE_STATE_MACHINE_TEMPLATE,
@@ -85,6 +84,11 @@ fun IrDeclaration.getJvmNameFromAnnotation(): String? {
8584
}
8685
}
8786

87+
private fun IrDeclaration.getJvmNameFromJvmExposeBoxedAnnotation(): String? {
88+
val value = getAnnotation(JVM_EXPOSE_BOXED_ANNOTATION_FQ_NAME)?.arguments[0] as? IrConst ?: return null
89+
return if (value.value == "") null else value.value as? String
90+
}
91+
8892
fun IrFunction.getJvmVisibilityOfDefaultArgumentStub() =
8993
when {
9094
DescriptorVisibilities.isPrivate(visibility) || isInlineOnly() -> JavaDescriptorVisibilities.PACKAGE_VISIBILITY

compiler/testData/asJava/lightClasses/lightClassByFqName/privateInterfaceCallable.lib.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
public abstract interface MyInterface /* MyInterface*/ {
2-
@kotlin.jvm.JvmExposeBoxed()
2+
@kotlin.jvm.JvmExposeBoxed(jvmName = "")
33
private abstract java.lang.String getMangledVariable(StringWrapper);// getMangledVariable(StringWrapper)
44

5-
@kotlin.jvm.JvmExposeBoxed()
5+
@kotlin.jvm.JvmExposeBoxed(jvmName = "")
66
private abstract void mangledMethod(StringWrapper);// mangledMethod(StringWrapper)
77

8-
@kotlin.jvm.JvmExposeBoxed()
8+
@kotlin.jvm.JvmExposeBoxed(jvmName = "")
99
private abstract void setMangledVariable(StringWrapper, java.lang.String);// setMangledVariable(StringWrapper, java.lang.String)
1010

1111
@org.jetbrains.annotations.NotNull()

compiler/testData/asJava/lightClasses/lightClassByPsi/jvmExposeBoxed/companionObject.lib.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ public final class StringWrapper /* StringWrapper*/ {
66
@org.jetbrains.annotations.NotNull()
77
public static final StringWrapper.Companion Companion;
88

9-
@kotlin.jvm.JvmExposeBoxed()
9+
@kotlin.jvm.JvmExposeBoxed(jvmName = "")
1010
public StringWrapper(@org.jetbrains.annotations.NotNull() java.lang.String);// .ctor(java.lang.String)
1111

1212
@org.jetbrains.annotations.NotNull()

compiler/testData/asJava/lightClasses/lightClassByPsi/jvmExposeBoxed/constructor.lib.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,11 @@ public final class Test /* Test*/ {
3131
@org.jetbrains.annotations.NotNull()
3232
private final java.lang.String s;
3333

34-
@kotlin.jvm.JvmExposeBoxed()
34+
@kotlin.jvm.JvmExposeBoxed(jvmName = "")
3535
@org.jetbrains.annotations.NotNull()
3636
public final StringWrapper getS();// getS()
3737

38-
@kotlin.jvm.JvmExposeBoxed()
38+
@kotlin.jvm.JvmExposeBoxed(jvmName = "")
3939
public Test(@org.jetbrains.annotations.NotNull() StringWrapper);// .ctor(StringWrapper)
4040

4141
@org.jetbrains.annotations.NotNull()

compiler/testData/asJava/lightClasses/lightClassByPsi/jvmExposeBoxed/constructorBoxed.lib.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,11 @@ public final class Test /* Test*/ {
3131
@org.jetbrains.annotations.Nullable()
3232
private final StringWrapper s;
3333

34-
@kotlin.jvm.JvmExposeBoxed()
34+
@kotlin.jvm.JvmExposeBoxed(jvmName = "")
3535
@org.jetbrains.annotations.Nullable()
3636
public final StringWrapper getS();// getS()
3737

38-
@kotlin.jvm.JvmExposeBoxed()
38+
@kotlin.jvm.JvmExposeBoxed(jvmName = "")
3939
public Test(@org.jetbrains.annotations.Nullable() StringWrapper);// .ctor(StringWrapper)
4040

4141
@org.jetbrains.annotations.NotNull()

compiler/testData/asJava/lightClasses/lightClassByPsi/jvmExposeBoxed/contextAndReceiverVariable.lib.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
public final class A /* A*/ {
2-
@kotlin.jvm.JvmExposeBoxed()
2+
@kotlin.jvm.JvmExposeBoxed(jvmName = "")
33
@org.jetbrains.annotations.NotNull()
44
public final java.lang.String getF(@org.jetbrains.annotations.NotNull() Z, @org.jetbrains.annotations.NotNull() B);// getF(Z, B)
55

6-
@kotlin.jvm.JvmExposeBoxed()
6+
@kotlin.jvm.JvmExposeBoxed(jvmName = "")
77
public final void setF(@org.jetbrains.annotations.NotNull() Z, @org.jetbrains.annotations.NotNull() B, @org.jetbrains.annotations.NotNull() java.lang.String);// setF(Z, B, java.lang.String)
88

99
@org.jetbrains.annotations.NotNull()

compiler/testData/asJava/lightClasses/lightClassByPsi/jvmExposeBoxed/contextVariable.lib.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
public final class A /* A*/ {
2-
@kotlin.jvm.JvmExposeBoxed()
2+
@kotlin.jvm.JvmExposeBoxed(jvmName = "")
33
@org.jetbrains.annotations.NotNull()
44
public final java.lang.String getF(@org.jetbrains.annotations.NotNull() Z);// getF(Z)
55

6-
@kotlin.jvm.JvmExposeBoxed()
6+
@kotlin.jvm.JvmExposeBoxed(jvmName = "")
77
public final void setF(@org.jetbrains.annotations.NotNull() Z, @org.jetbrains.annotations.NotNull() java.lang.String);// setF(Z, java.lang.String)
88

99
@org.jetbrains.annotations.NotNull()

compiler/testData/asJava/lightClasses/lightClassByPsi/jvmExposeBoxed/contexts.lib.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
public final class A /* A*/ {
2-
@kotlin.jvm.JvmExposeBoxed()
2+
@kotlin.jvm.JvmExposeBoxed(jvmName = "")
33
@org.jetbrains.annotations.NotNull()
44
public final java.lang.String f(@org.jetbrains.annotations.NotNull() Z, @org.jetbrains.annotations.NotNull() Z);// f(Z, Z)
55

@@ -14,7 +14,7 @@ public final class Z /* Z*/ {
1414
@org.jetbrains.annotations.NotNull()
1515
private final java.lang.String value;
1616

17-
@kotlin.jvm.JvmExposeBoxed()
17+
@kotlin.jvm.JvmExposeBoxed(jvmName = "")
1818
public Z(@org.jetbrains.annotations.NotNull() java.lang.String);// .ctor(java.lang.String)
1919

2020
@org.jetbrains.annotations.NotNull()

compiler/testData/asJava/lightClasses/lightClassByPsi/jvmExposeBoxed/directive/companionObject.lib.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,12 @@ public final class StringWrapper /* StringWrapper*/ {
66
@org.jetbrains.annotations.NotNull()
77
public static final StringWrapper.Companion Companion;
88

9-
@kotlin.jvm.JvmExposeBoxed()
9+
@kotlin.jvm.JvmExposeBoxed(jvmName = "")
1010
@kotlin.jvm.JvmStatic()
1111
@org.jetbrains.annotations.NotNull()
1212
public static final java.lang.String unwrap(@org.jetbrains.annotations.NotNull() StringWrapper);// unwrap(StringWrapper)
1313

14-
@kotlin.jvm.JvmExposeBoxed()
14+
@kotlin.jvm.JvmExposeBoxed(jvmName = "")
1515
public StringWrapper(@org.jetbrains.annotations.NotNull() java.lang.String);// .ctor(java.lang.String)
1616

1717
@kotlin.jvm.JvmStatic()
@@ -54,16 +54,16 @@ class Companion ...
5454
}
5555

5656
public static final class Companion /* StringWrapper.Companion*/ {
57-
@kotlin.jvm.JvmExposeBoxed()
57+
@kotlin.jvm.JvmExposeBoxed(jvmName = "")
5858
@kotlin.jvm.JvmStatic()
5959
@org.jetbrains.annotations.NotNull()
6060
public final java.lang.String unwrap(@org.jetbrains.annotations.NotNull() StringWrapper);// unwrap(StringWrapper)
6161

62-
@kotlin.jvm.JvmExposeBoxed()
62+
@kotlin.jvm.JvmExposeBoxed(jvmName = "")
6363
@org.jetbrains.annotations.NotNull()
6464
public final StringWrapper getStaticVariable();// getStaticVariable()
6565

66-
@kotlin.jvm.JvmExposeBoxed()
66+
@kotlin.jvm.JvmExposeBoxed(jvmName = "")
6767
public final void setStaticVariable(@org.jetbrains.annotations.NotNull() StringWrapper);// setStaticVariable(StringWrapper)
6868

6969
@kotlin.jvm.JvmStatic()

0 commit comments

Comments
 (0)