JVM IR: generate source-retained annotations in kapt mode
#KT-49682
This commit is contained in:
+1
-1
@@ -186,7 +186,7 @@ abstract class AnnotationCodegen(
|
||||
private fun genAnnotation(annotation: IrConstructorCall, path: TypePath?, isTypeAnnotation: Boolean): String? {
|
||||
val annotationClass = annotation.annotationClass
|
||||
val retentionPolicy = getRetentionPolicy(annotationClass)
|
||||
if (retentionPolicy == RetentionPolicy.SOURCE) return null
|
||||
if (retentionPolicy == RetentionPolicy.SOURCE && !context.state.classBuilderMode.generateSourceRetentionAnnotations) return null
|
||||
|
||||
// FlexibleNullability is an internal annotation, used only inside the compiler
|
||||
if (annotationClass.fqNameWhenAvailable in internalAnnotations) return null
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
// IGNORE_BACKEND: JVM_IR
|
||||
|
||||
package test
|
||||
|
||||
internal annotation class Anno
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
package test;
|
||||
|
||||
import java.lang.System;
|
||||
|
||||
@kotlin.Metadata()
|
||||
@java.lang.annotation.Retention(value = java.lang.annotation.RetentionPolicy.RUNTIME)
|
||||
public abstract @interface Anno {
|
||||
}
|
||||
|
||||
////////////////////
|
||||
|
||||
package test;
|
||||
|
||||
import java.lang.System;
|
||||
|
||||
@kotlin.Suppress(names = {"UNRESOLVED_REFERENCE"})
|
||||
@kotlin.Metadata()
|
||||
@Anno()
|
||||
public final class ClassWithParent implements java.lang.CharSequence {
|
||||
|
||||
public ClassWithParent() {
|
||||
super();
|
||||
}
|
||||
|
||||
@java.lang.Override()
|
||||
public abstract char get(int index);
|
||||
|
||||
@java.lang.Override()
|
||||
public abstract int getLength();
|
||||
|
||||
@java.lang.Override()
|
||||
public final char charAt(int index) {
|
||||
return '\u0000';
|
||||
}
|
||||
|
||||
@java.lang.Override()
|
||||
public final int length() {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,3 @@
|
||||
// IGNORE_BACKEND: JVM_IR
|
||||
|
||||
import kotlinx.kapt.*
|
||||
|
||||
class Test {
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
// IGNORE_BACKEND: JVM_IR
|
||||
// WITH_STDLIB
|
||||
@file:Suppress("AMBIGUOUS_ANONYMOUS_TYPE_INFERRED")
|
||||
|
||||
|
||||
@@ -0,0 +1,66 @@
|
||||
import java.lang.System;
|
||||
|
||||
@kotlin.Metadata()
|
||||
public class CrashMe {
|
||||
@org.jetbrains.annotations.NotNull()
|
||||
private final java.lang.Runnable notReally = null;
|
||||
|
||||
public CrashMe() {
|
||||
super();
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////
|
||||
|
||||
|
||||
import java.lang.System;
|
||||
|
||||
@kotlin.Suppress(names = {"AMBIGUOUS_ANONYMOUS_TYPE_INFERRED"})
|
||||
@kotlin.Metadata()
|
||||
public final class Kt14997Kt {
|
||||
|
||||
public Kt14997Kt() {
|
||||
super();
|
||||
}
|
||||
|
||||
@org.jetbrains.annotations.NotNull()
|
||||
public static final java.lang.Runnable a() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@org.jetbrains.annotations.NotNull()
|
||||
public static final java.lang.Object b() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@org.jetbrains.annotations.NotNull()
|
||||
public static final java.lang.Object c() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@org.jetbrains.annotations.NotNull()
|
||||
public static final java.util.List<java.lang.Runnable> d() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@org.jetbrains.annotations.NotNull()
|
||||
public static final java.lang.Runnable[] e() {
|
||||
return null;
|
||||
}
|
||||
|
||||
public static final void e1(@org.jetbrains.annotations.NotNull()
|
||||
java.lang.CharSequence[] a) {
|
||||
}
|
||||
|
||||
public static final void e2(@org.jetbrains.annotations.NotNull()
|
||||
java.lang.Object[] a) {
|
||||
}
|
||||
|
||||
public static final void e3(@org.jetbrains.annotations.NotNull()
|
||||
java.lang.CharSequence[] a) {
|
||||
}
|
||||
|
||||
public static final void e3(@org.jetbrains.annotations.NotNull()
|
||||
java.lang.Object[] a) {
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,3 @@
|
||||
// IGNORE_BACKEND: JVM_IR
|
||||
// CORRECT_ERROR_TYPES
|
||||
|
||||
package foo
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
package foo;
|
||||
|
||||
import java.lang.System;
|
||||
|
||||
@kotlin.Metadata()
|
||||
public abstract interface InterfaceWithDefaults<T extends java.lang.Object> {
|
||||
|
||||
public abstract void foo();
|
||||
|
||||
@kotlin.Metadata()
|
||||
public static final class DefaultImpls {
|
||||
|
||||
public DefaultImpls() {
|
||||
super();
|
||||
}
|
||||
|
||||
public static <T extends java.lang.Object>void foo(@org.jetbrains.annotations.NotNull()
|
||||
foo.InterfaceWithDefaults<T> $this) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////
|
||||
|
||||
package foo;
|
||||
|
||||
import java.lang.System;
|
||||
|
||||
@kotlin.Metadata()
|
||||
public abstract interface SubInterface<T extends java.lang.Object> extends foo.InterfaceWithDefaults<T> {
|
||||
|
||||
@kotlin.Metadata()
|
||||
public static final class DefaultImpls {
|
||||
|
||||
public DefaultImpls() {
|
||||
super();
|
||||
}
|
||||
|
||||
public static <T extends java.lang.Object>void foo(@org.jetbrains.annotations.NotNull()
|
||||
foo.SubInterface<T> $this) {
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user