Don't generate additional annotations on synthetic accessors

This commit is contained in:
Mikhael Bogdanov
2018-09-14 11:51:43 +02:00
parent b7afb4a58e
commit 9e6637dced
4 changed files with 36 additions and 1 deletions
@@ -181,7 +181,9 @@ public abstract class AnnotationCodegen {
}
private static boolean isInvisibleFromTheOutside(@Nullable DeclarationDescriptor descriptor) {
if (descriptor instanceof CallableMemberDescriptor && KotlinTypeMapper.isAccessor((CallableMemberDescriptor) descriptor)) return false;
if (descriptor instanceof CallableMemberDescriptor && KotlinTypeMapper.isAccessor((CallableMemberDescriptor) descriptor)) {
return true;
}
if (descriptor instanceof MemberDescriptor) {
return AsmUtil.getVisibilityAccessFlag((MemberDescriptor) descriptor) == Opcodes.ACC_PRIVATE;
}
@@ -0,0 +1,10 @@
class Foo private constructor(s: String) {
private fun foo(s: String) {}
companion object {
fun foo() {
Foo("123").foo("456")
}
}
}
@@ -0,0 +1,18 @@
@kotlin.Metadata
public final class Foo$Companion {
inner class Foo$Companion
private method <init>(): void
public synthetic method <init>(p0: kotlin.jvm.internal.DefaultConstructorMarker): void
public final method foo(): void
}
@kotlin.Metadata
public final class Foo {
public final static field Companion: Foo$Companion
inner class Foo$Companion
static method <clinit>(): void
private method <init>(p0: java.lang.String): void
public synthetic method <init>(p0: java.lang.String, p1: kotlin.jvm.internal.DefaultConstructorMarker): void
public synthetic final static method access$foo(p0: Foo, p1: java.lang.String): void
private final method foo(p0: java.lang.String): void
}
@@ -205,6 +205,11 @@ public class BytecodeListingTestGenerated extends AbstractBytecodeListingTest {
runTest("compiler/testData/codegen/bytecodeListing/annotations/literals.kt");
}
@TestMetadata("noAdditionalAnnotationsInAccessors.kt")
public void testNoAdditionalAnnotationsInAccessors() throws Exception {
runTest("compiler/testData/codegen/bytecodeListing/annotations/noAdditionalAnnotationsInAccessors.kt");
}
@TestMetadata("onProperties.kt")
public void testOnProperties() throws Exception {
runTest("compiler/testData/codegen/bytecodeListing/annotations/onProperties.kt");