KT-56457 Annotate Enum.entries with @NotNull

This commit is contained in:
Pavel Mikhailovskii
2023-02-09 20:13:56 +00:00
committed by Space Team
parent 88b07f5287
commit 4c7f8ba196
30 changed files with 51 additions and 18 deletions
@@ -74,7 +74,7 @@ class FunctionCodegen(private val irFunction: IrFunction, private val classCodeg
generateParameterNames(irFunction, methodVisitor, context.state)
}
if (irFunction.origin !in methodOriginsWithoutAnnotations) {
if (irFunction.isWithAnnotations) {
val skipNullabilityAnnotations = flags and Opcodes.ACC_PRIVATE != 0 || flags and Opcodes.ACC_SYNTHETIC != 0
object : AnnotationCodegen(classCodegen, skipNullabilityAnnotations) {
override fun visitAnnotation(descr: String, visible: Boolean): AnnotationVisitor {
@@ -306,13 +306,12 @@ class FunctionCodegen(private val irFunction: IrFunction, private val classCodeg
}
companion object {
internal val methodOriginsWithoutAnnotations =
private val methodOriginsWithoutAnnotations =
setOf(
// Not generating parameter annotations for default stubs fixes KT-7892, though
// this certainly looks like a workaround for a javac bug.
IrDeclarationOrigin.FUNCTION_FOR_DEFAULT_PARAMETER,
JvmLoweredDeclarationOrigin.SYNTHETIC_ACCESSOR,
IrDeclarationOrigin.ENUM_CLASS_SPECIAL_MEMBER,
IrDeclarationOrigin.GENERATED_SINGLE_FIELD_VALUE_CLASS_MEMBER,
IrDeclarationOrigin.BRIDGE,
IrDeclarationOrigin.BRIDGE_SPECIAL,
@@ -321,6 +320,13 @@ class FunctionCodegen(private val irFunction: IrFunction, private val classCodeg
IrDeclarationOrigin.IR_BUILTINS_STUB,
IrDeclarationOrigin.PROPERTY_DELEGATE,
)
private val IrFunction.isWithAnnotations: Boolean
get() = when (origin) {
in methodOriginsWithoutAnnotations -> false
IrDeclarationOrigin.ENUM_CLASS_SPECIAL_MEMBER -> name.asString() == "<get-entries>"
else -> true
}
}
}
@@ -15,7 +15,7 @@ public final enum class E {
private synthetic final static method $values(): E[]
static method <clinit>(): void
private method <init>(p0: java.lang.String, p1: int): void
public static method getEntries(): kotlin.enums.EnumEntries
public static @org.jetbrains.annotations.NotNull method getEntries(): kotlin.enums.EnumEntries
public static method valueOf(p0: java.lang.String): E
public static method values(): E[]
}
@@ -15,7 +15,7 @@ public final enum class E {
private synthetic final static method $values(): E[]
static method <clinit>(): void
private method <init>(p0: java.lang.String, p1: int): void
public static method getEntries(): kotlin.enums.EnumEntries
public static @org.jetbrains.annotations.NotNull method getEntries(): kotlin.enums.EnumEntries
public static method valueOf(p0: java.lang.String): E
public static method values(): E[]
}
@@ -20,7 +20,7 @@ public final enum class E {
private synthetic final static method $values(): E[]
static method <clinit>(): void
private method <init>(p0: java.lang.String, p1: int): void
public static method getEntries(): kotlin.enums.EnumEntries
public static @org.jetbrains.annotations.NotNull method getEntries(): kotlin.enums.EnumEntries
public static method valueOf(p0: java.lang.String): E
public static method values(): E[]
}
@@ -29,7 +29,7 @@ public final enum class E {
private synthetic final static method $values(): E[]
static method <clinit>(): void
private method <init>(p0: java.lang.String, p1: int): void
public static method getEntries(): kotlin.enums.EnumEntries
public static @org.jetbrains.annotations.NotNull method getEntries(): kotlin.enums.EnumEntries
public static method valueOf(p0: java.lang.String): E
public static method values(): E[]
}
@@ -17,7 +17,7 @@ public final enum class E {
private synthetic final static method $values(): E[]
static method <clinit>(): void
private method <init>(p0: java.lang.String, p1: int): void
public static method getEntries(): kotlin.enums.EnumEntries
public static @org.jetbrains.annotations.NotNull method getEntries(): kotlin.enums.EnumEntries
public static method valueOf(p0: java.lang.String): E
public static method values(): E[]
public final inner class E$Companion
@@ -10,7 +10,7 @@ public final enum class Test {
private synthetic final static method $values(): Test[]
static method <clinit>(): void
private method <init>(p0: java.lang.String, p1: int): void
public static method getEntries(): kotlin.enums.EnumEntries
public static @org.jetbrains.annotations.NotNull method getEntries(): kotlin.enums.EnumEntries
public static method valueOf(p0: java.lang.String): Test
public static method values(): Test[]
}
+4 -4
View File
@@ -16,7 +16,7 @@ public final enum class SimpleEnum {
private synthetic final static method $values(): SimpleEnum[]
static method <clinit>(): void
private method <init>(p0: java.lang.String, p1: int): void
public static method getEntries(): kotlin.enums.EnumEntries
public static @org.jetbrains.annotations.NotNull method getEntries(): kotlin.enums.EnumEntries
public static method valueOf(p0: java.lang.String): SimpleEnum
public static method values(): SimpleEnum[]
}
@@ -32,7 +32,7 @@ public final enum class WithAnnotations {
private synthetic final static method $values(): WithAnnotations[]
static method <clinit>(): void
private method <init>(p0: java.lang.String, p1: int): void
public static method getEntries(): kotlin.enums.EnumEntries
public static @org.jetbrains.annotations.NotNull method getEntries(): kotlin.enums.EnumEntries
public static method valueOf(p0: java.lang.String): WithAnnotations
public static method values(): WithAnnotations[]
}
@@ -50,7 +50,7 @@ public final enum class WithConstructor {
private synthetic final static method $values(): WithConstructor[]
static method <clinit>(): void
private method <init>(p0: java.lang.String, p1: int, p2: java.lang.String): void
public static method getEntries(): kotlin.enums.EnumEntries
public static @org.jetbrains.annotations.NotNull method getEntries(): kotlin.enums.EnumEntries
public final @org.jetbrains.annotations.NotNull method getX(): java.lang.String
public static method valueOf(p0: java.lang.String): WithConstructor
public static method values(): WithConstructor[]
@@ -77,7 +77,7 @@ public abstract enum class WithEntryClass {
private method <init>(p0: java.lang.String, p1: int): void
public synthetic method <init>(p0: java.lang.String, p1: int, p2: kotlin.jvm.internal.DefaultConstructorMarker): void
public abstract method foo(): void
public static method getEntries(): kotlin.enums.EnumEntries
public static @org.jetbrains.annotations.NotNull method getEntries(): kotlin.enums.EnumEntries
public static method valueOf(p0: java.lang.String): WithEntryClass
public static method values(): WithEntryClass[]
}
@@ -15,7 +15,7 @@ public final enum class Enum {
private synthetic final static method $values(): Enum[]
static method <clinit>(): void
private method <init>(p0: java.lang.String, p1: int): void
public static method getEntries(): kotlin.enums.EnumEntries
public static @org.jetbrains.annotations.NotNull method getEntries(): kotlin.enums.EnumEntries
public static method valueOf(p0: java.lang.String): Enum
public static method values(): Enum[]
}
@@ -9,7 +9,7 @@ final enum class TraceTest$Status {
private synthetic final static method $values(): TraceTest$Status[]
static method <clinit>(): void
private method <init>(p0: java.lang.String, p1: int): void
public static method getEntries(): kotlin.enums.EnumEntries
public static @org.jetbrains.annotations.NotNull method getEntries(): kotlin.enums.EnumEntries
public static method valueOf(p0: java.lang.String): TraceTest$Status
public static method values(): TraceTest$Status[]
private final inner class TraceTest$Status
@@ -5,7 +5,7 @@ public final enum class test/E {
public final enum static field B: test.E
public static method values(): test.E[]
public static method valueOf(p0: java.lang.String): test.E
public static method getEntries(): kotlin.enums.EnumEntries
public static @org.jetbrains.annotations.NotNull method getEntries(): kotlin.enums.EnumEntries
}
@kotlin.Metadata
public final class test/Test {
@@ -5,7 +5,7 @@ public final enum class test/E {
public final enum static field B: test.E
public static method values(): test.E[]
public static method valueOf(p0: java.lang.String): test.E
public static method getEntries(): kotlin.enums.EnumEntries
public static @org.jetbrains.annotations.NotNull method getEntries(): kotlin.enums.EnumEntries
}
@kotlin.Metadata
public synthetic final class test/Test$WhenMappings {
@@ -11,6 +11,7 @@ public enum E {
public final void b() {
}
@org.jetbrains.annotations.NotNull()
public static kotlin.enums.EnumEntries<E> getEntries() {
return null;
}
@@ -50,6 +51,7 @@ public enum E2 {
public abstract void a();
@org.jetbrains.annotations.NotNull()
public static kotlin.enums.EnumEntries<E2> getEntries() {
return null;
}
@@ -73,6 +75,7 @@ public enum E3 {
return null;
}
@org.jetbrains.annotations.NotNull()
public static kotlin.enums.EnumEntries<E3> getEntries() {
return null;
}
@@ -110,6 +113,7 @@ public enum E4 {
return false;
}
@org.jetbrains.annotations.NotNull()
public static kotlin.enums.EnumEntries<E4> getEntries() {
return null;
}
@@ -50,6 +50,7 @@ public enum Colors {
Colors() {
}
@org.jetbrains.annotations.NotNull()
public static kotlin.enums.EnumEntries<Colors> getEntries() {
return null;
}
@@ -67,6 +68,7 @@ public enum Enum1 {
Enum1() {
}
@org.jetbrains.annotations.NotNull()
public static kotlin.enums.EnumEntries<Enum1> getEntries() {
return null;
}
@@ -60,6 +60,7 @@ public enum Enum {
return 0;
}
@org.jetbrains.annotations.NotNull()
public static kotlin.enums.EnumEntries<test.Enum> getEntries() {
return null;
}
@@ -19,6 +19,7 @@ public enum EnumError {
@org.jetbrains.annotations.NotNull()
public abstract java.lang.String doIt();
@org.jetbrains.annotations.NotNull()
public static kotlin.enums.EnumEntries<EnumError> getEntries() {
return null;
}
@@ -19,6 +19,7 @@ public enum EnumError {
@org.jetbrains.annotations.NotNull()
public abstract java.lang.String doIt();
@org.jetbrains.annotations.NotNull()
public static kotlin.enums.EnumEntries<EnumError> getEntries() {
return null;
}
@@ -6,6 +6,7 @@ public enum Em {
Em() {
}
@org.jetbrains.annotations.NotNull()
public static kotlin.enums.EnumEntries<Em> getEntries() {
return null;
}
@@ -6,6 +6,7 @@ public enum Em {
Em() {
}
@org.jetbrains.annotations.NotNull()
public static kotlin.enums.EnumEntries<Em> getEntries() {
return null;
}
@@ -11,6 +11,7 @@ public enum Options {
Options() {
}
@org.jetbrains.annotations.NotNull()
public static kotlin.enums.EnumEntries<kapt.Options> getEntries() {
return null;
}
@@ -23,6 +23,7 @@ public final class Test {
Example() {
}
@org.jetbrains.annotations.NotNull()
public static kotlin.enums.EnumEntries<Test.Companion.Example> getEntries() {
return null;
}
@@ -58,6 +59,7 @@ public final class Test2 {
Example() {
}
@org.jetbrains.annotations.NotNull()
public static kotlin.enums.EnumEntries<Test2.Amigo.Example> getEntries() {
return null;
}
@@ -93,6 +95,7 @@ public final class Test3 {
Example() {
}
@org.jetbrains.annotations.NotNull()
public static kotlin.enums.EnumEntries<Test3.Amigo.Example> getEntries() {
return null;
}
@@ -175,6 +178,7 @@ public final class Test5 {
Example() {
}
@org.jetbrains.annotations.NotNull()
public static kotlin.enums.EnumEntries<Test5.Amigos.Companion.Goo.Example> getEntries() {
return null;
}
@@ -16,6 +16,7 @@ public enum Enum1 {
Enum1() {
}
@org.jetbrains.annotations.NotNull()
public static kotlin.enums.EnumEntries<Enum1> getEntries() {
return null;
}
@@ -57,6 +58,7 @@ public enum Enum2 {
public final void publicEnumFun() {
}
@org.jetbrains.annotations.NotNull()
public static kotlin.enums.EnumEntries<Enum2> getEntries() {
return null;
}
@@ -75,6 +77,7 @@ public abstract interface I {
Nested() {
}
@org.jetbrains.annotations.NotNull()
public static kotlin.enums.EnumEntries<I.Nested> getEntries() {
return null;
}
@@ -91,6 +94,7 @@ public enum Nested1 {
Nested1() {
}
@org.jetbrains.annotations.NotNull()
public static kotlin.enums.EnumEntries<Nested1> getEntries() {
return null;
}
@@ -46,6 +46,7 @@ public enum Result {
Result() {
}
@org.jetbrains.annotations.NotNull()
public static kotlin.enums.EnumEntries<Result> getEntries() {
return null;
}
@@ -16,6 +16,7 @@ public enum Color {
Color() {
}
@org.jetbrains.annotations.NotNull()
public static kotlin.enums.EnumEntries<Color> getEntries() {
return null;
}
@@ -149,6 +149,7 @@ public final class Test {
NestedEnum() {
}
@org.jetbrains.annotations.NotNull()
public static kotlin.enums.EnumEntries<Test.NestedEnum> getEntries() {
return null;
}
@@ -149,6 +149,7 @@ public enum Color {
Color() {
}
@org.jetbrains.annotations.NotNull()
public static kotlin.enums.EnumEntries<Color> getEntries() {
return null;
}
@@ -24,6 +24,7 @@ public enum StrangeEnum {
return null;
}
@org.jetbrains.annotations.NotNull()
public static kotlin.enums.EnumEntries<StrangeEnum> getEntries() {
return null;
}
@@ -42,6 +42,7 @@ public enum Result {
Result() {
}
@org.jetbrains.annotations.NotNull()
public static kotlin.enums.EnumEntries<Result> getEntries() {
return null;
}
@@ -222,6 +222,7 @@ public enum State {
State() {
}
@org.jetbrains.annotations.NotNull()
public static kotlin.enums.EnumEntries<State> getEntries() {
return null;
}
@@ -10,7 +10,7 @@ public final enum class Colors {
private synthetic final static method $values(): Colors[]
static method <clinit>(): void
private method <init>(p0: java.lang.String, p1: int): void
public static method getEntries(): kotlin.enums.EnumEntries
public static @org.jetbrains.annotations.NotNull method getEntries(): kotlin.enums.EnumEntries
public static method valueOf(p0: java.lang.String): Colors
public static method values(): Colors[]
}