diff --git a/compiler/testData/codegen/bytecodeListing/privateDefaultSetter.kt b/compiler/testData/codegen/bytecodeListing/privateDefaultSetter.kt new file mode 100644 index 00000000000..98b0087deaf --- /dev/null +++ b/compiler/testData/codegen/bytecodeListing/privateDefaultSetter.kt @@ -0,0 +1,16 @@ +open class Test { + var publicProperty: String = "" + private set + + protected var protectedProperty: String = "" + private set + + internal var internalProperty: String = "" + private set + + fun update(i: Int) { + publicProperty = i.toString() + protectedProperty = i.toString() + internalProperty = i.toString() + } +} diff --git a/compiler/testData/codegen/bytecodeListing/privateDefaultSetter.txt b/compiler/testData/codegen/bytecodeListing/privateDefaultSetter.txt new file mode 100644 index 00000000000..9a1e05de4f5 --- /dev/null +++ b/compiler/testData/codegen/bytecodeListing/privateDefaultSetter.txt @@ -0,0 +1,11 @@ +@kotlin.Metadata +public class Test { + private @org.jetbrains.annotations.NotNull field internalProperty: java.lang.String + private @org.jetbrains.annotations.NotNull field protectedProperty: java.lang.String + private @org.jetbrains.annotations.NotNull field publicProperty: java.lang.String + public method (): void + public final @org.jetbrains.annotations.NotNull method getInternalProperty$test_module(): java.lang.String + protected final @org.jetbrains.annotations.NotNull method getProtectedProperty(): java.lang.String + public final @org.jetbrains.annotations.NotNull method getPublicProperty(): java.lang.String + public final method update(p0: int): void +} diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/BytecodeListingTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/BytecodeListingTestGenerated.java index 3be49edde6b..33cee2fe318 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/BytecodeListingTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/BytecodeListingTestGenerated.java @@ -163,6 +163,11 @@ public class BytecodeListingTestGenerated extends AbstractBytecodeListingTest { runTestWithPackageReplacement("compiler/testData/codegen/bytecodeListing/oomInReturnUnit.kt", "kotlin.coroutines"); } + @TestMetadata("privateDefaultSetter.kt") + public void testPrivateDefaultSetter() throws Exception { + runTest("compiler/testData/codegen/bytecodeListing/privateDefaultSetter.kt"); + } + @TestMetadata("privateSuspendFun.kt") public void testPrivateSuspendFun() throws Exception { runTest("compiler/testData/codegen/bytecodeListing/privateSuspendFun.kt"); diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/PropertyGenTest.java b/compiler/tests/org/jetbrains/kotlin/codegen/PropertyGenTest.java index 7e318263780..57c8a6c8bd4 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/PropertyGenTest.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/PropertyGenTest.java @@ -124,10 +124,7 @@ public class PropertyGenTest extends CodegenTestCase { getFoo.setAccessible(true); assertTrue((getFoo.getModifiers() & Modifier.PROTECTED) != 0); assertEquals(349, getFoo.invoke(instance)); - // See KT-20344 - // Method setFoo = findDeclaredMethodByName(aClass, "setFoo"); - // setFoo.setAccessible(true); - // assertTrue((setFoo.getModifiers() & Modifier.PRIVATE) != 0); + assertNull(findDeclaredMethodByNameOrNull(aClass, "setFoo")); Method setter = findDeclaredMethodByName(aClass, "setter"); setter.invoke(instance); assertEquals(610, getFoo.invoke(instance)); @@ -248,12 +245,4 @@ public class PropertyGenTest extends CodegenTestCase { assertNull("Property should not have a getter", findDeclaredMethodByNameOrNull(c, "getVarNoAccessors")); assertNull("Property should not have a setter", findDeclaredMethodByNameOrNull(c, "setVarNoAccessors")); } - - // Properties with trivial private setters should not generate their setters since - // the class will use direct field access instead for these properties. - public void testKt20344() throws Exception { - loadText("class Foo { public lateinit var x: String private set }"); - Class aClass = generateClass("Foo"); - assertNull("Property should not have generated setter", findDeclaredMethodByNameOrNull(aClass, "setX")); - } } diff --git a/libraries/tools/kotlinp/testData/SimplePackage.txt b/libraries/tools/kotlinp/testData/SimplePackage.txt index d7e8a409ff3..58ce25539ba 100644 --- a/libraries/tools/kotlinp/testData/SimplePackage.txt +++ b/libraries/tools/kotlinp/testData/SimplePackage.txt @@ -7,7 +7,6 @@ package { // field: topLevelProp:Ljava/lang/String; // getter: getTopLevelProp()Ljava/lang/String; - // setter: setTopLevelProp(Ljava/lang/String;)V public final var topLevelProp: kotlin/String? public final get private final /* non-default */ set(: kotlin/String?)