Generate 'Deprecated' annotation on invisible companion object field

Design decision: if the field for a companion object should have
non-public visibility, generate it with @Deprecated annotation in
language version 1.2.

TODO: generate it with proper visibility in 1.3 and later.

KT-11567 Companion object INSTANCE field more visible than companion object class itself
This commit is contained in:
Dmitry Petrov
2017-07-18 15:25:24 +03:00
parent 951392005b
commit 891799c853
7 changed files with 143 additions and 6 deletions
@@ -0,0 +1,13 @@
// LANGUAGE_VERSION: 1.2
class TestPrivateCompanion {
private companion object Test
}
open class TestProtectedCompanion {
protected companion object Test
}
class TestInternalCompanion {
internal companion object Test
}
@@ -0,0 +1,44 @@
@kotlin.Metadata
public final class TestInternalCompanion$Test {
inner class TestInternalCompanion$Test
private method <init>(): void
public synthetic method <init>(p0: kotlin.jvm.internal.DefaultConstructorMarker): void
}
@kotlin.Metadata
public final class TestInternalCompanion {
public final static field Test: TestInternalCompanion$Test
inner class TestInternalCompanion$Test
static method <clinit>(): void
public method <init>(): void
}
@kotlin.Metadata
final class TestPrivateCompanion$Test {
inner class TestPrivateCompanion$Test
private method <init>(): void
public synthetic method <init>(p0: kotlin.jvm.internal.DefaultConstructorMarker): void
}
@kotlin.Metadata
public final class TestPrivateCompanion {
public deprecated final static @java.lang.Deprecated field Test: TestPrivateCompanion$Test
inner class TestPrivateCompanion$Test
static method <clinit>(): void
public method <init>(): void
}
@kotlin.Metadata
public final class TestProtectedCompanion$Test {
inner class TestProtectedCompanion$Test
private method <init>(): void
public synthetic method <init>(p0: kotlin.jvm.internal.DefaultConstructorMarker): void
}
@kotlin.Metadata
public class TestProtectedCompanion {
public deprecated final static @java.lang.Deprecated field Test: TestProtectedCompanion$Test
inner class TestProtectedCompanion$Test
static method <clinit>(): void
public method <init>(): void
}
@@ -0,0 +1,13 @@
// LANGUAGE_VERSION: 1.1
class TestPrivateCompanion {
private companion object Test
}
open class TestProtectedCompanion {
protected companion object Test
}
class TestInternalCompanion {
internal companion object Test
}
@@ -0,0 +1,44 @@
@kotlin.Metadata
public final class TestInternalCompanion$Test {
inner class TestInternalCompanion$Test
private method <init>(): void
public synthetic method <init>(p0: kotlin.jvm.internal.DefaultConstructorMarker): void
}
@kotlin.Metadata
public final class TestInternalCompanion {
public final static field Test: TestInternalCompanion$Test
inner class TestInternalCompanion$Test
static method <clinit>(): void
public method <init>(): void
}
@kotlin.Metadata
final class TestPrivateCompanion$Test {
inner class TestPrivateCompanion$Test
private method <init>(): void
public synthetic method <init>(p0: kotlin.jvm.internal.DefaultConstructorMarker): void
}
@kotlin.Metadata
public final class TestPrivateCompanion {
public final static field Test: TestPrivateCompanion$Test
inner class TestPrivateCompanion$Test
static method <clinit>(): void
public method <init>(): void
}
@kotlin.Metadata
public final class TestProtectedCompanion$Test {
inner class TestProtectedCompanion$Test
private method <init>(): void
public synthetic method <init>(p0: kotlin.jvm.internal.DefaultConstructorMarker): void
}
@kotlin.Metadata
public class TestProtectedCompanion {
public final static field Test: TestProtectedCompanion$Test
inner class TestProtectedCompanion$Test
static method <clinit>(): void
public method <init>(): void
}