Support instantiation of annotations with type parameters
By ignoring type parameters. Since type parameters in annotations are a very limited feature, their sole use is to be able to specify them as KClass argument: annotation class Foo<T: Any>(val bar: KClass<T>). Since we can encounter type param only as a KClass type argument (and never as a property type), simple approach of ignoring them works fine. In that case, since we simply copy property types to synthetic implementation class, its properties in IR start look like this: annotation class FooImpl(override val bar: KClass<T of Foo>). This IR seems to be not completely correct, since FooImpl.bar type contains T of Foo param, which is out of its scope. However, so far I didn't encounter any problems with this during testing and after MR discussion this approach has been considered possible. #KT-59558 Fixed #KT-59036 Fixed
This commit is contained in:
committed by
Space Team
parent
8c795462e1
commit
648c1f4599
+1
-3
@@ -32,9 +32,7 @@ object FirConstructorCallChecker : FirFunctionCallChecker() {
|
||||
klass !is FirRegularClass || klass.classKind != ClassKind.ANNOTATION_CLASS
|
||||
}
|
||||
) {
|
||||
if (!context.languageVersionSettings.supportsFeature(LanguageFeature.InstantiationOfAnnotationClasses) ||
|
||||
declarationClass.typeParameterSymbols.isNotEmpty()
|
||||
) reporter.reportOn(
|
||||
if (!context.languageVersionSettings.supportsFeature(LanguageFeature.InstantiationOfAnnotationClasses)) reporter.reportOn(
|
||||
expression.source,
|
||||
FirErrors.ANNOTATION_CLASS_CONSTRUCTOR_CALL,
|
||||
context
|
||||
|
||||
+18
@@ -546,6 +546,18 @@ public class FirLightTreeBlackBoxCodegenTestGenerated extends AbstractFirLightTr
|
||||
runTest("compiler/testData/codegen/box/annotations/instances/annotationType.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("annotationWithTypeParameters.kt")
|
||||
public void testAnnotationWithTypeParameters() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/annotations/instances/annotationWithTypeParameters.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("annotationWithTypeParametersJvm.kt")
|
||||
public void testAnnotationWithTypeParametersJvm() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/annotations/instances/annotationWithTypeParametersJvm.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("annotationsUnsignedTypes.kt")
|
||||
public void testAnnotationsUnsignedTypes() throws Exception {
|
||||
@@ -594,6 +606,12 @@ public class FirLightTreeBlackBoxCodegenTestGenerated extends AbstractFirLightTr
|
||||
runTest("compiler/testData/codegen/box/annotations/instances/multimoduleInlining.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("multimoduleTypeParams.kt")
|
||||
public void testMultimoduleTypeParams() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/annotations/instances/multimoduleTypeParams.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("multiplatformInstantiation.kt")
|
||||
public void testMultiplatformInstantiation() throws Exception {
|
||||
|
||||
+18
@@ -546,6 +546,18 @@ public class FirPsiBlackBoxCodegenTestGenerated extends AbstractFirPsiBlackBoxCo
|
||||
runTest("compiler/testData/codegen/box/annotations/instances/annotationType.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("annotationWithTypeParameters.kt")
|
||||
public void testAnnotationWithTypeParameters() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/annotations/instances/annotationWithTypeParameters.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("annotationWithTypeParametersJvm.kt")
|
||||
public void testAnnotationWithTypeParametersJvm() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/annotations/instances/annotationWithTypeParametersJvm.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("annotationsUnsignedTypes.kt")
|
||||
public void testAnnotationsUnsignedTypes() throws Exception {
|
||||
@@ -594,6 +606,12 @@ public class FirPsiBlackBoxCodegenTestGenerated extends AbstractFirPsiBlackBoxCo
|
||||
runTest("compiler/testData/codegen/box/annotations/instances/multimoduleInlining.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("multimoduleTypeParams.kt")
|
||||
public void testMultimoduleTypeParams() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/annotations/instances/multimoduleTypeParams.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("multiplatformInstantiation.kt")
|
||||
public void testMultiplatformInstantiation() throws Exception {
|
||||
|
||||
@@ -225,7 +225,7 @@ class CallExpressionResolver(
|
||||
if (functionDescriptor is ConstructorDescriptor) {
|
||||
val constructedClass = functionDescriptor.constructedClass
|
||||
if (DescriptorUtils.isAnnotationClass(constructedClass) && !canInstantiateAnnotationClass(callExpression, context.trace)) {
|
||||
val supported = context.languageVersionSettings.supportsFeature(LanguageFeature.InstantiationOfAnnotationClasses) && constructedClass.declaredTypeParameters.isEmpty()
|
||||
val supported = context.languageVersionSettings.supportsFeature(LanguageFeature.InstantiationOfAnnotationClasses)
|
||||
if (!supported) context.trace.report(ANNOTATION_CLASS_CONSTRUCTOR_CALL.on(callExpression))
|
||||
}
|
||||
if (DescriptorUtils.isEnumClass(constructedClass)) {
|
||||
|
||||
+1
-1
@@ -79,7 +79,6 @@ abstract class AnnotationImplementationTransformer(val context: BackendContext,
|
||||
override fun visitConstructorCall(expression: IrConstructorCall): IrExpression {
|
||||
val constructedClass = expression.type.classOrNull?.owner ?: return super.visitConstructorCall(expression)
|
||||
if (!constructedClass.isAnnotationClass) return super.visitConstructorCall(expression)
|
||||
if (constructedClass.typeParameters.isNotEmpty()) return super.visitConstructorCall(expression) // Not supported yet
|
||||
require(expression.symbol.owner.isPrimary) { "Non-primary constructors of annotations are not supported" }
|
||||
|
||||
val implClass = implementations.getOrPut(constructedClass) { createAnnotationImplementation(constructedClass) }
|
||||
@@ -158,6 +157,7 @@ abstract class AnnotationImplementationTransformer(val context: BackendContext,
|
||||
createImplicitParameterDeclarationWithWrappedDescriptor()
|
||||
superTypes = listOf(annotationClass.defaultType)
|
||||
platformSetup()
|
||||
// Type parameters can be copied from annotationClass, but in fact they are never used by any of the backends.
|
||||
}
|
||||
|
||||
val ctor = subclass.addConstructor {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
// IGNORE_BACKEND: JVM
|
||||
|
||||
// (supported: JVM_IR, JS_IR(_E6))
|
||||
// (supported: JVM_IR, JS_IR(_ES6), NATIVE)
|
||||
// Regular JS works too, but without proper hashCode or equals
|
||||
|
||||
// WITH_STDLIB
|
||||
|
||||
+38
@@ -0,0 +1,38 @@
|
||||
// IGNORE_BACKEND: JVM
|
||||
// DONT_TARGET_EXACT_BACKEND: JS
|
||||
// IGNORE_BACKEND: WASM
|
||||
// WASM ticket: KT-59032
|
||||
|
||||
// supported: JVM_IR, JS_IR(_ES6), NATIVE
|
||||
|
||||
// WITH_STDLIB
|
||||
// !LANGUAGE: +InstantiationOfAnnotationClasses
|
||||
|
||||
package test
|
||||
|
||||
import kotlin.reflect.KClass
|
||||
import kotlin.test.assertEquals
|
||||
import kotlin.test.assertTrue as assert
|
||||
|
||||
annotation class One<T>()
|
||||
|
||||
annotation class Two<K, V>(val s: String)
|
||||
annotation class Nesting(val a1: One<Int> = One(), val a2: Two<String, List<String>> = Two("two"))
|
||||
|
||||
annotation class WithKClass<K: Any>(val k: KClass<K>)
|
||||
|
||||
fun box(): String {
|
||||
val a = One<String>()
|
||||
assert(a.toString().endsWith("test.One()"))
|
||||
val t = Two<String, Int>("two")
|
||||
assertEquals("two", t.s)
|
||||
val n = Nesting()
|
||||
assertEquals("two", n.a2.s)
|
||||
val wk = WithKClass(String::class)
|
||||
assert(String::class == wk.k)
|
||||
|
||||
// type parameters don't affect equals
|
||||
assert(Two<String, Int>("two") == Two<Int, String>("two"))
|
||||
assert(WithKClass(Int::class) != WithKClass(String::class))
|
||||
return "OK"
|
||||
}
|
||||
+36
@@ -0,0 +1,36 @@
|
||||
// TARGET_BACKEND: JVM_IR
|
||||
|
||||
// WITH_REFLECT
|
||||
// !LANGUAGE: +InstantiationOfAnnotationClasses
|
||||
|
||||
import kotlin.reflect.KClass
|
||||
import kotlin.test.assertEquals
|
||||
import kotlin.test.assertTrue as assert
|
||||
|
||||
annotation class WithKClass<K: Any>(val k: KClass<K>)
|
||||
|
||||
// Following can't be called on JS/Native, as on these platforms only `Array::class : KClass<Array<*>>` exists.
|
||||
|
||||
annotation class WithArray<A>(val a: KClass<Array<A>>)
|
||||
|
||||
annotation class Combined<T: Any>(val t: KClass<T>, val w: WithKClass<T>, val wa: WithArray<T>)
|
||||
|
||||
class X
|
||||
|
||||
fun box(): String {
|
||||
val wa = WithArray(Array<String>::class)
|
||||
assert(wa.a.java.isArray)
|
||||
assert(wa.a.java.componentType == String::class.java)
|
||||
assertEquals(WithArray(Array<String>::class), wa)
|
||||
assert(WithArray(Array<Int>::class) != wa)
|
||||
|
||||
val typeParams = WithKClass(X::class).annotationClass.typeParameters
|
||||
assertEquals(1, typeParams.size)
|
||||
|
||||
val c = Combined(X::class, WithKClass(X::class), WithArray(Array<X>::class))
|
||||
assertEquals(X::class, c.t)
|
||||
assertEquals(X::class, c.w.k)
|
||||
assertEquals(X::class.java, c.wa.a.java.componentType)
|
||||
|
||||
return "OK"
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
// IGNORE_BACKEND: JVM
|
||||
// DONT_TARGET_EXACT_BACKEND: JS
|
||||
// IGNORE_DEXING
|
||||
// WITH_STDLIB
|
||||
// !LANGUAGE: +InstantiationOfAnnotationClasses
|
||||
|
||||
// MODULE: lib
|
||||
// FILE: lib.kt
|
||||
|
||||
package a
|
||||
|
||||
import kotlin.reflect.KClass
|
||||
|
||||
annotation class Two<K, V>(val s: String)
|
||||
annotation class Nesting(val a2: Two<String, List<String>> = Two("two"))
|
||||
|
||||
annotation class WithKClass<K: Any>(val k: KClass<K>)
|
||||
|
||||
|
||||
// MODULE: app(lib)
|
||||
// FILE: app.kt
|
||||
|
||||
package test
|
||||
|
||||
import a.*
|
||||
import kotlin.test.*
|
||||
|
||||
fun box(): String {
|
||||
val t = Two<String, Int>("two")
|
||||
assertEquals("two", t.s)
|
||||
val n = Nesting()
|
||||
assertEquals("two", n.a2.s)
|
||||
val wk = WithKClass(String::class)
|
||||
assertTrue(String::class == wk.k)
|
||||
return "OK"
|
||||
}
|
||||
@@ -15,5 +15,5 @@ fun box() {
|
||||
val a = A()
|
||||
val b = B(4)
|
||||
val c = C()
|
||||
val foo = <!ANNOTATION_CLASS_CONSTRUCTOR_CALL!>G(Int::class)<!>
|
||||
val foo = G(Int::class)
|
||||
}
|
||||
|
||||
+12
@@ -462,6 +462,12 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest {
|
||||
runTest("compiler/testData/codegen/box/annotations/instances/annotationToString.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("annotationWithTypeParameters.kt")
|
||||
public void testAnnotationWithTypeParameters() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/annotations/instances/annotationWithTypeParameters.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("annotationsUnsignedTypes.kt")
|
||||
public void testAnnotationsUnsignedTypes() throws Exception {
|
||||
@@ -480,6 +486,12 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest {
|
||||
runTest("compiler/testData/codegen/box/annotations/instances/multifileEqHc.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("multimoduleTypeParams.kt")
|
||||
public void testMultimoduleTypeParams() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/annotations/instances/multimoduleTypeParams.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("multiplatformInstantiation.kt")
|
||||
public void testMultiplatformInstantiation() throws Exception {
|
||||
|
||||
+18
@@ -546,6 +546,18 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes
|
||||
runTest("compiler/testData/codegen/box/annotations/instances/annotationType.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("annotationWithTypeParameters.kt")
|
||||
public void testAnnotationWithTypeParameters() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/annotations/instances/annotationWithTypeParameters.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("annotationWithTypeParametersJvm.kt")
|
||||
public void testAnnotationWithTypeParametersJvm() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/annotations/instances/annotationWithTypeParametersJvm.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("annotationsUnsignedTypes.kt")
|
||||
public void testAnnotationsUnsignedTypes() throws Exception {
|
||||
@@ -594,6 +606,12 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes
|
||||
runTest("compiler/testData/codegen/box/annotations/instances/multimoduleInlining.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("multimoduleTypeParams.kt")
|
||||
public void testMultimoduleTypeParams() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/annotations/instances/multimoduleTypeParams.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("multiplatformInstantiation.kt")
|
||||
public void testMultiplatformInstantiation() throws Exception {
|
||||
|
||||
+18
@@ -546,6 +546,18 @@ public class IrBlackBoxCodegenWithIrInlinerTestGenerated extends AbstractIrBlack
|
||||
runTest("compiler/testData/codegen/box/annotations/instances/annotationType.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("annotationWithTypeParameters.kt")
|
||||
public void testAnnotationWithTypeParameters() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/annotations/instances/annotationWithTypeParameters.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("annotationWithTypeParametersJvm.kt")
|
||||
public void testAnnotationWithTypeParametersJvm() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/annotations/instances/annotationWithTypeParametersJvm.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("annotationsUnsignedTypes.kt")
|
||||
public void testAnnotationsUnsignedTypes() throws Exception {
|
||||
@@ -594,6 +606,12 @@ public class IrBlackBoxCodegenWithIrInlinerTestGenerated extends AbstractIrBlack
|
||||
runTest("compiler/testData/codegen/box/annotations/instances/multimoduleInlining.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("multimoduleTypeParams.kt")
|
||||
public void testMultimoduleTypeParams() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/annotations/instances/multimoduleTypeParams.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("multiplatformInstantiation.kt")
|
||||
public void testMultiplatformInstantiation() throws Exception {
|
||||
|
||||
+15
@@ -483,6 +483,16 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes
|
||||
runTest("compiler/testData/codegen/box/annotations/instances/annotationType.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("annotationWithTypeParameters.kt")
|
||||
public void testAnnotationWithTypeParameters() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/annotations/instances/annotationWithTypeParameters.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("annotationWithTypeParametersJvm.kt")
|
||||
public void testAnnotationWithTypeParametersJvm() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/annotations/instances/annotationWithTypeParametersJvm.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("annotationsUnsignedTypes.kt")
|
||||
public void testAnnotationsUnsignedTypes() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/annotations/instances/annotationsUnsignedTypes.kt");
|
||||
@@ -518,6 +528,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes
|
||||
runTest("compiler/testData/codegen/box/annotations/instances/multimoduleInlining.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("multimoduleTypeParams.kt")
|
||||
public void testMultimoduleTypeParams() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/annotations/instances/multimoduleTypeParams.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("multiplatformInstantiation.kt")
|
||||
public void testMultiplatformInstantiation() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/annotations/instances/multiplatformInstantiation.kt");
|
||||
|
||||
+12
@@ -126,6 +126,12 @@ public class FirJsCodegenBoxTestGenerated extends AbstractFirJsCodegenBoxTest {
|
||||
runTest("compiler/testData/codegen/box/annotations/instances/annotationToString.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("annotationWithTypeParameters.kt")
|
||||
public void testAnnotationWithTypeParameters() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/annotations/instances/annotationWithTypeParameters.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("annotationsUnsignedTypes.kt")
|
||||
public void testAnnotationsUnsignedTypes() throws Exception {
|
||||
@@ -144,6 +150,12 @@ public class FirJsCodegenBoxTestGenerated extends AbstractFirJsCodegenBoxTest {
|
||||
runTest("compiler/testData/codegen/box/annotations/instances/multifileEqHc.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("multimoduleTypeParams.kt")
|
||||
public void testMultimoduleTypeParams() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/annotations/instances/multimoduleTypeParams.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("multiplatformInstantiation.kt")
|
||||
public void testMultiplatformInstantiation() throws Exception {
|
||||
|
||||
+12
@@ -126,6 +126,12 @@ public class IrJsCodegenBoxTestGenerated extends AbstractIrJsCodegenBoxTest {
|
||||
runTest("compiler/testData/codegen/box/annotations/instances/annotationToString.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("annotationWithTypeParameters.kt")
|
||||
public void testAnnotationWithTypeParameters() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/annotations/instances/annotationWithTypeParameters.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("annotationsUnsignedTypes.kt")
|
||||
public void testAnnotationsUnsignedTypes() throws Exception {
|
||||
@@ -144,6 +150,12 @@ public class IrJsCodegenBoxTestGenerated extends AbstractIrJsCodegenBoxTest {
|
||||
runTest("compiler/testData/codegen/box/annotations/instances/multifileEqHc.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("multimoduleTypeParams.kt")
|
||||
public void testMultimoduleTypeParams() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/annotations/instances/multimoduleTypeParams.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("multiplatformInstantiation.kt")
|
||||
public void testMultiplatformInstantiation() throws Exception {
|
||||
|
||||
+12
@@ -126,6 +126,12 @@ public class IrJsES6CodegenBoxTestGenerated extends AbstractIrJsES6CodegenBoxTes
|
||||
runTest("compiler/testData/codegen/box/annotations/instances/annotationToString.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("annotationWithTypeParameters.kt")
|
||||
public void testAnnotationWithTypeParameters() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/annotations/instances/annotationWithTypeParameters.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("annotationsUnsignedTypes.kt")
|
||||
public void testAnnotationsUnsignedTypes() throws Exception {
|
||||
@@ -144,6 +150,12 @@ public class IrJsES6CodegenBoxTestGenerated extends AbstractIrJsES6CodegenBoxTes
|
||||
runTest("compiler/testData/codegen/box/annotations/instances/multifileEqHc.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("multimoduleTypeParams.kt")
|
||||
public void testMultimoduleTypeParams() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/annotations/instances/multimoduleTypeParams.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("multiplatformInstantiation.kt")
|
||||
public void testMultiplatformInstantiation() throws Exception {
|
||||
|
||||
+12
@@ -143,6 +143,12 @@ public class FirNativeCodegenBoxTestGenerated extends AbstractNativeCodegenBoxTe
|
||||
runTest("compiler/testData/codegen/box/annotations/instances/annotationToString.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("annotationWithTypeParameters.kt")
|
||||
public void testAnnotationWithTypeParameters() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/annotations/instances/annotationWithTypeParameters.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("annotationsUnsignedTypes.kt")
|
||||
public void testAnnotationsUnsignedTypes() throws Exception {
|
||||
@@ -161,6 +167,12 @@ public class FirNativeCodegenBoxTestGenerated extends AbstractNativeCodegenBoxTe
|
||||
runTest("compiler/testData/codegen/box/annotations/instances/multifileEqHc.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("multimoduleTypeParams.kt")
|
||||
public void testMultimoduleTypeParams() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/annotations/instances/multimoduleTypeParams.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("multiplatformInstantiation.kt")
|
||||
public void testMultiplatformInstantiation() throws Exception {
|
||||
|
||||
+12
@@ -153,6 +153,12 @@ public class FirNativeCodegenBoxTestNoPLGenerated extends AbstractNativeCodegenB
|
||||
runTest("compiler/testData/codegen/box/annotations/instances/annotationToString.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("annotationWithTypeParameters.kt")
|
||||
public void testAnnotationWithTypeParameters() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/annotations/instances/annotationWithTypeParameters.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("annotationsUnsignedTypes.kt")
|
||||
public void testAnnotationsUnsignedTypes() throws Exception {
|
||||
@@ -171,6 +177,12 @@ public class FirNativeCodegenBoxTestNoPLGenerated extends AbstractNativeCodegenB
|
||||
runTest("compiler/testData/codegen/box/annotations/instances/multifileEqHc.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("multimoduleTypeParams.kt")
|
||||
public void testMultimoduleTypeParams() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/annotations/instances/multimoduleTypeParams.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("multiplatformInstantiation.kt")
|
||||
public void testMultiplatformInstantiation() throws Exception {
|
||||
|
||||
+12
@@ -139,6 +139,12 @@ public class NativeCodegenBoxTestGenerated extends AbstractNativeCodegenBoxTest
|
||||
runTest("compiler/testData/codegen/box/annotations/instances/annotationToString.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("annotationWithTypeParameters.kt")
|
||||
public void testAnnotationWithTypeParameters() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/annotations/instances/annotationWithTypeParameters.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("annotationsUnsignedTypes.kt")
|
||||
public void testAnnotationsUnsignedTypes() throws Exception {
|
||||
@@ -157,6 +163,12 @@ public class NativeCodegenBoxTestGenerated extends AbstractNativeCodegenBoxTest
|
||||
runTest("compiler/testData/codegen/box/annotations/instances/multifileEqHc.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("multimoduleTypeParams.kt")
|
||||
public void testMultimoduleTypeParams() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/annotations/instances/multimoduleTypeParams.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("multiplatformInstantiation.kt")
|
||||
public void testMultiplatformInstantiation() throws Exception {
|
||||
|
||||
+12
@@ -144,6 +144,12 @@ public class NativeCodegenBoxTestNoPLGenerated extends AbstractNativeCodegenBoxT
|
||||
runTest("compiler/testData/codegen/box/annotations/instances/annotationToString.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("annotationWithTypeParameters.kt")
|
||||
public void testAnnotationWithTypeParameters() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/annotations/instances/annotationWithTypeParameters.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("annotationsUnsignedTypes.kt")
|
||||
public void testAnnotationsUnsignedTypes() throws Exception {
|
||||
@@ -162,6 +168,12 @@ public class NativeCodegenBoxTestNoPLGenerated extends AbstractNativeCodegenBoxT
|
||||
runTest("compiler/testData/codegen/box/annotations/instances/multifileEqHc.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("multimoduleTypeParams.kt")
|
||||
public void testMultimoduleTypeParams() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/annotations/instances/multimoduleTypeParams.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("multiplatformInstantiation.kt")
|
||||
public void testMultiplatformInstantiation() throws Exception {
|
||||
|
||||
Generated
+12
@@ -126,6 +126,12 @@ public class FirWasmCodegenBoxTestGenerated extends AbstractFirWasmCodegenBoxTes
|
||||
runTest("compiler/testData/codegen/box/annotations/instances/annotationToString.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("annotationWithTypeParameters.kt")
|
||||
public void testAnnotationWithTypeParameters() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/annotations/instances/annotationWithTypeParameters.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("annotationsUnsignedTypes.kt")
|
||||
public void testAnnotationsUnsignedTypes() throws Exception {
|
||||
@@ -144,6 +150,12 @@ public class FirWasmCodegenBoxTestGenerated extends AbstractFirWasmCodegenBoxTes
|
||||
runTest("compiler/testData/codegen/box/annotations/instances/multifileEqHc.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("multimoduleTypeParams.kt")
|
||||
public void testMultimoduleTypeParams() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/annotations/instances/multimoduleTypeParams.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("multiplatformInstantiation.kt")
|
||||
public void testMultiplatformInstantiation() throws Exception {
|
||||
|
||||
Generated
+12
@@ -126,6 +126,12 @@ public class K1WasmCodegenBoxTestGenerated extends AbstractK1WasmCodegenBoxTest
|
||||
runTest("compiler/testData/codegen/box/annotations/instances/annotationToString.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("annotationWithTypeParameters.kt")
|
||||
public void testAnnotationWithTypeParameters() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/annotations/instances/annotationWithTypeParameters.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("annotationsUnsignedTypes.kt")
|
||||
public void testAnnotationsUnsignedTypes() throws Exception {
|
||||
@@ -144,6 +150,12 @@ public class K1WasmCodegenBoxTestGenerated extends AbstractK1WasmCodegenBoxTest
|
||||
runTest("compiler/testData/codegen/box/annotations/instances/multifileEqHc.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("multimoduleTypeParams.kt")
|
||||
public void testMultimoduleTypeParams() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/annotations/instances/multimoduleTypeParams.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("multiplatformInstantiation.kt")
|
||||
public void testMultiplatformInstantiation() throws Exception {
|
||||
|
||||
Reference in New Issue
Block a user