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[]
}