diff --git a/compiler/testData/ir/irText/classes/clashingFakeOverrideSignatures.kt b/compiler/testData/ir/irText/classes/clashingFakeOverrideSignatures.kt index a720d896493..ae82cc0b6fd 100644 --- a/compiler/testData/ir/irText/classes/clashingFakeOverrideSignatures.kt +++ b/compiler/testData/ir/irText/classes/clashingFakeOverrideSignatures.kt @@ -5,6 +5,9 @@ // IGNORE_BACKEND_K1: JS_IR // IGNORE_BACKEND_K1: JS_IR_ES6 +// KT-61141: IrSimpleFunctionPublicSymbolImpl for /Derived.foo|foo(kotlin.String){}[0] is already bound +// IGNORE_BACKEND_K1: NATIVE + open class Base { fun foo(x: T) {} fun foo(y: String) {} diff --git a/compiler/testData/ir/irText/classes/classes.kt b/compiler/testData/ir/irText/classes/classes.kt index 3526ee243f1..41a6e58e92a 100644 --- a/compiler/testData/ir/irText/classes/classes.kt +++ b/compiler/testData/ir/irText/classes/classes.kt @@ -1,6 +1,9 @@ // IGNORE_BACKEND: JS_IR // IGNORE_BACKEND: JS_IR_ES6 +// KT-61141: absent enum fake_overrides: finalize, getDeclaringClass, clone +// IGNORE_BACKEND: NATIVE + class TestClass interface TestInterface diff --git a/compiler/testData/ir/irText/classes/cloneable.kt b/compiler/testData/ir/irText/classes/cloneable.kt index 48948edb01f..a206a73b543 100644 --- a/compiler/testData/ir/irText/classes/cloneable.kt +++ b/compiler/testData/ir/irText/classes/cloneable.kt @@ -1,7 +1,7 @@ // FIR_IDENTICAL // SKIP_KLIB_TEST -// IGNORE_BACKEND: JS_IR, JS_IR_ES6 -// STATUS: This should not work in JS, Cloneable is JVM-specific API +// TARGET_BACKEND: JVM +// STATUS: Cloneable is JVM-specific API class A : Cloneable diff --git a/compiler/testData/ir/irText/classes/enum.kt b/compiler/testData/ir/irText/classes/enum.kt index 7fa416ffdbe..b0d0b25a4aa 100644 --- a/compiler/testData/ir/irText/classes/enum.kt +++ b/compiler/testData/ir/irText/classes/enum.kt @@ -5,6 +5,9 @@ // MUTE_SIGNATURE_COMPARISON_K2: ANY // ^ KT-57775 +// KT-61141: absent enum fake_overrides: finalize, getDeclaringClass, clone +// IGNORE_BACKEND: NATIVE + enum class TestEnum1 { TEST1, TEST2 } diff --git a/compiler/testData/ir/irText/classes/enumClassModality.kt b/compiler/testData/ir/irText/classes/enumClassModality.kt index e3028076a09..f7162150bc2 100644 --- a/compiler/testData/ir/irText/classes/enumClassModality.kt +++ b/compiler/testData/ir/irText/classes/enumClassModality.kt @@ -4,6 +4,9 @@ // MUTE_SIGNATURE_COMPARISON_K2: ANY // ^ KT-57775 +// KT-61141: absent enum fake_overrides: finalize, getDeclaringClass, clone +// IGNORE_BACKEND: NATIVE + enum class TestFinalEnum1 { X1 } diff --git a/compiler/testData/ir/irText/classes/enumWithMultipleCtors.kt b/compiler/testData/ir/irText/classes/enumWithMultipleCtors.kt index c697bc4c529..8ce53c03772 100644 --- a/compiler/testData/ir/irText/classes/enumWithMultipleCtors.kt +++ b/compiler/testData/ir/irText/classes/enumWithMultipleCtors.kt @@ -4,6 +4,9 @@ // MUTE_SIGNATURE_COMPARISON_K2: ANY // ^ KT-57775 +// KT-61141: absent enum fake_overrides: finalize, getDeclaringClass, clone +// IGNORE_BACKEND: NATIVE + enum class A { X("asd"), Y() { diff --git a/compiler/testData/ir/irText/classes/enumWithSecondaryCtor.kt b/compiler/testData/ir/irText/classes/enumWithSecondaryCtor.kt index 5f84766a8f3..fc9f4752367 100644 --- a/compiler/testData/ir/irText/classes/enumWithSecondaryCtor.kt +++ b/compiler/testData/ir/irText/classes/enumWithSecondaryCtor.kt @@ -5,6 +5,9 @@ // MUTE_SIGNATURE_COMPARISON_K2: ANY // ^ KT-57775 +// KT-61141: absent enum fake_overrides: finalize(K1), getDeclaringClass(K1), clone(K2), +// IGNORE_BACKEND: NATIVE + enum class Test0(val x: Int) { ZERO; constructor() : this(0) diff --git a/compiler/testData/ir/irText/declarations/annotations/classesWithAnnotations.kt b/compiler/testData/ir/irText/declarations/annotations/classesWithAnnotations.kt index 81e5baa3dcd..61a1288682f 100644 --- a/compiler/testData/ir/irText/declarations/annotations/classesWithAnnotations.kt +++ b/compiler/testData/ir/irText/declarations/annotations/classesWithAnnotations.kt @@ -1,6 +1,9 @@ // IGNORE_BACKEND: JS_IR // IGNORE_BACKEND: JS_IR_ES6 +// KT-61141: absent enum fake_overrides: finalize, getDeclaringClass, clone +// IGNORE_BACKEND: NATIVE + annotation class TestAnn(val x: String) @TestAnn("class") diff --git a/compiler/testData/ir/irText/declarations/annotations/enumEntriesWithAnnotations.kt b/compiler/testData/ir/irText/declarations/annotations/enumEntriesWithAnnotations.kt index 74bc53f5983..a4167981c55 100644 --- a/compiler/testData/ir/irText/declarations/annotations/enumEntriesWithAnnotations.kt +++ b/compiler/testData/ir/irText/declarations/annotations/enumEntriesWithAnnotations.kt @@ -4,6 +4,9 @@ // SKIP_SIGNATURE_DUMP // ^ Difference in annotations generated by K1 and K2 +// KT-61141: absent enum fake_overrides: finalize, getDeclaringClass, clone +// IGNORE_BACKEND: NATIVE + annotation class TestAnn(val x: String) enum class TestEnum { diff --git a/compiler/testData/ir/irText/declarations/annotations/enumsInAnnotationArguments.kt b/compiler/testData/ir/irText/declarations/annotations/enumsInAnnotationArguments.kt index 3af7753f09e..db9fef74d18 100644 --- a/compiler/testData/ir/irText/declarations/annotations/enumsInAnnotationArguments.kt +++ b/compiler/testData/ir/irText/declarations/annotations/enumsInAnnotationArguments.kt @@ -1,6 +1,9 @@ // IGNORE_BACKEND: JS_IR // IGNORE_BACKEND: JS_IR_ES6 +// KT-61141: absent enum fake_overrides: finalize, getDeclaringClass, clone +// IGNORE_BACKEND: NATIVE + enum class En { A, B, C, D } annotation class TestAnn(val x: En) diff --git a/compiler/testData/ir/irText/declarations/classLevelProperties.kt b/compiler/testData/ir/irText/declarations/classLevelProperties.kt index 16d60380ec4..6c89c320ac5 100644 --- a/compiler/testData/ir/irText/declarations/classLevelProperties.kt +++ b/compiler/testData/ir/irText/declarations/classLevelProperties.kt @@ -1,6 +1,8 @@ // WITH_STDLIB // IGNORE_BACKEND: JS_IR // IGNORE_BACKEND: JS_IR_ES6 +// KT-61141: kotlin.collections.HashMap instead of java.util.HashMap +// IGNORE_BACKEND: NATIVE class C { val test1 = 0 diff --git a/compiler/testData/ir/irText/declarations/contextReceivers/contextualFunctionConversion.kt b/compiler/testData/ir/irText/declarations/contextReceivers/contextualFunctionConversion.kt index 1fb71070032..1be930b3b26 100644 --- a/compiler/testData/ir/irText/declarations/contextReceivers/contextualFunctionConversion.kt +++ b/compiler/testData/ir/irText/declarations/contextReceivers/contextualFunctionConversion.kt @@ -1,4 +1,6 @@ // !LANGUAGE: +ContextReceivers +// KT-61141: K1/Native does not support context receivers +// IGNORE_BACKEND_K1: NATIVE fun withContext(f: context(String) () -> String) = f("OK") diff --git a/compiler/testData/ir/irText/declarations/contextReceivers/fromKEEP/compareTo.kt b/compiler/testData/ir/irText/declarations/contextReceivers/fromKEEP/compareTo.kt index d84093da80a..133054edc1d 100644 --- a/compiler/testData/ir/irText/declarations/contextReceivers/fromKEEP/compareTo.kt +++ b/compiler/testData/ir/irText/declarations/contextReceivers/fromKEEP/compareTo.kt @@ -1,6 +1,9 @@ // !LANGUAGE: +ContextReceivers // IGNORE_BACKEND: JS_IR +// KT-61141: kotlin.Comparator instead of java.util.Comparator +// IGNORE_BACKEND: NATIVE + data class Pair(val first: A, val second: B) context(Comparator) diff --git a/compiler/testData/ir/irText/declarations/contextReceivers/fromKEEP/functionalType.kt b/compiler/testData/ir/irText/declarations/contextReceivers/fromKEEP/functionalType.kt index 956deecdfd3..53c85d4b3cd 100644 --- a/compiler/testData/ir/irText/declarations/contextReceivers/fromKEEP/functionalType.kt +++ b/compiler/testData/ir/irText/declarations/contextReceivers/fromKEEP/functionalType.kt @@ -1,4 +1,6 @@ // !LANGUAGE: +ContextReceivers +// KT-61141: K1/Native does not support context receivers +// IGNORE_BACKEND_K1: NATIVE class Param class O { diff --git a/compiler/testData/ir/irText/declarations/contextReceivers/functionalType.kt b/compiler/testData/ir/irText/declarations/contextReceivers/functionalType.kt index 06ffff7c30c..7e346254773 100644 --- a/compiler/testData/ir/irText/declarations/contextReceivers/functionalType.kt +++ b/compiler/testData/ir/irText/declarations/contextReceivers/functionalType.kt @@ -1,4 +1,6 @@ // !LANGUAGE: +ContextReceivers +// KT-61141: K1/Native does not support context receivers +// IGNORE_BACKEND_K1: NATIVE class Param class C { diff --git a/compiler/testData/ir/irText/declarations/contextReceivers/passingLambdaToContextualParam.kt b/compiler/testData/ir/irText/declarations/contextReceivers/passingLambdaToContextualParam.kt index a7ae2d35848..0ea8b12e367 100644 --- a/compiler/testData/ir/irText/declarations/contextReceivers/passingLambdaToContextualParam.kt +++ b/compiler/testData/ir/irText/declarations/contextReceivers/passingLambdaToContextualParam.kt @@ -1,4 +1,6 @@ // !LANGUAGE: +ContextReceivers +// KT-61141: K1/Native does not support context receivers +// IGNORE_BACKEND_K1: NATIVE class C { val result = "OK" diff --git a/compiler/testData/ir/irText/declarations/delegatedProperties.kt b/compiler/testData/ir/irText/declarations/delegatedProperties.kt index a1b3a919bad..589399a7cf4 100644 --- a/compiler/testData/ir/irText/declarations/delegatedProperties.kt +++ b/compiler/testData/ir/irText/declarations/delegatedProperties.kt @@ -1,6 +1,8 @@ // WITH_STDLIB // IGNORE_BACKEND: JS_IR // IGNORE_BACKEND: JS_IR_ES6 +// KT-61141: kotlin.collections.HashMap instead of java.util.HashMap +// IGNORE_BACKEND: NATIVE val test1 by lazy { 42 } diff --git a/compiler/testData/ir/irText/declarations/kt52677.kt b/compiler/testData/ir/irText/declarations/kt52677.kt index d87dd2816e9..9f800b3386e 100644 --- a/compiler/testData/ir/irText/declarations/kt52677.kt +++ b/compiler/testData/ir/irText/declarations/kt52677.kt @@ -2,6 +2,9 @@ // IGNORE_BACKEND: JS_IR // IGNORE_BACKEND: JS_IR_ES6 +// KT-61141: throws kotlin.RuntimeException instead of java.lang.RuntimeException +// IGNORE_BACKEND: NATIVE + @Target(AnnotationTarget.TYPE) annotation class MySerializable(val c: kotlin.reflect.KClass<*>) diff --git a/compiler/testData/ir/irText/declarations/localDelegatedProperties.kt b/compiler/testData/ir/irText/declarations/localDelegatedProperties.kt index f8730b7ab93..8d55ad7bcf2 100644 --- a/compiler/testData/ir/irText/declarations/localDelegatedProperties.kt +++ b/compiler/testData/ir/irText/declarations/localDelegatedProperties.kt @@ -2,6 +2,10 @@ // IGNORE_BACKEND: JS_IR // IGNORE_BACKEND: JS_IR_ES6 +// KT-61141: `println (message: kotlin.Any?)` instead of `println (message: kotlin.Int)` +// KT-61141: `kotlin.collections.HashMap` instead of `java.util.HashMap` +// IGNORE_BACKEND: NATIVE + fun test1() { val x by lazy { 42 } println(x) diff --git a/compiler/testData/ir/irText/declarations/multiplatform/expectIntersectionOverride.kt b/compiler/testData/ir/irText/declarations/multiplatform/expectIntersectionOverride.kt index d3691614b31..ae86cdec4ca 100644 --- a/compiler/testData/ir/irText/declarations/multiplatform/expectIntersectionOverride.kt +++ b/compiler/testData/ir/irText/declarations/multiplatform/expectIntersectionOverride.kt @@ -2,6 +2,9 @@ // IGNORE_BACKEND_K1: JVM_IR, JS_IR // !LANGUAGE: +MultiPlatformProjects +// KT-61141: NO_ACTUAL_FOR_EXPECT: Expected class 'C' has no actual declaration in module for Native (21,14) in /common.kt +// IGNORE_BACKEND_K1: NATIVE + // MODULE: common // FILE: common.kt diff --git a/compiler/testData/ir/irText/declarations/multiplatform/expectMemberInNotExpectClassFir.kt b/compiler/testData/ir/irText/declarations/multiplatform/expectMemberInNotExpectClassFir.kt index caf98ac4e2d..156cb471505 100644 --- a/compiler/testData/ir/irText/declarations/multiplatform/expectMemberInNotExpectClassFir.kt +++ b/compiler/testData/ir/irText/declarations/multiplatform/expectMemberInNotExpectClassFir.kt @@ -3,6 +3,9 @@ // SKIP_KLIB_TEST // LANGUAGE: +MultiPlatformProjects +// KT-61141: NO_ACTUAL_FOR_EXPECT: Expected class 'C1' has no actual declaration in module for Native (9,19) in /common.kt +// IGNORE_BACKEND_K1: NATIVE + // MODULE: common // FILE: common.kt diff --git a/compiler/testData/ir/irText/declarations/multiplatform/expectedEnumClass.kt b/compiler/testData/ir/irText/declarations/multiplatform/expectedEnumClass.kt index ba443a38b48..f72e8c2e5af 100644 --- a/compiler/testData/ir/irText/declarations/multiplatform/expectedEnumClass.kt +++ b/compiler/testData/ir/irText/declarations/multiplatform/expectedEnumClass.kt @@ -5,6 +5,9 @@ // IGNORE_BACKEND_K1: JS_IR // IGNORE_BACKEND_K1: JS_IR_ES6 +// KT-61141: absent enum fake_overrides: finalize, getDeclaringClass, clone +// IGNORE_BACKEND_K1: NATIVE + expect enum class MyEnum { FOO, BAR diff --git a/compiler/testData/ir/irText/declarations/packageLevelProperties.kt b/compiler/testData/ir/irText/declarations/packageLevelProperties.kt index 6002807ef6c..d2e1df308a8 100644 --- a/compiler/testData/ir/irText/declarations/packageLevelProperties.kt +++ b/compiler/testData/ir/irText/declarations/packageLevelProperties.kt @@ -1,6 +1,8 @@ // WITH_STDLIB // IGNORE_BACKEND: JS_IR // IGNORE_BACKEND: JS_IR_ES6 +// KT-61141: kotlin.collections.HashMap instead of java.util.HashMap +// IGNORE_BACKEND: NATIVE val test1 = 0 diff --git a/compiler/testData/ir/irText/declarations/parameters/useNextParamInLambda.kt b/compiler/testData/ir/irText/declarations/parameters/useNextParamInLambda.kt index 6ca1ce38985..8e4ac91de16 100644 --- a/compiler/testData/ir/irText/declarations/parameters/useNextParamInLambda.kt +++ b/compiler/testData/ir/irText/declarations/parameters/useNextParamInLambda.kt @@ -3,6 +3,8 @@ // LANGUAGE: -ProhibitIllegalValueParameterUsageInDefaultArguments // IGNORE_BACKEND_K1: JS_IR // IGNORE_BACKEND_K1: JS_IR_ES6 +// KT-61141: catches kotlin.Exception instead of java.lang.Exception +// IGNORE_BACKEND_K1: NATIVE fun f( f1: () -> String = { f2() }, diff --git a/compiler/testData/ir/irText/errors/unresolvedReference.kt b/compiler/testData/ir/irText/errors/unresolvedReference.kt index a889b26492c..ab052d4934d 100644 --- a/compiler/testData/ir/irText/errors/unresolvedReference.kt +++ b/compiler/testData/ir/irText/errors/unresolvedReference.kt @@ -4,6 +4,9 @@ // !IGNORE_ERRORS // DIAGNOSTICS: -UNRESOLVED_REFERENCE -OVERLOAD_RESOLUTION_AMBIGUITY +// KT-61141: org.jetbrains.kotlin.psi2ir.generators.ErrorExpressionException: null: KtNameReferenceExpression: unresolved +// IGNORE_BACKEND: NATIVE + val test1 = unresolved val test2: Unresolved = diff --git a/compiler/testData/ir/irText/expressions/badBreakContinue.kt b/compiler/testData/ir/irText/expressions/badBreakContinue.kt index 134657018e7..0c2e143975d 100644 --- a/compiler/testData/ir/irText/expressions/badBreakContinue.kt +++ b/compiler/testData/ir/irText/expressions/badBreakContinue.kt @@ -4,6 +4,9 @@ // !IGNORE_ERRORS // DIAGNOSTICS: -BREAK_OR_CONTINUE_OUTSIDE_A_LOOP -NOT_A_LOOP_LABEL -UNRESOLVED_REFERENCE -BREAK_OR_CONTINUE_JUMPS_ACROSS_FUNCTION_BOUNDARY +// KT-61141: java.lang.RuntimeException: Loop not found for break expression: break +// IGNORE_BACKEND: NATIVE + fun test1() { break continue diff --git a/compiler/testData/ir/irText/expressions/badInlinedBreakContinue.kt b/compiler/testData/ir/irText/expressions/badInlinedBreakContinue.kt index 9a4dc428fdd..a89afaabc34 100644 --- a/compiler/testData/ir/irText/expressions/badInlinedBreakContinue.kt +++ b/compiler/testData/ir/irText/expressions/badInlinedBreakContinue.kt @@ -6,6 +6,9 @@ // DIAGNOSTICS: -NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER -BREAK_OR_CONTINUE_OUTSIDE_A_LOOP -UNEXPECTED_TRAILING_LAMBDA_ON_A_NEW_LINE -NO_VALUE_FOR_PARAMETER -NOT_A_LOOP_LABEL -UNRESOLVED_REFERENCE -TYPE_MISMATCH -BREAK_OR_CONTINUE_JUMPS_ACROSS_FUNCTION_BOUNDARY // WITH_STDLIB +// KT-61141: NPE at org.jetbrains.kotlin.psi2ir.generators.ArgumentsGenerationUtilsKt.pregenerateValueArgumentsUsing() +// IGNORE_BACKEND: NATIVE + inline fun foo(block: () -> Unit) { block() } inline fun bar(block1: () -> Unit, noinline block2: () -> Unit) { diff --git a/compiler/testData/ir/irText/expressions/breakContinueInWhen.kt b/compiler/testData/ir/irText/expressions/breakContinueInWhen.kt index e04505c69b1..98687cc55ac 100644 --- a/compiler/testData/ir/irText/expressions/breakContinueInWhen.kt +++ b/compiler/testData/ir/irText/expressions/breakContinueInWhen.kt @@ -2,6 +2,9 @@ // IGNORE_BACKEND: JS_IR // IGNORE_BACKEND: JS_IR_ES6 +// KT-61141: throws kotlin.AssertionError instead of java.lang.AssertionError +// IGNORE_BACKEND: NATIVE + fun testBreakFor() { val xs = IntArray(10) { i -> i } var k = 0 diff --git a/compiler/testData/ir/irText/expressions/catchParameterAccess.kt b/compiler/testData/ir/irText/expressions/catchParameterAccess.kt index bcedd205283..1759cd9db11 100644 --- a/compiler/testData/ir/irText/expressions/catchParameterAccess.kt +++ b/compiler/testData/ir/irText/expressions/catchParameterAccess.kt @@ -2,5 +2,8 @@ // IGNORE_BACKEND: JS_IR // IGNORE_BACKEND: JS_IR_ES6 +// KT-61141: rethrows kotlin.Exception instead of java.lang.Exception +// IGNORE_BACKEND: NATIVE + fun test(f: () -> Unit) = try { f() } catch (e: Exception) { throw e } diff --git a/compiler/testData/ir/irText/expressions/enumEntryAsReceiver.kt b/compiler/testData/ir/irText/expressions/enumEntryAsReceiver.kt index 1d4eeb9516b..6b5a18d4b41 100644 --- a/compiler/testData/ir/irText/expressions/enumEntryAsReceiver.kt +++ b/compiler/testData/ir/irText/expressions/enumEntryAsReceiver.kt @@ -4,6 +4,9 @@ // MUTE_SIGNATURE_COMPARISON_K2: ANY // ^ KT-57427, KT-57430 +// KT-61141: absent enum fake_overrides: finalize, getDeclaringClass, clone +// IGNORE_BACKEND: NATIVE + enum class X { B { diff --git a/compiler/testData/ir/irText/expressions/enumEntryReferenceFromEnumEntryClass.kt b/compiler/testData/ir/irText/expressions/enumEntryReferenceFromEnumEntryClass.kt index 0adaf32f407..76411e8b393 100644 --- a/compiler/testData/ir/irText/expressions/enumEntryReferenceFromEnumEntryClass.kt +++ b/compiler/testData/ir/irText/expressions/enumEntryReferenceFromEnumEntryClass.kt @@ -4,6 +4,9 @@ // SKIP_SIGNATURE_DUMP // ^ Types of properties of anonymous classes generated by K1 and K2 are different +// KT-61141: absent enum fake_overrides: finalize, getDeclaringClass, clone +// IGNORE_BACKEND: NATIVE + enum class MyEnum { Z { var counter = 0 diff --git a/compiler/testData/ir/irText/expressions/exhaustiveWhenElseBranch.kt b/compiler/testData/ir/irText/expressions/exhaustiveWhenElseBranch.kt index 4b25ae6a3a8..832b32e7b95 100644 --- a/compiler/testData/ir/irText/expressions/exhaustiveWhenElseBranch.kt +++ b/compiler/testData/ir/irText/expressions/exhaustiveWhenElseBranch.kt @@ -1,6 +1,9 @@ // IGNORE_BACKEND: JS_IR // IGNORE_BACKEND: JS_IR_ES6 +// KT-61141: absent enum fake_overrides: finalize, getDeclaringClass, clone +// IGNORE_BACKEND: NATIVE + enum class A { V1 } fun testVariableAssignment_throws(a: A) { diff --git a/compiler/testData/ir/irText/expressions/for.kt b/compiler/testData/ir/irText/expressions/for.kt index 543479b295e..94986c0c697 100644 --- a/compiler/testData/ir/irText/expressions/for.kt +++ b/compiler/testData/ir/irText/expressions/for.kt @@ -2,6 +2,9 @@ // IGNORE_BACKEND: JS_IR // IGNORE_BACKEND: JS_IR_ES6 +// KT-61141: `println (message: kotlin.Any?)` instead of `println (message: kotlin.Int)` +// IGNORE_BACKEND: NATIVE + fun testEmpty(ss: List) { for (s in ss); } diff --git a/compiler/testData/ir/irText/expressions/forWithImplicitReceivers.kt b/compiler/testData/ir/irText/expressions/forWithImplicitReceivers.kt index 0cf433ed8eb..8888e351357 100644 --- a/compiler/testData/ir/irText/expressions/forWithImplicitReceivers.kt +++ b/compiler/testData/ir/irText/expressions/forWithImplicitReceivers.kt @@ -2,6 +2,9 @@ // IGNORE_BACKEND: JS_IR // IGNORE_BACKEND: JS_IR_ES6 +// KT-61141: `println (message: kotlin.Any?)` instead of `println (message: kotlin.Int)` +// IGNORE_BACKEND: NATIVE + object FiveTimes class IntCell(var value: Int) diff --git a/compiler/testData/ir/irText/expressions/funInterface/functionSupertype.sig.kt.txt b/compiler/testData/ir/irText/expressions/funInterface/functionSupertype.sig.kt.txt index 5b72fff70ca..dab916192e2 100644 --- a/compiler/testData/ir/irText/expressions/funInterface/functionSupertype.sig.kt.txt +++ b/compiler/testData/ir/irText/expressions/funInterface/functionSupertype.sig.kt.txt @@ -7,6 +7,10 @@ fun interface Foo : Function0 { // Mangled name: Foo#invoke(){}kotlin.Int // Public signature: /Foo.invoke|906964710558498066[0] // Public signature debug description: invoke(){}kotlin.Int + // CHECK JS_IR NATIVE: + // Mangled name: Foo#invoke(){} + // Public signature: /Foo.invoke|-4663091332620260873[0] + // Public signature debug description: invoke(){} abstract /* fake */ override operator fun invoke(): Int } @@ -15,6 +19,10 @@ fun interface Foo : Function0 { // Mangled name: #id(Foo){}kotlin.Any // Public signature: /id|-7816997914602483733[0] // Public signature debug description: id(Foo){}kotlin.Any +// CHECK JS_IR NATIVE: +// Mangled name: #id(Foo){} +// Public signature: /id|-443964874282345181[0] +// Public signature debug description: id(Foo){} fun id(foo: Foo): Any // CHECK: diff --git a/compiler/testData/ir/irText/expressions/kt30020.kt b/compiler/testData/ir/irText/expressions/kt30020.kt index 724dc64189f..d89268ce0e6 100644 --- a/compiler/testData/ir/irText/expressions/kt30020.kt +++ b/compiler/testData/ir/irText/expressions/kt30020.kt @@ -1,5 +1,5 @@ // WITH_STDLIB -// IGNORE_BACKEND_K2: JS_IR, JS_IR_ES6 +// IGNORE_BACKEND_K2: JS_IR, JS_IR_ES6, NATIVE // ^ the order of fake overrides is different on K2 interface X { diff --git a/compiler/testData/ir/irText/expressions/kt30796.kt b/compiler/testData/ir/irText/expressions/kt30796.kt index dabd5b33bfe..2f72221164e 100644 --- a/compiler/testData/ir/irText/expressions/kt30796.kt +++ b/compiler/testData/ir/irText/expressions/kt30796.kt @@ -1,6 +1,9 @@ // IGNORE_BACKEND: JS_IR // IGNORE_BACKEND: JS_IR_ES6 +// KT-61141: throws kotlin.Exception instead of java.lang.Exception +// IGNORE_BACKEND: NATIVE + fun magic(): T = throw Exception() fun test(value: T, value2: T) { diff --git a/compiler/testData/ir/irText/expressions/kt48708.kt b/compiler/testData/ir/irText/expressions/kt48708.kt index bb01b35cd04..b873222931e 100644 --- a/compiler/testData/ir/irText/expressions/kt48708.kt +++ b/compiler/testData/ir/irText/expressions/kt48708.kt @@ -2,6 +2,9 @@ // IGNORE_BACKEND: JS_IR_ES6 // ISSUE: KT-48708 +// KT-61141: throws kotlin.Exception instead of java.lang.Exception +// IGNORE_BACKEND: NATIVE + fun test(b: Boolean) { val x = if (b) { 3 diff --git a/compiler/testData/ir/irText/expressions/kt48806.kt b/compiler/testData/ir/irText/expressions/kt48806.kt index 136d18d8328..d32fbb263ef 100644 --- a/compiler/testData/ir/irText/expressions/kt48806.kt +++ b/compiler/testData/ir/irText/expressions/kt48806.kt @@ -3,6 +3,9 @@ // IGNORE_BACKEND: JS_IR_ES6 // ISSUE: KT-48806 +// KT-61141: throws kotlin.RuntimeException instead of java.lang.RuntimeException, and catches kotlin.Exception instead of java.lang.Exception +// IGNORE_BACKEND: NATIVE + class A { val test_1: Int = try{ throw RuntimeException() diff --git a/compiler/testData/ir/irText/expressions/objectAsCallable.kt b/compiler/testData/ir/irText/expressions/objectAsCallable.kt index 35167f2edaf..c903bf68ae6 100644 --- a/compiler/testData/ir/irText/expressions/objectAsCallable.kt +++ b/compiler/testData/ir/irText/expressions/objectAsCallable.kt @@ -1,6 +1,9 @@ // IGNORE_BACKEND: JS_IR // IGNORE_BACKEND: JS_IR_ES6 +// KT-61141: absent enum fake_overrides: finalize, getDeclaringClass, clone +// IGNORE_BACKEND: NATIVE + object A enum class En { X } diff --git a/compiler/testData/ir/irText/expressions/primitivesImplicitConversions.kt b/compiler/testData/ir/irText/expressions/primitivesImplicitConversions.kt index 4e188cacd0f..00dc773dd66 100644 --- a/compiler/testData/ir/irText/expressions/primitivesImplicitConversions.kt +++ b/compiler/testData/ir/irText/expressions/primitivesImplicitConversions.kt @@ -4,6 +4,9 @@ // IGNORE_BACKEND_K1: JS_IR // IGNORE_BACKEND_K1: JS_IR_ES6 +// KT-61141: Extra invocations of toLong(), toShort(), etc.. after unaryMinus() +// IGNORE_BACKEND_K1: NATIVE + val test1: Long = 42 val test2: Short = 42 val test3: Byte = 42 diff --git a/compiler/testData/ir/irText/expressions/smartCasts.kt b/compiler/testData/ir/irText/expressions/smartCasts.kt index 300a3cf5cba..628dad86e0e 100644 --- a/compiler/testData/ir/irText/expressions/smartCasts.kt +++ b/compiler/testData/ir/irText/expressions/smartCasts.kt @@ -3,6 +3,8 @@ // IGNORE_BACKEND: JS_IR // IGNORE_BACKEND: JS_IR_ES6 +// KT-61141: `println (message: kotlin.Any?)` instead of `println (message: kotlin.Int)` +// IGNORE_BACKEND: NATIVE fun expectsString(s: String) {} fun expectsInt(i: Int) {} diff --git a/compiler/testData/ir/irText/expressions/temporaryInEnumEntryInitializer.kt b/compiler/testData/ir/irText/expressions/temporaryInEnumEntryInitializer.kt index bb84e7adfc9..778bacfdf4d 100644 --- a/compiler/testData/ir/irText/expressions/temporaryInEnumEntryInitializer.kt +++ b/compiler/testData/ir/irText/expressions/temporaryInEnumEntryInitializer.kt @@ -1,6 +1,9 @@ // IGNORE_BACKEND: JS_IR // IGNORE_BACKEND: JS_IR_ES6 +// KT-61141: absent enum fake_overrides: finalize, getDeclaringClass, clone +// IGNORE_BACKEND: NATIVE + val n: Any? = null enum class En(val x: String?) { diff --git a/compiler/testData/ir/irText/expressions/values.kt b/compiler/testData/ir/irText/expressions/values.kt index c98a648a187..bcde79cf101 100644 --- a/compiler/testData/ir/irText/expressions/values.kt +++ b/compiler/testData/ir/irText/expressions/values.kt @@ -1,6 +1,9 @@ // IGNORE_BACKEND: JS_IR // IGNORE_BACKEND: JS_IR_ES6 +// KT-61141: absent enum fake_overrides: finalize, getDeclaringClass, clone +// IGNORE_BACKEND: NATIVE + enum class Enum { A } object A val a = 0 diff --git a/compiler/testData/ir/irText/expressions/whenSmartCastToEnum.kt b/compiler/testData/ir/irText/expressions/whenSmartCastToEnum.kt index 9b6dea1c212..d666003af02 100644 --- a/compiler/testData/ir/irText/expressions/whenSmartCastToEnum.kt +++ b/compiler/testData/ir/irText/expressions/whenSmartCastToEnum.kt @@ -1,6 +1,9 @@ // IGNORE_BACKEND: JS_IR // IGNORE_BACKEND: JS_IR_ES6 +// KT-61141: absent enum fake_overrides: finalize, getDeclaringClass, clone +// IGNORE_BACKEND: NATIVE + enum class En { A, B, C } fun test() { diff --git a/compiler/testData/ir/irText/firProblems/ArrayMap.kt b/compiler/testData/ir/irText/firProblems/ArrayMap.kt index 55955fb3e10..bfd733c0a17 100644 --- a/compiler/testData/ir/irText/firProblems/ArrayMap.kt +++ b/compiler/testData/ir/irText/firProblems/ArrayMap.kt @@ -3,6 +3,9 @@ // IGNORE_BACKEND: JS_IR // IGNORE_BACKEND: JS_IR_ES6 +// KT-61141: `set()` throws kotlin.IllegalStateException instead of java.lang.IllegalStateException +// IGNORE_BACKEND: NATIVE + sealed class ArrayMap : Iterable { abstract val size: Int diff --git a/compiler/testData/ir/irText/firProblems/ImplicitReceiverStack.kt b/compiler/testData/ir/irText/firProblems/ImplicitReceiverStack.kt index a308de1bf69..55c2b6fffec 100644 --- a/compiler/testData/ir/irText/firProblems/ImplicitReceiverStack.kt +++ b/compiler/testData/ir/irText/firProblems/ImplicitReceiverStack.kt @@ -7,6 +7,9 @@ // MUTE_SIGNATURE_COMPARISON_K2: ANY // ^ KT-57788 +// KT-61141: ImplicitReceiverStack & PersistentImplicitReceiverStack miss fake overrides `forEach` & `spliterator` +// IGNORE_BACKEND: NATIVE + interface SymbolOwner> interface Symbol> diff --git a/compiler/testData/ir/irText/firProblems/kt55458.kt b/compiler/testData/ir/irText/firProblems/kt55458.kt index d0d71c67006..7ca59c26584 100644 --- a/compiler/testData/ir/irText/firProblems/kt55458.kt +++ b/compiler/testData/ir/irText/firProblems/kt55458.kt @@ -4,6 +4,9 @@ // MUTE_SIGNATURE_COMPARISON_K2: JVM_IR // ^ KT-57755 +// KT-61141: `println (message: kotlin.Any?)` instead of `println (message: kotlin.Int)` +// IGNORE_BACKEND_K1: NATIVE + fun main() { val (a: Any, _) = 1 to 2 println(a) diff --git a/compiler/testData/ir/irText/firProblems/lambdaInEnumEntryConstructorCall.kt b/compiler/testData/ir/irText/firProblems/lambdaInEnumEntryConstructorCall.kt index 6faa4a6cbdf..5df311129fb 100644 --- a/compiler/testData/ir/irText/firProblems/lambdaInEnumEntryConstructorCall.kt +++ b/compiler/testData/ir/irText/firProblems/lambdaInEnumEntryConstructorCall.kt @@ -7,6 +7,9 @@ // MUTE_SIGNATURE_COMPARISON_K2: ANY // ^ KT-57427 +// KT-61141: absent enum fake_overrides: finalize, getDeclaringClass, clone +// IGNORE_BACKEND: NATIVE + class Wrapper(var baseUrl: String) enum class ConfigurationParameter { diff --git a/compiler/testData/ir/irText/firProblems/thisInEnumConstructor.kt b/compiler/testData/ir/irText/firProblems/thisInEnumConstructor.kt index 79113da3eb3..b94ade48ffd 100644 --- a/compiler/testData/ir/irText/firProblems/thisInEnumConstructor.kt +++ b/compiler/testData/ir/irText/firProblems/thisInEnumConstructor.kt @@ -2,6 +2,9 @@ // IGNORE_BACKEND: JS_IR // IGNORE_BACKEND: JS_IR_ES6 +// KT-61141: absent enum fake_overrides: finalize, getDeclaringClass, clone +// IGNORE_BACKEND: NATIVE + enum class EE(val myName: String = this.toString().lowercase()) { ENTRY; } diff --git a/compiler/testData/ir/irText/firProblems/typeVariableAfterBuildMap.kt b/compiler/testData/ir/irText/firProblems/typeVariableAfterBuildMap.kt index 23b9c5c073f..93ec15899d6 100644 --- a/compiler/testData/ir/irText/firProblems/typeVariableAfterBuildMap.kt +++ b/compiler/testData/ir/irText/firProblems/typeVariableAfterBuildMap.kt @@ -2,6 +2,9 @@ // IGNORE_BACKEND: JS_IR // IGNORE_BACKEND: JS_IR_ES6 +// KT-61141: mustCheckInImports throws kotlin.IllegalStateException instead of java.lang.IllegalStateException +// IGNORE_BACKEND: NATIVE + abstract class Visibility(val name: String, val isPublicAPI: Boolean) { open val internalDisplayName: String get() = name diff --git a/compiler/testData/ir/irText/firProblems/valueClassEquals.kt b/compiler/testData/ir/irText/firProblems/valueClassEquals.kt index ad55071d0b7..86842d24a4c 100644 --- a/compiler/testData/ir/irText/firProblems/valueClassEquals.kt +++ b/compiler/testData/ir/irText/firProblems/valueClassEquals.kt @@ -1,5 +1,5 @@ // SKIP_KLIB_TEST -// IGNORE_BACKEND: JS_IR +// TARGET_BACKEND: JVM // WITH_STDLIB // LANGUAGE: +ValueClasses diff --git a/compiler/testData/ir/irText/lambdas/nonLocalReturn.kt b/compiler/testData/ir/irText/lambdas/nonLocalReturn.kt index 40f9608a9a3..15576919794 100644 --- a/compiler/testData/ir/irText/lambdas/nonLocalReturn.kt +++ b/compiler/testData/ir/irText/lambdas/nonLocalReturn.kt @@ -3,6 +3,9 @@ // IGNORE_BACKEND: JS_IR // IGNORE_BACKEND: JS_IR_ES6 +// KT-61141: In testLrmFoo1 and testLrmFoo2, `print (message: kotlin.Any?)` instead of `print (message: kotlin.Int)` +// IGNORE_BACKEND: NATIVE + fun test0() { run { return diff --git a/compiler/testData/ir/irText/singletons/enumEntry.kt b/compiler/testData/ir/irText/singletons/enumEntry.kt index 8a47a1b0bae..40b6b38bc1a 100644 --- a/compiler/testData/ir/irText/singletons/enumEntry.kt +++ b/compiler/testData/ir/irText/singletons/enumEntry.kt @@ -4,6 +4,9 @@ // MUTE_SIGNATURE_COMPARISON_K2: ANY // ^ KT-57775, KT-57430 +// KT-61141: absent enum fake_overrides: finalize, getDeclaringClass, clone +// IGNORE_BACKEND: NATIVE + enum class Z { ENTRY { fun test() {} diff --git a/compiler/testData/ir/irText/types/intersectionTypeInSamType.kt b/compiler/testData/ir/irText/types/intersectionTypeInSamType.kt index 455ec43bf7c..c6cc27b0c17 100644 --- a/compiler/testData/ir/irText/types/intersectionTypeInSamType.kt +++ b/compiler/testData/ir/irText/types/intersectionTypeInSamType.kt @@ -2,6 +2,8 @@ // IGNORE_BACKEND_K1: JS_IR // IGNORE_BACKEND_K1: JS_IR_ES6 +// KT-61141: difference in IR for implicit cast +// IGNORE_BACKEND_K1: NATIVE interface X interface Z diff --git a/compiler/testData/ir/irText/types/kt49526.kt b/compiler/testData/ir/irText/types/kt49526.kt index d2e5988b7bd..1132dc8657a 100644 --- a/compiler/testData/ir/irText/types/kt49526.kt +++ b/compiler/testData/ir/irText/types/kt49526.kt @@ -3,6 +3,9 @@ // IGNORE_BACKEND: JS_IR // IGNORE_BACKEND: JS_IR_ES6 +// KT-61141: For result of `+`, Native backend inferred type Comparable instead of Nothing +// IGNORE_BACKEND: NATIVE + fun test(): Boolean { val ref = (listOf('a') + "-")::contains return ref('a') diff --git a/compiler/testData/ir/irText/types/typeAliasWithUnsafeVariance.kt b/compiler/testData/ir/irText/types/typeAliasWithUnsafeVariance.kt index d7c7b42ccf7..1d3ac82245d 100644 --- a/compiler/testData/ir/irText/types/typeAliasWithUnsafeVariance.kt +++ b/compiler/testData/ir/irText/types/typeAliasWithUnsafeVariance.kt @@ -1,6 +1,9 @@ // KT-42036 // IGNORE_BACKEND: JS_IR +// KT-61141: getTag() throws kotlin.Exception instead of java.lang.Exception +// IGNORE_BACKEND: NATIVE + typealias Action = (@UnsafeVariance RenderingT) -> Unit data class Tag(val action: Action) diff --git a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/backend/ir/IrBackendInput.kt b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/backend/ir/IrBackendInput.kt index dd73cb207a6..63c6624c7ad 100644 --- a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/backend/ir/IrBackendInput.kt +++ b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/backend/ir/IrBackendInput.kt @@ -142,4 +142,18 @@ sealed class IrBackendInput : ResultingArtifact.BackendInput() { override val diagnosticReporter: BaseDiagnosticsCollector get() = state.diagnosticReporter as BaseDiagnosticsCollector } + + // Actually, class won't be used as a real input for the Native backend during blackbox testing, since such testing is done via a different engine. + // In irText tests, this class is used only as Native-specific FIR2IR output to render and dump IR. + // So, no source files, icData, error flag, serialization lambda, etc are needed. + class NativeBackendInput( + override val irModuleFragment: IrModuleFragment, + override val dependentIrModuleFragments: List, + override val irPluginContext: IrPluginContext, + override val diagnosticReporter: BaseDiagnosticsCollector, + override val descriptorMangler: KotlinMangler.DescriptorMangler, + override val irMangler: KotlinMangler.IrMangler, + override val firMangler: FirMangler?, + override var irActualizerResult: IrActualizedResult? = null, + ) : IrBackendInput() } diff --git a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/classic/ClassicFrontendFacade.kt b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/classic/ClassicFrontendFacade.kt index dfc9943bd13..d58507a7675 100644 --- a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/classic/ClassicFrontendFacade.kt +++ b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/classic/ClassicFrontendFacade.kt @@ -16,7 +16,7 @@ import org.jetbrains.kotlin.backend.common.CommonKLibResolver import org.jetbrains.kotlin.builtins.DefaultBuiltIns import org.jetbrains.kotlin.builtins.KotlinBuiltIns import org.jetbrains.kotlin.builtins.jvm.JvmBuiltIns -import org.jetbrains.kotlin.cli.common.messages.AnalyzerWithCompilerReport +import org.jetbrains.kotlin.builtins.konan.KonanBuiltIns import org.jetbrains.kotlin.cli.js.klib.TopDownAnalyzerFacadeForJSIR import org.jetbrains.kotlin.cli.js.klib.TopDownAnalyzerFacadeForWasm import org.jetbrains.kotlin.cli.jvm.compiler.JvmPackagePartProvider @@ -31,6 +31,7 @@ import org.jetbrains.kotlin.container.get import org.jetbrains.kotlin.context.ModuleContext import org.jetbrains.kotlin.context.ProjectContext import org.jetbrains.kotlin.context.withModule +import org.jetbrains.kotlin.descriptors.ModuleCapability import org.jetbrains.kotlin.descriptors.ModuleDescriptor import org.jetbrains.kotlin.descriptors.PackageFragmentProvider import org.jetbrains.kotlin.descriptors.impl.CompositePackageFragmentProvider @@ -42,34 +43,32 @@ import org.jetbrains.kotlin.incremental.components.EnumWhenTracker import org.jetbrains.kotlin.incremental.components.ExpectActualTracker import org.jetbrains.kotlin.incremental.components.InlineConstTracker import org.jetbrains.kotlin.incremental.components.LookupTracker -import org.jetbrains.kotlin.ir.backend.js.* +import org.jetbrains.kotlin.ir.backend.js.JsFactories +import org.jetbrains.kotlin.ir.backend.js.resolverLogger import org.jetbrains.kotlin.js.analyze.TopDownAnalyzerFacadeForJS import org.jetbrains.kotlin.js.config.JSConfigurationKeys import org.jetbrains.kotlin.js.config.WasmTarget +import org.jetbrains.kotlin.library.metadata.CurrentKlibModuleOrigin +import org.jetbrains.kotlin.library.metadata.KlibMetadataFactories +import org.jetbrains.kotlin.library.metadata.KlibModuleOrigin +import org.jetbrains.kotlin.library.metadata.NullFlexibleTypeDeserializer import org.jetbrains.kotlin.library.unresolvedDependencies import org.jetbrains.kotlin.load.java.lazy.SingleModuleClassResolver import org.jetbrains.kotlin.load.kotlin.ModuleVisibilityManager import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.native.FakeTopDownAnalyzerFacadeForNative -import org.jetbrains.kotlin.platform.CommonPlatforms +import org.jetbrains.kotlin.platform.* import org.jetbrains.kotlin.platform.TargetPlatform -import org.jetbrains.kotlin.platform.isCommon -import org.jetbrains.kotlin.platform.isJs -import org.jetbrains.kotlin.platform.isWasm import org.jetbrains.kotlin.platform.jvm.JvmPlatforms import org.jetbrains.kotlin.platform.jvm.isJvm import org.jetbrains.kotlin.platform.konan.isNative import org.jetbrains.kotlin.psi.KtFile -import org.jetbrains.kotlin.resolve.LazyTopDownAnalyzer -import org.jetbrains.kotlin.resolve.PlatformDependentAnalyzerServices -import org.jetbrains.kotlin.resolve.TargetEnvironment -import org.jetbrains.kotlin.resolve.TopDownAnalysisMode +import org.jetbrains.kotlin.resolve.* import org.jetbrains.kotlin.resolve.jvm.JavaDescriptorResolver import org.jetbrains.kotlin.resolve.lazy.KotlinCodeAnalyzer import org.jetbrains.kotlin.resolve.lazy.declarations.FileBasedDeclarationProviderFactory import org.jetbrains.kotlin.storage.LockBasedStorageManager import org.jetbrains.kotlin.storage.StorageManager -import org.jetbrains.kotlin.test.directives.ConfigurationDirectives import org.jetbrains.kotlin.test.directives.JvmEnvironmentConfigurationDirectives import org.jetbrains.kotlin.test.model.DependencyRelation import org.jetbrains.kotlin.test.model.FrontendFacade @@ -275,7 +274,11 @@ class ClassicFrontendFacade( ) } - private fun loadKlib(names: List, configuration: CompilerConfiguration): List { + private fun loadKlib( + factories: KlibMetadataFactories, + names: List, + configuration: CompilerConfiguration + ): List { val resolvedLibraries = CommonKLibResolver.resolve( names, configuration.resolverLogger @@ -289,7 +292,7 @@ class ClassicFrontendFacade( val storageManager = LockBasedStorageManager("ModulesStructure") val isBuiltIns = resolvedLibrary.library.unresolvedDependencies.isEmpty() - val moduleDescriptor = JsFactories.DefaultDeserializedDescriptorFactory.createDescriptorOptionalBuiltIns( + val moduleDescriptor = factories.DefaultDeserializedDescriptorFactory.createDescriptorOptionalBuiltIns( resolvedLibrary.library, configuration.languageVersionSettings, storageManager, @@ -317,7 +320,7 @@ class ClassicFrontendFacade( friendsDescriptors: List, ): AnalysisResult { val runtimeKlibsNames = JsEnvironmentConfigurator.getRuntimePathsForModule(module, testServices) - val runtimeKlibs = loadKlib(runtimeKlibsNames, configuration) + val runtimeKlibs = loadKlib(JsFactories, runtimeKlibsNames, configuration) val transitiveLibraries = getDependencies(module, testServices, DependencyRelation.RegularDependency) val friendLibraries = getDependencies(module, testServices, DependencyRelation.FriendDependency) val allDependencies = runtimeKlibs + dependencyDescriptors + friendLibraries + friendsDescriptors + transitiveLibraries @@ -359,7 +362,7 @@ class ClassicFrontendFacade( File(it).absolutePath } - val runtimeKlibs = loadKlib(runtimeKlibsNames, configuration) + val runtimeKlibs = loadKlib(JsFactories, runtimeKlibsNames, configuration) val transitiveLibraries = getDependencies(module, testServices, DependencyRelation.RegularDependency) val friendLibraries = getDependencies(module, testServices, DependencyRelation.FriendDependency) val allDependencies = runtimeKlibs + dependencyDescriptors + friendLibraries + friendsDescriptors + transitiveLibraries @@ -391,15 +394,23 @@ class ClassicFrontendFacade( ): AnalysisResult { val moduleTrace = NoScopeRecordCliBindingTrace() val runtimeKlibsNames = NativeEnvironmentConfigurator.getRuntimePathsForModule(module, testServices) - val runtimeKlibs = loadKlib(runtimeKlibsNames, configuration).mapNotNull { it as? ModuleDescriptorImpl } + val nativeFactories = KlibMetadataFactories(::KonanBuiltIns, NullFlexibleTypeDeserializer) + val runtimeKlibs = loadKlib(nativeFactories, runtimeKlibsNames, configuration).mapNotNull { it as? ModuleDescriptorImpl } + val stdlibBuiltInsModule = runtimeKlibs.single { it.name == Name.special("") }.builtIns.builtInsModule val moduleContext = createModuleContext( module, project, dependencyDescriptors = dependencyDescriptors + runtimeKlibs, friendsDescriptors = friendsDescriptors, - dependsOnDescriptors = dependsOnDescriptors + dependsOnDescriptors = dependsOnDescriptors, + capabilities = mapOf( + // provides `klibModuleOrigin` capability needed in `ModuleDescriptor.isFromInteropLibrary()` + KlibModuleOrigin.CAPABILITY to CurrentKlibModuleOrigin, + ), ) { - DefaultBuiltIns() + KonanBuiltIns(it).apply { + builtInsModule = stdlibBuiltInsModule + } } return FakeTopDownAnalyzerFacadeForNative.analyzeFilesWithGivenTrace( files, @@ -472,18 +483,21 @@ class ClassicFrontendFacade( dependencyDescriptors: List, friendsDescriptors: List, dependsOnDescriptors: List, + capabilities: Map, Any?> = emptyMap(), builtInsFactory: (StorageManager) -> KotlinBuiltIns, ): ModuleContext { val projectContext = ProjectContext(project, "test project context") val storageManager = projectContext.storageManager val builtIns = builtInsFactory(storageManager) - val moduleDescriptor = ModuleDescriptorImpl(Name.special("<${module.name}>"), storageManager, builtIns, module.targetPlatform) - val dependencies = buildList { + val moduleDescriptor = ModuleDescriptorImpl( + Name.special("<${module.name}>"), storageManager, builtIns, module.targetPlatform, capabilities + ) + val dependencies = buildSet { add(moduleDescriptor) add(moduleDescriptor.builtIns.builtInsModule) addAll(dependencyDescriptors) - } + }.toList() moduleDescriptor.setDependencies( ModuleDependenciesImpl( allDependencies = dependencies, diff --git a/compiler/tests-gen/org/jetbrains/kotlin/klib/KlibIrTextTestCaseGenerated.java b/compiler/tests-gen/org/jetbrains/kotlin/klib/KlibIrTextTestCaseGenerated.java index 6d9fbcc8171..c5f4c993f1f 100644 --- a/compiler/tests-gen/org/jetbrains/kotlin/klib/KlibIrTextTestCaseGenerated.java +++ b/compiler/tests-gen/org/jetbrains/kotlin/klib/KlibIrTextTestCaseGenerated.java @@ -77,11 +77,6 @@ public class KlibIrTextTestCaseGenerated extends AbstractKlibIrTextTestCase { runTest("compiler/testData/ir/irText/classes/classes.kt"); } - @TestMetadata("cloneable.kt") - public void testCloneable() throws Exception { - runTest("compiler/testData/ir/irText/classes/cloneable.kt"); - } - @TestMetadata("companionObject.kt") public void testCompanionObject() throws Exception { runTest("compiler/testData/ir/irText/classes/companionObject.kt"); @@ -2163,11 +2158,6 @@ public class KlibIrTextTestCaseGenerated extends AbstractKlibIrTextTestCase { runTest("compiler/testData/ir/irText/firProblems/typeVariableAfterBuildMap.kt"); } - @TestMetadata("valueClassEquals.kt") - public void testValueClassEquals() throws Exception { - runTest("compiler/testData/ir/irText/firProblems/valueClassEquals.kt"); - } - @TestMetadata("VarInInit.kt") public void testVarInInit() throws Exception { runTest("compiler/testData/ir/irText/firProblems/VarInInit.kt"); diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirLightTreeJsIrTextTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirLightTreeJsIrTextTestGenerated.java index 00060c1398b..fb8b07b91f9 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirLightTreeJsIrTextTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirLightTreeJsIrTextTestGenerated.java @@ -76,12 +76,6 @@ public class FirLightTreeJsIrTextTestGenerated extends AbstractFirLightTreeJsIrT runTest("compiler/testData/ir/irText/classes/classes.kt"); } - @Test - @TestMetadata("cloneable.kt") - public void testCloneable() throws Exception { - runTest("compiler/testData/ir/irText/classes/cloneable.kt"); - } - @Test @TestMetadata("companionObject.kt") public void testCompanionObject() throws Exception { @@ -2484,12 +2478,6 @@ public class FirLightTreeJsIrTextTestGenerated extends AbstractFirLightTreeJsIrT runTest("compiler/testData/ir/irText/firProblems/typeVariableAfterBuildMap.kt"); } - @Test - @TestMetadata("valueClassEquals.kt") - public void testValueClassEquals() throws Exception { - runTest("compiler/testData/ir/irText/firProblems/valueClassEquals.kt"); - } - @Test @TestMetadata("VarInInit.kt") public void testVarInInit() throws Exception { diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirPsiJsIrTextTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirPsiJsIrTextTestGenerated.java index 592cb23f918..3ebad436a83 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirPsiJsIrTextTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirPsiJsIrTextTestGenerated.java @@ -76,12 +76,6 @@ public class FirPsiJsIrTextTestGenerated extends AbstractFirPsiJsIrTextTest { runTest("compiler/testData/ir/irText/classes/classes.kt"); } - @Test - @TestMetadata("cloneable.kt") - public void testCloneable() throws Exception { - runTest("compiler/testData/ir/irText/classes/cloneable.kt"); - } - @Test @TestMetadata("companionObject.kt") public void testCompanionObject() throws Exception { @@ -2484,12 +2478,6 @@ public class FirPsiJsIrTextTestGenerated extends AbstractFirPsiJsIrTextTest { runTest("compiler/testData/ir/irText/firProblems/typeVariableAfterBuildMap.kt"); } - @Test - @TestMetadata("valueClassEquals.kt") - public void testValueClassEquals() throws Exception { - runTest("compiler/testData/ir/irText/firProblems/valueClassEquals.kt"); - } - @Test @TestMetadata("VarInInit.kt") public void testVarInInit() throws Exception { diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/ClassicJsIrTextTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/ClassicJsIrTextTestGenerated.java index 0e8d6013978..f2b91a81257 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/ClassicJsIrTextTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/ClassicJsIrTextTestGenerated.java @@ -76,12 +76,6 @@ public class ClassicJsIrTextTestGenerated extends AbstractClassicJsIrTextTest { runTest("compiler/testData/ir/irText/classes/classes.kt"); } - @Test - @TestMetadata("cloneable.kt") - public void testCloneable() throws Exception { - runTest("compiler/testData/ir/irText/classes/cloneable.kt"); - } - @Test @TestMetadata("companionObject.kt") public void testCompanionObject() throws Exception { @@ -2484,12 +2478,6 @@ public class ClassicJsIrTextTestGenerated extends AbstractClassicJsIrTextTest { runTest("compiler/testData/ir/irText/firProblems/typeVariableAfterBuildMap.kt"); } - @Test - @TestMetadata("valueClassEquals.kt") - public void testValueClassEquals() throws Exception { - runTest("compiler/testData/ir/irText/firProblems/valueClassEquals.kt"); - } - @Test @TestMetadata("VarInInit.kt") public void testVarInInit() throws Exception { diff --git a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/irtext/ClassicNativeIrTextTestGenerated.java b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/irtext/ClassicNativeIrTextTestGenerated.java new file mode 100644 index 00000000000..e8d792b30e9 --- /dev/null +++ b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/irtext/ClassicNativeIrTextTestGenerated.java @@ -0,0 +1,2923 @@ +/* + * Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.konan.irtext; + +import com.intellij.testFramework.TestDataPath; +import org.jetbrains.kotlin.test.util.KtTestUtil; +import org.jetbrains.kotlin.test.TargetBackend; +import org.jetbrains.kotlin.test.TestMetadata; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; + +import java.io.File; +import java.util.regex.Pattern; + +/** This class is generated by {@link org.jetbrains.kotlin.generators.tests.GenerateNativeTestsKt}. DO NOT MODIFY MANUALLY */ +@SuppressWarnings("all") +@TestMetadata("compiler/testData/ir/irText") +@TestDataPath("$PROJECT_ROOT") +public class ClassicNativeIrTextTestGenerated extends AbstractClassicNativeIrTextTest { + @Test + public void testAllFilesPresentInIrText() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/ir/irText"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.NATIVE, true); + } + + @Nested + @TestMetadata("compiler/testData/ir/irText/classes") + @TestDataPath("$PROJECT_ROOT") + public class Classes { + @Test + @TestMetadata("47424.kt") + public void test47424() throws Exception { + runTest("compiler/testData/ir/irText/classes/47424.kt"); + } + + @Test + @TestMetadata("abstractMembers.kt") + public void testAbstractMembers() throws Exception { + runTest("compiler/testData/ir/irText/classes/abstractMembers.kt"); + } + + @Test + public void testAllFilesPresentInClasses() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/ir/irText/classes"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.NATIVE, true); + } + + @Test + @TestMetadata("annotationClasses.kt") + public void testAnnotationClasses() throws Exception { + runTest("compiler/testData/ir/irText/classes/annotationClasses.kt"); + } + + @Test + @TestMetadata("argumentReorderingInDelegatingConstructorCall.kt") + public void testArgumentReorderingInDelegatingConstructorCall() throws Exception { + runTest("compiler/testData/ir/irText/classes/argumentReorderingInDelegatingConstructorCall.kt"); + } + + @Test + @TestMetadata("clashingFakeOverrideSignatures.kt") + public void testClashingFakeOverrideSignatures() throws Exception { + runTest("compiler/testData/ir/irText/classes/clashingFakeOverrideSignatures.kt"); + } + + @Test + @TestMetadata("classMembers.kt") + public void testClassMembers() throws Exception { + runTest("compiler/testData/ir/irText/classes/classMembers.kt"); + } + + @Test + @TestMetadata("classes.kt") + public void testClasses() throws Exception { + runTest("compiler/testData/ir/irText/classes/classes.kt"); + } + + @Test + @TestMetadata("companionObject.kt") + public void testCompanionObject() throws Exception { + runTest("compiler/testData/ir/irText/classes/companionObject.kt"); + } + + @Test + @TestMetadata("declarationOrder.kt") + public void testDeclarationOrder() throws Exception { + runTest("compiler/testData/ir/irText/classes/declarationOrder.kt"); + } + + @Test + @TestMetadata("delegatedGenericImplementation.kt") + public void testDelegatedGenericImplementation() throws Exception { + runTest("compiler/testData/ir/irText/classes/delegatedGenericImplementation.kt"); + } + + @Test + @TestMetadata("delegatedImplementation.kt") + public void testDelegatedImplementation() throws Exception { + runTest("compiler/testData/ir/irText/classes/delegatedImplementation.kt"); + } + + @Test + @TestMetadata("delegatedImplementationWithExplicitOverride.kt") + public void testDelegatedImplementationWithExplicitOverride() throws Exception { + runTest("compiler/testData/ir/irText/classes/delegatedImplementationWithExplicitOverride.kt"); + } + + @Test + @TestMetadata("delegatingConstructorCallToTypeAliasConstructor.kt") + public void testDelegatingConstructorCallToTypeAliasConstructor() throws Exception { + runTest("compiler/testData/ir/irText/classes/delegatingConstructorCallToTypeAliasConstructor.kt"); + } + + @Test + @TestMetadata("delegatingConstructorCallsInSecondaryConstructors.kt") + public void testDelegatingConstructorCallsInSecondaryConstructors() throws Exception { + runTest("compiler/testData/ir/irText/classes/delegatingConstructorCallsInSecondaryConstructors.kt"); + } + + @Test + @TestMetadata("enum.kt") + public void testEnum() throws Exception { + runTest("compiler/testData/ir/irText/classes/enum.kt"); + } + + @Test + @TestMetadata("enumClassModality.kt") + public void testEnumClassModality() throws Exception { + runTest("compiler/testData/ir/irText/classes/enumClassModality.kt"); + } + + @Test + @TestMetadata("enumWithMultipleCtors.kt") + public void testEnumWithMultipleCtors() throws Exception { + runTest("compiler/testData/ir/irText/classes/enumWithMultipleCtors.kt"); + } + + @Test + @TestMetadata("enumWithSecondaryCtor.kt") + public void testEnumWithSecondaryCtor() throws Exception { + runTest("compiler/testData/ir/irText/classes/enumWithSecondaryCtor.kt"); + } + + @Test + @TestMetadata("fakeOverridesForAnyMembers.kt") + public void testFakeOverridesForAnyMembers() throws Exception { + runTest("compiler/testData/ir/irText/classes/fakeOverridesForAnyMembers.kt"); + } + + @Test + @TestMetadata("initBlock.kt") + public void testInitBlock() throws Exception { + runTest("compiler/testData/ir/irText/classes/initBlock.kt"); + } + + @Test + @TestMetadata("initVal.kt") + public void testInitVal() throws Exception { + runTest("compiler/testData/ir/irText/classes/initVal.kt"); + } + + @Test + @TestMetadata("initValInLambda.kt") + public void testInitValInLambda() throws Exception { + runTest("compiler/testData/ir/irText/classes/initValInLambda.kt"); + } + + @Test + @TestMetadata("initVar.kt") + public void testInitVar() throws Exception { + runTest("compiler/testData/ir/irText/classes/initVar.kt"); + } + + @Test + @TestMetadata("inlineClass.kt") + public void testInlineClass() throws Exception { + runTest("compiler/testData/ir/irText/classes/inlineClass.kt"); + } + + @Test + @TestMetadata("inlineClassSyntheticMethods.kt") + public void testInlineClassSyntheticMethods() throws Exception { + runTest("compiler/testData/ir/irText/classes/inlineClassSyntheticMethods.kt"); + } + + @Test + @TestMetadata("innerClass.kt") + public void testInnerClass() throws Exception { + runTest("compiler/testData/ir/irText/classes/innerClass.kt"); + } + + @Test + @TestMetadata("innerClassWithDelegatingConstructor.kt") + public void testInnerClassWithDelegatingConstructor() throws Exception { + runTest("compiler/testData/ir/irText/classes/innerClassWithDelegatingConstructor.kt"); + } + + @Test + @TestMetadata("kt19306.kt") + public void testKt19306() throws Exception { + runTest("compiler/testData/ir/irText/classes/kt19306.kt"); + } + + @Test + @TestMetadata("localClasses.kt") + public void testLocalClasses() throws Exception { + runTest("compiler/testData/ir/irText/classes/localClasses.kt"); + } + + @Test + @TestMetadata("objectLiteralExpressions.kt") + public void testObjectLiteralExpressions() throws Exception { + runTest("compiler/testData/ir/irText/classes/objectLiteralExpressions.kt"); + } + + @Test + @TestMetadata("objectWithInitializers.kt") + public void testObjectWithInitializers() throws Exception { + runTest("compiler/testData/ir/irText/classes/objectWithInitializers.kt"); + } + + @Test + @TestMetadata("outerClassAccess.kt") + public void testOuterClassAccess() throws Exception { + runTest("compiler/testData/ir/irText/classes/outerClassAccess.kt"); + } + + @Test + @TestMetadata("primaryConstructor.kt") + public void testPrimaryConstructor() throws Exception { + runTest("compiler/testData/ir/irText/classes/primaryConstructor.kt"); + } + + @Test + @TestMetadata("primaryConstructorWithSuperConstructorCall.kt") + public void testPrimaryConstructorWithSuperConstructorCall() throws Exception { + runTest("compiler/testData/ir/irText/classes/primaryConstructorWithSuperConstructorCall.kt"); + } + + @Test + @TestMetadata("qualifiedSuperCalls.kt") + public void testQualifiedSuperCalls() throws Exception { + runTest("compiler/testData/ir/irText/classes/qualifiedSuperCalls.kt"); + } + + @Test + @TestMetadata("sealedClasses.kt") + public void testSealedClasses() throws Exception { + runTest("compiler/testData/ir/irText/classes/sealedClasses.kt"); + } + + @Test + @TestMetadata("secondaryConstructorWithInitializersFromClassBody.kt") + public void testSecondaryConstructorWithInitializersFromClassBody() throws Exception { + runTest("compiler/testData/ir/irText/classes/secondaryConstructorWithInitializersFromClassBody.kt"); + } + + @Test + @TestMetadata("secondaryConstructors.kt") + public void testSecondaryConstructors() throws Exception { + runTest("compiler/testData/ir/irText/classes/secondaryConstructors.kt"); + } + + @Test + @TestMetadata("smartCastInValInitialization.kt") + public void testSmartCastInValInitialization() throws Exception { + runTest("compiler/testData/ir/irText/classes/smartCastInValInitialization.kt"); + } + + @Test + @TestMetadata("superCalls.kt") + public void testSuperCalls() throws Exception { + runTest("compiler/testData/ir/irText/classes/superCalls.kt"); + } + + @Test + @TestMetadata("superCallsComposed.kt") + public void testSuperCallsComposed() throws Exception { + runTest("compiler/testData/ir/irText/classes/superCallsComposed.kt"); + } + + @Nested + @TestMetadata("compiler/testData/ir/irText/classes/dataClasses") + @TestDataPath("$PROJECT_ROOT") + public class DataClasses { + @Test + public void testAllFilesPresentInDataClasses() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/ir/irText/classes/dataClasses"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.NATIVE, true); + } + + @Test + @TestMetadata("dataClassWithArrayMembers.kt") + public void testDataClassWithArrayMembers() throws Exception { + runTest("compiler/testData/ir/irText/classes/dataClasses/dataClassWithArrayMembers.kt"); + } + + @Test + @TestMetadata("dataClasses.kt") + public void testDataClasses() throws Exception { + runTest("compiler/testData/ir/irText/classes/dataClasses/dataClasses.kt"); + } + + @Test + @TestMetadata("dataClassesGeneric.kt") + public void testDataClassesGeneric() throws Exception { + runTest("compiler/testData/ir/irText/classes/dataClasses/dataClassesGeneric.kt"); + } + + @Test + @TestMetadata("dataObject.kt") + public void testDataObject() throws Exception { + runTest("compiler/testData/ir/irText/classes/dataClasses/dataObject.kt"); + } + + @Test + @TestMetadata("delegationInSealed.kt") + public void testDelegationInSealed() throws Exception { + runTest("compiler/testData/ir/irText/classes/dataClasses/delegationInSealed.kt"); + } + + @Test + @TestMetadata("kt31649.kt") + public void testKt31649() throws Exception { + runTest("compiler/testData/ir/irText/classes/dataClasses/kt31649.kt"); + } + + @Test + @TestMetadata("kt49936.kt") + public void testKt49936() throws Exception { + runTest("compiler/testData/ir/irText/classes/dataClasses/kt49936.kt"); + } + + @Test + @TestMetadata("lambdaInDataClassDefaultParameter.kt") + public void testLambdaInDataClassDefaultParameter() throws Exception { + runTest("compiler/testData/ir/irText/classes/dataClasses/lambdaInDataClassDefaultParameter.kt"); + } + + @Test + @TestMetadata("openDataClass.kt") + public void testOpenDataClass() throws Exception { + runTest("compiler/testData/ir/irText/classes/dataClasses/openDataClass.kt"); + } + } + } + + @Nested + @TestMetadata("compiler/testData/ir/irText/declarations") + @TestDataPath("$PROJECT_ROOT") + public class Declarations { + @Test + public void testAllFilesPresentInDeclarations() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/ir/irText/declarations"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.NATIVE, true); + } + + @Test + @TestMetadata("catchParameterInTopLevelProperty.kt") + public void testCatchParameterInTopLevelProperty() throws Exception { + runTest("compiler/testData/ir/irText/declarations/catchParameterInTopLevelProperty.kt"); + } + + @Test + @TestMetadata("classLevelProperties.kt") + public void testClassLevelProperties() throws Exception { + runTest("compiler/testData/ir/irText/declarations/classLevelProperties.kt"); + } + + @Test + @TestMetadata("constValInitializers.kt") + public void testConstValInitializers() throws Exception { + runTest("compiler/testData/ir/irText/declarations/constValInitializers.kt"); + } + + @Test + @TestMetadata("defaultArguments.kt") + public void testDefaultArguments() throws Exception { + runTest("compiler/testData/ir/irText/declarations/defaultArguments.kt"); + } + + @Test + @TestMetadata("delegatedProperties.kt") + public void testDelegatedProperties() throws Exception { + runTest("compiler/testData/ir/irText/declarations/delegatedProperties.kt"); + } + + @Test + @TestMetadata("deprecatedProperty.kt") + public void testDeprecatedProperty() throws Exception { + runTest("compiler/testData/ir/irText/declarations/deprecatedProperty.kt"); + } + + @Test + @TestMetadata("extensionProperties.kt") + public void testExtensionProperties() throws Exception { + runTest("compiler/testData/ir/irText/declarations/extensionProperties.kt"); + } + + @Test + @TestMetadata("fakeOverrides.kt") + public void testFakeOverrides() throws Exception { + runTest("compiler/testData/ir/irText/declarations/fakeOverrides.kt"); + } + + @Test + @TestMetadata("fileWithTypeAliasesOnly.kt") + public void testFileWithTypeAliasesOnly() throws Exception { + runTest("compiler/testData/ir/irText/declarations/fileWithTypeAliasesOnly.kt"); + } + + @Test + @TestMetadata("genericDelegatedProperty.kt") + public void testGenericDelegatedProperty() throws Exception { + runTest("compiler/testData/ir/irText/declarations/genericDelegatedProperty.kt"); + } + + @Test + @TestMetadata("inlineCollectionOfInlineClass.kt") + public void testInlineCollectionOfInlineClass() throws Exception { + runTest("compiler/testData/ir/irText/declarations/inlineCollectionOfInlineClass.kt"); + } + + @Test + @TestMetadata("interfaceProperties.kt") + public void testInterfaceProperties() throws Exception { + runTest("compiler/testData/ir/irText/declarations/interfaceProperties.kt"); + } + + @Test + @TestMetadata("kt27005.kt") + public void testKt27005() throws Exception { + runTest("compiler/testData/ir/irText/declarations/kt27005.kt"); + } + + @Test + @TestMetadata("kt35550.kt") + public void testKt35550() throws Exception { + runTest("compiler/testData/ir/irText/declarations/kt35550.kt"); + } + + @Test + @TestMetadata("kt45308.kt") + public void testKt45308() throws Exception { + runTest("compiler/testData/ir/irText/declarations/kt45308.kt"); + } + + @Test + @TestMetadata("kt47527.kt") + public void testKt47527() throws Exception { + runTest("compiler/testData/ir/irText/declarations/kt47527.kt"); + } + + @Test + @TestMetadata("kt52677.kt") + public void testKt52677() throws Exception { + runTest("compiler/testData/ir/irText/declarations/kt52677.kt"); + } + + @Test + @TestMetadata("localClassWithOverrides.kt") + public void testLocalClassWithOverrides() throws Exception { + runTest("compiler/testData/ir/irText/declarations/localClassWithOverrides.kt"); + } + + @Test + @TestMetadata("localDelegatedProperties.kt") + public void testLocalDelegatedProperties() throws Exception { + runTest("compiler/testData/ir/irText/declarations/localDelegatedProperties.kt"); + } + + @Test + @TestMetadata("localVarInDoWhile.kt") + public void testLocalVarInDoWhile() throws Exception { + runTest("compiler/testData/ir/irText/declarations/localVarInDoWhile.kt"); + } + + @Test + @TestMetadata("packageLevelProperties.kt") + public void testPackageLevelProperties() throws Exception { + runTest("compiler/testData/ir/irText/declarations/packageLevelProperties.kt"); + } + + @Test + @TestMetadata("primaryCtorDefaultArguments.kt") + public void testPrimaryCtorDefaultArguments() throws Exception { + runTest("compiler/testData/ir/irText/declarations/primaryCtorDefaultArguments.kt"); + } + + @Test + @TestMetadata("primaryCtorProperties.kt") + public void testPrimaryCtorProperties() throws Exception { + runTest("compiler/testData/ir/irText/declarations/primaryCtorProperties.kt"); + } + + @Test + @TestMetadata("typeAlias.kt") + public void testTypeAlias() throws Exception { + runTest("compiler/testData/ir/irText/declarations/typeAlias.kt"); + } + + @Nested + @TestMetadata("compiler/testData/ir/irText/declarations/annotations") + @TestDataPath("$PROJECT_ROOT") + public class Annotations { + @Test + public void testAllFilesPresentInAnnotations() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/ir/irText/declarations/annotations"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.NATIVE, true); + } + + @Test + @TestMetadata("annotationOnClassWithInitializer.kt") + public void testAnnotationOnClassWithInitializer() throws Exception { + runTest("compiler/testData/ir/irText/declarations/annotations/annotationOnClassWithInitializer.kt"); + } + + @Test + @TestMetadata("annotationsInAnnotationArguments.kt") + public void testAnnotationsInAnnotationArguments() throws Exception { + runTest("compiler/testData/ir/irText/declarations/annotations/annotationsInAnnotationArguments.kt"); + } + + @Test + @TestMetadata("annotationsOnDelegatedMembers.kt") + public void testAnnotationsOnDelegatedMembers() throws Exception { + runTest("compiler/testData/ir/irText/declarations/annotations/annotationsOnDelegatedMembers.kt"); + } + + @Test + @TestMetadata("annotationsWithDefaultParameterValues.kt") + public void testAnnotationsWithDefaultParameterValues() throws Exception { + runTest("compiler/testData/ir/irText/declarations/annotations/annotationsWithDefaultParameterValues.kt"); + } + + @Test + @TestMetadata("annotationsWithVarargParameters.kt") + public void testAnnotationsWithVarargParameters() throws Exception { + runTest("compiler/testData/ir/irText/declarations/annotations/annotationsWithVarargParameters.kt"); + } + + @Test + @TestMetadata("arrayInAnnotationArguments.kt") + public void testArrayInAnnotationArguments() throws Exception { + runTest("compiler/testData/ir/irText/declarations/annotations/arrayInAnnotationArguments.kt"); + } + + @Test + @TestMetadata("classLiteralInAnnotation.kt") + public void testClassLiteralInAnnotation() throws Exception { + runTest("compiler/testData/ir/irText/declarations/annotations/classLiteralInAnnotation.kt"); + } + + @Test + @TestMetadata("classesWithAnnotations.kt") + public void testClassesWithAnnotations() throws Exception { + runTest("compiler/testData/ir/irText/declarations/annotations/classesWithAnnotations.kt"); + } + + @Test + @TestMetadata("constExpressionsInAnnotationArguments.kt") + public void testConstExpressionsInAnnotationArguments() throws Exception { + runTest("compiler/testData/ir/irText/declarations/annotations/constExpressionsInAnnotationArguments.kt"); + } + + @Test + @TestMetadata("constructorsWithAnnotations.kt") + public void testConstructorsWithAnnotations() throws Exception { + runTest("compiler/testData/ir/irText/declarations/annotations/constructorsWithAnnotations.kt"); + } + + @Test + @TestMetadata("delegateFieldWithAnnotations.kt") + public void testDelegateFieldWithAnnotations() throws Exception { + runTest("compiler/testData/ir/irText/declarations/annotations/delegateFieldWithAnnotations.kt"); + } + + @Test + @TestMetadata("delegatedPropertyAccessorsWithAnnotations.kt") + public void testDelegatedPropertyAccessorsWithAnnotations() throws Exception { + runTest("compiler/testData/ir/irText/declarations/annotations/delegatedPropertyAccessorsWithAnnotations.kt"); + } + + @Test + @TestMetadata("enumEntriesWithAnnotations.kt") + public void testEnumEntriesWithAnnotations() throws Exception { + runTest("compiler/testData/ir/irText/declarations/annotations/enumEntriesWithAnnotations.kt"); + } + + @Test + @TestMetadata("enumsInAnnotationArguments.kt") + public void testEnumsInAnnotationArguments() throws Exception { + runTest("compiler/testData/ir/irText/declarations/annotations/enumsInAnnotationArguments.kt"); + } + + @Test + @TestMetadata("fieldsWithAnnotations.kt") + public void testFieldsWithAnnotations() throws Exception { + runTest("compiler/testData/ir/irText/declarations/annotations/fieldsWithAnnotations.kt"); + } + + @Test + @TestMetadata("fileAnnotations.kt") + public void testFileAnnotations() throws Exception { + runTest("compiler/testData/ir/irText/declarations/annotations/fileAnnotations.kt"); + } + + @Test + @TestMetadata("functionsWithAnnotations.kt") + public void testFunctionsWithAnnotations() throws Exception { + runTest("compiler/testData/ir/irText/declarations/annotations/functionsWithAnnotations.kt"); + } + + @Test + @TestMetadata("genericAnnotationClasses.kt") + public void testGenericAnnotationClasses() throws Exception { + runTest("compiler/testData/ir/irText/declarations/annotations/genericAnnotationClasses.kt"); + } + + @Test + @TestMetadata("inheritingDeprecation.kt") + public void testInheritingDeprecation() throws Exception { + runTest("compiler/testData/ir/irText/declarations/annotations/inheritingDeprecation.kt"); + } + + @Test + @TestMetadata("localDelegatedPropertiesWithAnnotations.kt") + public void testLocalDelegatedPropertiesWithAnnotations() throws Exception { + runTest("compiler/testData/ir/irText/declarations/annotations/localDelegatedPropertiesWithAnnotations.kt"); + } + + @Test + @TestMetadata("multipleAnnotationsInSquareBrackets.kt") + public void testMultipleAnnotationsInSquareBrackets() throws Exception { + runTest("compiler/testData/ir/irText/declarations/annotations/multipleAnnotationsInSquareBrackets.kt"); + } + + @Test + @TestMetadata("primaryConstructorParameterWithAnnotations.kt") + public void testPrimaryConstructorParameterWithAnnotations() throws Exception { + runTest("compiler/testData/ir/irText/declarations/annotations/primaryConstructorParameterWithAnnotations.kt"); + } + + @Test + @TestMetadata("propertiesWithAnnotations.kt") + public void testPropertiesWithAnnotations() throws Exception { + runTest("compiler/testData/ir/irText/declarations/annotations/propertiesWithAnnotations.kt"); + } + + @Test + @TestMetadata("propertyAccessorsFromClassHeaderWithAnnotations.kt") + public void testPropertyAccessorsFromClassHeaderWithAnnotations() throws Exception { + runTest("compiler/testData/ir/irText/declarations/annotations/propertyAccessorsFromClassHeaderWithAnnotations.kt"); + } + + @Test + @TestMetadata("propertyAccessorsWithAnnotations.kt") + public void testPropertyAccessorsWithAnnotations() throws Exception { + runTest("compiler/testData/ir/irText/declarations/annotations/propertyAccessorsWithAnnotations.kt"); + } + + @Test + @TestMetadata("propertySetterParameterWithAnnotations.kt") + public void testPropertySetterParameterWithAnnotations() throws Exception { + runTest("compiler/testData/ir/irText/declarations/annotations/propertySetterParameterWithAnnotations.kt"); + } + + @Test + @TestMetadata("receiverParameterWithAnnotations.kt") + public void testReceiverParameterWithAnnotations() throws Exception { + runTest("compiler/testData/ir/irText/declarations/annotations/receiverParameterWithAnnotations.kt"); + } + + @Test + @TestMetadata("spreadOperatorInAnnotationArguments.kt") + public void testSpreadOperatorInAnnotationArguments() throws Exception { + runTest("compiler/testData/ir/irText/declarations/annotations/spreadOperatorInAnnotationArguments.kt"); + } + + @Test + @TestMetadata("typeAliasesWithAnnotations.kt") + public void testTypeAliasesWithAnnotations() throws Exception { + runTest("compiler/testData/ir/irText/declarations/annotations/typeAliasesWithAnnotations.kt"); + } + + @Test + @TestMetadata("typeParametersWithAnnotations.kt") + public void testTypeParametersWithAnnotations() throws Exception { + runTest("compiler/testData/ir/irText/declarations/annotations/typeParametersWithAnnotations.kt"); + } + + @Test + @TestMetadata("valueParametersWithAnnotations.kt") + public void testValueParametersWithAnnotations() throws Exception { + runTest("compiler/testData/ir/irText/declarations/annotations/valueParametersWithAnnotations.kt"); + } + + @Test + @TestMetadata("varargsInAnnotationArguments.kt") + public void testVarargsInAnnotationArguments() throws Exception { + runTest("compiler/testData/ir/irText/declarations/annotations/varargsInAnnotationArguments.kt"); + } + + @Test + @TestMetadata("variablesWithAnnotations.kt") + public void testVariablesWithAnnotations() throws Exception { + runTest("compiler/testData/ir/irText/declarations/annotations/variablesWithAnnotations.kt"); + } + } + + @Nested + @TestMetadata("compiler/testData/ir/irText/declarations/contextReceivers") + @TestDataPath("$PROJECT_ROOT") + public class ContextReceivers { + @Test + public void testAllFilesPresentInContextReceivers() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/ir/irText/declarations/contextReceivers"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.NATIVE, true); + } + + @Test + @TestMetadata("arrayAccessCompositeOperators.kt") + public void testArrayAccessCompositeOperators() throws Exception { + runTest("compiler/testData/ir/irText/declarations/contextReceivers/arrayAccessCompositeOperators.kt"); + } + + @Test + @TestMetadata("arrayAccessOperators.kt") + public void testArrayAccessOperators() throws Exception { + runTest("compiler/testData/ir/irText/declarations/contextReceivers/arrayAccessOperators.kt"); + } + + @Test + @TestMetadata("class.kt") + public void testClass() throws Exception { + runTest("compiler/testData/ir/irText/declarations/contextReceivers/class.kt"); + } + + @Test + @TestMetadata("compoundAssignmentOperators.kt") + public void testCompoundAssignmentOperators() throws Exception { + runTest("compiler/testData/ir/irText/declarations/contextReceivers/compoundAssignmentOperators.kt"); + } + + @Test + @TestMetadata("contextReceiverMethod.kt") + public void testContextReceiverMethod() throws Exception { + runTest("compiler/testData/ir/irText/declarations/contextReceivers/contextReceiverMethod.kt"); + } + + @Test + @TestMetadata("contextualFunctionConversion.kt") + public void testContextualFunctionConversion() throws Exception { + runTest("compiler/testData/ir/irText/declarations/contextReceivers/contextualFunctionConversion.kt"); + } + + @Test + @TestMetadata("contextualInlineCall.kt") + public void testContextualInlineCall() throws Exception { + runTest("compiler/testData/ir/irText/declarations/contextReceivers/contextualInlineCall.kt"); + } + + @Test + @TestMetadata("contextualPrimaryConstructorWithParams.kt") + public void testContextualPrimaryConstructorWithParams() throws Exception { + runTest("compiler/testData/ir/irText/declarations/contextReceivers/contextualPrimaryConstructorWithParams.kt"); + } + + @Test + @TestMetadata("delegatedPropertiesOperators.kt") + public void testDelegatedPropertiesOperators() throws Exception { + runTest("compiler/testData/ir/irText/declarations/contextReceivers/delegatedPropertiesOperators.kt"); + } + + @Test + @TestMetadata("function.kt") + public void testFunction() throws Exception { + runTest("compiler/testData/ir/irText/declarations/contextReceivers/function.kt"); + } + + @Test + @TestMetadata("functionalType.kt") + public void testFunctionalType() throws Exception { + runTest("compiler/testData/ir/irText/declarations/contextReceivers/functionalType.kt"); + } + + @Test + @TestMetadata("genericOuterClass.kt") + public void testGenericOuterClass() throws Exception { + runTest("compiler/testData/ir/irText/declarations/contextReceivers/genericOuterClass.kt"); + } + + @Test + @TestMetadata("iteratorOperator.kt") + public void testIteratorOperator() throws Exception { + runTest("compiler/testData/ir/irText/declarations/contextReceivers/iteratorOperator.kt"); + } + + @Test + @TestMetadata("kt52791.kt") + public void testKt52791() throws Exception { + runTest("compiler/testData/ir/irText/declarations/contextReceivers/kt52791.kt"); + } + + @Test + @TestMetadata("lazy.kt") + public void testLazy() throws Exception { + runTest("compiler/testData/ir/irText/declarations/contextReceivers/lazy.kt"); + } + + @Test + @TestMetadata("overloadPriority.kt") + public void testOverloadPriority() throws Exception { + runTest("compiler/testData/ir/irText/declarations/contextReceivers/overloadPriority.kt"); + } + + @Test + @TestMetadata("overloading.kt") + public void testOverloading() throws Exception { + runTest("compiler/testData/ir/irText/declarations/contextReceivers/overloading.kt"); + } + + @Test + @TestMetadata("passingLambdaToContextualParam.kt") + public void testPassingLambdaToContextualParam() throws Exception { + runTest("compiler/testData/ir/irText/declarations/contextReceivers/passingLambdaToContextualParam.kt"); + } + + @Test + @TestMetadata("plusMatrix.kt") + public void testPlusMatrix() throws Exception { + runTest("compiler/testData/ir/irText/declarations/contextReceivers/plusMatrix.kt"); + } + + @Test + @TestMetadata("property.kt") + public void testProperty() throws Exception { + runTest("compiler/testData/ir/irText/declarations/contextReceivers/property.kt"); + } + + @Test + @TestMetadata("thisWithCustomLabel.kt") + public void testThisWithCustomLabel() throws Exception { + runTest("compiler/testData/ir/irText/declarations/contextReceivers/thisWithCustomLabel.kt"); + } + + @Test + @TestMetadata("typeParameterAsContextReceiver.kt") + public void testTypeParameterAsContextReceiver() throws Exception { + runTest("compiler/testData/ir/irText/declarations/contextReceivers/typeParameterAsContextReceiver.kt"); + } + + @Test + @TestMetadata("unaryOperators.kt") + public void testUnaryOperators() throws Exception { + runTest("compiler/testData/ir/irText/declarations/contextReceivers/unaryOperators.kt"); + } + + @Nested + @TestMetadata("compiler/testData/ir/irText/declarations/contextReceivers/fromKEEP") + @TestDataPath("$PROJECT_ROOT") + public class FromKEEP { + @Test + public void testAllFilesPresentInFromKEEP() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/ir/irText/declarations/contextReceivers/fromKEEP"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.NATIVE, true); + } + + @Test + @TestMetadata("canvas.kt") + public void testCanvas() throws Exception { + runTest("compiler/testData/ir/irText/declarations/contextReceivers/fromKEEP/canvas.kt"); + } + + @Test + @TestMetadata("compareTo.kt") + public void testCompareTo() throws Exception { + runTest("compiler/testData/ir/irText/declarations/contextReceivers/fromKEEP/compareTo.kt"); + } + + @Test + @TestMetadata("dp.kt") + public void testDp() throws Exception { + runTest("compiler/testData/ir/irText/declarations/contextReceivers/fromKEEP/dp.kt"); + } + + @Test + @TestMetadata("functionalType.kt") + public void testFunctionalType() throws Exception { + runTest("compiler/testData/ir/irText/declarations/contextReceivers/fromKEEP/functionalType.kt"); + } + + @Test + @TestMetadata("monoidSum.kt") + public void testMonoidSum() throws Exception { + runTest("compiler/testData/ir/irText/declarations/contextReceivers/fromKEEP/monoidSum.kt"); + } + } + } + + @Nested + @TestMetadata("compiler/testData/ir/irText/declarations/delegate") + @TestDataPath("$PROJECT_ROOT") + public class Delegate { + @Test + public void testAllFilesPresentInDelegate() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/ir/irText/declarations/delegate"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.NATIVE, true); + } + + @Test + @TestMetadata("delegationEvaluationOrder1.kt") + public void testDelegationEvaluationOrder1() throws Exception { + runTest("compiler/testData/ir/irText/declarations/delegate/delegationEvaluationOrder1.kt"); + } + + @Test + @TestMetadata("delegationEvaluationOrder2.kt") + public void testDelegationEvaluationOrder2() throws Exception { + runTest("compiler/testData/ir/irText/declarations/delegate/delegationEvaluationOrder2.kt"); + } + } + + @Nested + @TestMetadata("compiler/testData/ir/irText/declarations/jvmRecord") + @TestDataPath("$PROJECT_ROOT") + public class JvmRecord { + @Test + public void testAllFilesPresentInJvmRecord() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/ir/irText/declarations/jvmRecord"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.NATIVE, true); + } + } + + @Nested + @TestMetadata("compiler/testData/ir/irText/declarations/multiplatform") + @TestDataPath("$PROJECT_ROOT") + public class Multiplatform { + @Test + public void testAllFilesPresentInMultiplatform() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/ir/irText/declarations/multiplatform"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.NATIVE, true); + } + + @Test + @TestMetadata("expectClassInherited.kt") + public void testExpectClassInherited() throws Exception { + runTest("compiler/testData/ir/irText/declarations/multiplatform/expectClassInherited.kt"); + } + + @Test + @TestMetadata("expectIntersectionOverride.kt") + public void testExpectIntersectionOverride() throws Exception { + runTest("compiler/testData/ir/irText/declarations/multiplatform/expectIntersectionOverride.kt"); + } + + @Test + @TestMetadata("expectMemberInNotExpectClass.kt") + public void testExpectMemberInNotExpectClass() throws Exception { + runTest("compiler/testData/ir/irText/declarations/multiplatform/expectMemberInNotExpectClass.kt"); + } + + @Test + @TestMetadata("expectMemberInNotExpectClassFir.kt") + public void testExpectMemberInNotExpectClassFir() throws Exception { + runTest("compiler/testData/ir/irText/declarations/multiplatform/expectMemberInNotExpectClassFir.kt"); + } + + @Test + @TestMetadata("expectedEnumClass.kt") + public void testExpectedEnumClass() throws Exception { + runTest("compiler/testData/ir/irText/declarations/multiplatform/expectedEnumClass.kt"); + } + + @Test + @TestMetadata("expectedEnumClass2.kt") + public void testExpectedEnumClass2() throws Exception { + runTest("compiler/testData/ir/irText/declarations/multiplatform/expectedEnumClass2.kt"); + } + + @Test + @TestMetadata("expectedSealedClass.kt") + public void testExpectedSealedClass() throws Exception { + runTest("compiler/testData/ir/irText/declarations/multiplatform/expectedSealedClass.kt"); + } + } + + @Nested + @TestMetadata("compiler/testData/ir/irText/declarations/parameters") + @TestDataPath("$PROJECT_ROOT") + public class Parameters { + @Test + public void testAllFilesPresentInParameters() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/ir/irText/declarations/parameters"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.NATIVE, true); + } + + @Test + @TestMetadata("class.kt") + public void testClass() throws Exception { + runTest("compiler/testData/ir/irText/declarations/parameters/class.kt"); + } + + @Test + @TestMetadata("constructor.kt") + public void testConstructor() throws Exception { + runTest("compiler/testData/ir/irText/declarations/parameters/constructor.kt"); + } + + @Test + @TestMetadata("dataClassMembers.kt") + public void testDataClassMembers() throws Exception { + runTest("compiler/testData/ir/irText/declarations/parameters/dataClassMembers.kt"); + } + + @Test + @TestMetadata("defaultPropertyAccessors.kt") + public void testDefaultPropertyAccessors() throws Exception { + runTest("compiler/testData/ir/irText/declarations/parameters/defaultPropertyAccessors.kt"); + } + + @Test + @TestMetadata("delegatedMembers.kt") + public void testDelegatedMembers() throws Exception { + runTest("compiler/testData/ir/irText/declarations/parameters/delegatedMembers.kt"); + } + + @Test + @TestMetadata("fun.kt") + public void testFun() throws Exception { + runTest("compiler/testData/ir/irText/declarations/parameters/fun.kt"); + } + + @Test + @TestMetadata("genericInnerClass.kt") + public void testGenericInnerClass() throws Exception { + runTest("compiler/testData/ir/irText/declarations/parameters/genericInnerClass.kt"); + } + + @Test + @TestMetadata("lambdas.kt") + public void testLambdas() throws Exception { + runTest("compiler/testData/ir/irText/declarations/parameters/lambdas.kt"); + } + + @Test + @TestMetadata("localFun.kt") + public void testLocalFun() throws Exception { + runTest("compiler/testData/ir/irText/declarations/parameters/localFun.kt"); + } + + @Test + @TestMetadata("propertyAccessors.kt") + public void testPropertyAccessors() throws Exception { + runTest("compiler/testData/ir/irText/declarations/parameters/propertyAccessors.kt"); + } + + @Test + @TestMetadata("typeParameterBeforeBound.kt") + public void testTypeParameterBeforeBound() throws Exception { + runTest("compiler/testData/ir/irText/declarations/parameters/typeParameterBeforeBound.kt"); + } + + @Test + @TestMetadata("typeParameterBoundedBySubclass.kt") + public void testTypeParameterBoundedBySubclass() throws Exception { + runTest("compiler/testData/ir/irText/declarations/parameters/typeParameterBoundedBySubclass.kt"); + } + + @Test + @TestMetadata("useNextParamInLambda.kt") + public void testUseNextParamInLambda() throws Exception { + runTest("compiler/testData/ir/irText/declarations/parameters/useNextParamInLambda.kt"); + } + } + + @Nested + @TestMetadata("compiler/testData/ir/irText/declarations/provideDelegate") + @TestDataPath("$PROJECT_ROOT") + public class ProvideDelegate { + @Test + public void testAllFilesPresentInProvideDelegate() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/ir/irText/declarations/provideDelegate"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.NATIVE, true); + } + + @Test + @TestMetadata("differentReceivers.kt") + public void testDifferentReceivers() throws Exception { + runTest("compiler/testData/ir/irText/declarations/provideDelegate/differentReceivers.kt"); + } + + @Test + @TestMetadata("local.kt") + public void testLocal() throws Exception { + runTest("compiler/testData/ir/irText/declarations/provideDelegate/local.kt"); + } + + @Test + @TestMetadata("localDifferentReceivers.kt") + public void testLocalDifferentReceivers() throws Exception { + runTest("compiler/testData/ir/irText/declarations/provideDelegate/localDifferentReceivers.kt"); + } + + @Test + @TestMetadata("member.kt") + public void testMember() throws Exception { + runTest("compiler/testData/ir/irText/declarations/provideDelegate/member.kt"); + } + + @Test + @TestMetadata("memberExtension.kt") + public void testMemberExtension() throws Exception { + runTest("compiler/testData/ir/irText/declarations/provideDelegate/memberExtension.kt"); + } + + @Test + @TestMetadata("topLevel.kt") + public void testTopLevel() throws Exception { + runTest("compiler/testData/ir/irText/declarations/provideDelegate/topLevel.kt"); + } + } + } + + @Nested + @TestMetadata("compiler/testData/ir/irText/errors") + @TestDataPath("$PROJECT_ROOT") + public class Errors { + @Test + public void testAllFilesPresentInErrors() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/ir/irText/errors"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.NATIVE, true); + } + + @Test + @TestMetadata("suppressedNonPublicCall.kt") + public void testSuppressedNonPublicCall() throws Exception { + runTest("compiler/testData/ir/irText/errors/suppressedNonPublicCall.kt"); + } + + @Test + @TestMetadata("unresolvedReference.kt") + public void testUnresolvedReference() throws Exception { + runTest("compiler/testData/ir/irText/errors/unresolvedReference.kt"); + } + } + + @Nested + @TestMetadata("compiler/testData/ir/irText/expressions") + @TestDataPath("$PROJECT_ROOT") + public class Expressions { + @Test + public void testAllFilesPresentInExpressions() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/ir/irText/expressions"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.NATIVE, true); + } + + @Test + @TestMetadata("argumentMappedWithError.kt") + public void testArgumentMappedWithError() throws Exception { + runTest("compiler/testData/ir/irText/expressions/argumentMappedWithError.kt"); + } + + @Test + @TestMetadata("arrayAccess.kt") + public void testArrayAccess() throws Exception { + runTest("compiler/testData/ir/irText/expressions/arrayAccess.kt"); + } + + @Test + @TestMetadata("arrayAssignment.kt") + public void testArrayAssignment() throws Exception { + runTest("compiler/testData/ir/irText/expressions/arrayAssignment.kt"); + } + + @Test + @TestMetadata("arrayAugmentedAssignment1.kt") + public void testArrayAugmentedAssignment1() throws Exception { + runTest("compiler/testData/ir/irText/expressions/arrayAugmentedAssignment1.kt"); + } + + @Test + @TestMetadata("arrayAugmentedAssignment2.kt") + public void testArrayAugmentedAssignment2() throws Exception { + runTest("compiler/testData/ir/irText/expressions/arrayAugmentedAssignment2.kt"); + } + + @Test + @TestMetadata("assignments.kt") + public void testAssignments() throws Exception { + runTest("compiler/testData/ir/irText/expressions/assignments.kt"); + } + + @Test + @TestMetadata("augmentedAssignment1.kt") + public void testAugmentedAssignment1() throws Exception { + runTest("compiler/testData/ir/irText/expressions/augmentedAssignment1.kt"); + } + + @Test + @TestMetadata("augmentedAssignment2.kt") + public void testAugmentedAssignment2() throws Exception { + runTest("compiler/testData/ir/irText/expressions/augmentedAssignment2.kt"); + } + + @Test + @TestMetadata("augmentedAssignmentWithExpression.kt") + public void testAugmentedAssignmentWithExpression() throws Exception { + runTest("compiler/testData/ir/irText/expressions/augmentedAssignmentWithExpression.kt"); + } + + @Test + @TestMetadata("badBreakContinue.kt") + public void testBadBreakContinue() throws Exception { + runTest("compiler/testData/ir/irText/expressions/badBreakContinue.kt"); + } + + @Test + @TestMetadata("badInlinedBreakContinue.kt") + public void testBadInlinedBreakContinue() throws Exception { + runTest("compiler/testData/ir/irText/expressions/badInlinedBreakContinue.kt"); + } + + @Test + @TestMetadata("bangbang.kt") + public void testBangbang() throws Exception { + runTest("compiler/testData/ir/irText/expressions/bangbang.kt"); + } + + @Test + @TestMetadata("booleanConstsInAndAndOrOr.kt") + public void testBooleanConstsInAndAndOrOr() throws Exception { + runTest("compiler/testData/ir/irText/expressions/booleanConstsInAndAndOrOr.kt"); + } + + @Test + @TestMetadata("booleanOperators.kt") + public void testBooleanOperators() throws Exception { + runTest("compiler/testData/ir/irText/expressions/booleanOperators.kt"); + } + + @Test + @TestMetadata("boundCallableReferences.kt") + public void testBoundCallableReferences() throws Exception { + runTest("compiler/testData/ir/irText/expressions/boundCallableReferences.kt"); + } + + @Test + @TestMetadata("boxOk.kt") + public void testBoxOk() throws Exception { + runTest("compiler/testData/ir/irText/expressions/boxOk.kt"); + } + + @Test + @TestMetadata("breakContinue.kt") + public void testBreakContinue() throws Exception { + runTest("compiler/testData/ir/irText/expressions/breakContinue.kt"); + } + + @Test + @TestMetadata("breakContinueInLoopHeader.kt") + public void testBreakContinueInLoopHeader() throws Exception { + runTest("compiler/testData/ir/irText/expressions/breakContinueInLoopHeader.kt"); + } + + @Test + @TestMetadata("breakContinueInWhen.kt") + public void testBreakContinueInWhen() throws Exception { + runTest("compiler/testData/ir/irText/expressions/breakContinueInWhen.kt"); + } + + @Test + @TestMetadata("builtinOperators.kt") + public void testBuiltinOperators() throws Exception { + runTest("compiler/testData/ir/irText/expressions/builtinOperators.kt"); + } + + @Test + @TestMetadata("callWithReorderedArguments.kt") + public void testCallWithReorderedArguments() throws Exception { + runTest("compiler/testData/ir/irText/expressions/callWithReorderedArguments.kt"); + } + + @Test + @TestMetadata("calls.kt") + public void testCalls() throws Exception { + runTest("compiler/testData/ir/irText/expressions/calls.kt"); + } + + @Test + @TestMetadata("castToTypeParameter.kt") + public void testCastToTypeParameter() throws Exception { + runTest("compiler/testData/ir/irText/expressions/castToTypeParameter.kt"); + } + + @Test + @TestMetadata("catchParameterAccess.kt") + public void testCatchParameterAccess() throws Exception { + runTest("compiler/testData/ir/irText/expressions/catchParameterAccess.kt"); + } + + @Test + @TestMetadata("chainOfSafeCalls.kt") + public void testChainOfSafeCalls() throws Exception { + runTest("compiler/testData/ir/irText/expressions/chainOfSafeCalls.kt"); + } + + @Test + @TestMetadata("chainedFunSuspendConversionForSimpleExpression.kt") + public void testChainedFunSuspendConversionForSimpleExpression() throws Exception { + runTest("compiler/testData/ir/irText/expressions/chainedFunSuspendConversionForSimpleExpression.kt"); + } + + @Test + @TestMetadata("complexAugmentedAssignment.kt") + public void testComplexAugmentedAssignment() throws Exception { + runTest("compiler/testData/ir/irText/expressions/complexAugmentedAssignment.kt"); + } + + @Test + @TestMetadata("contructorCall.kt") + public void testContructorCall() throws Exception { + runTest("compiler/testData/ir/irText/expressions/contructorCall.kt"); + } + + @Test + @TestMetadata("conventionComparisons.kt") + public void testConventionComparisons() throws Exception { + runTest("compiler/testData/ir/irText/expressions/conventionComparisons.kt"); + } + + @Test + @TestMetadata("destructuring1.kt") + public void testDestructuring1() throws Exception { + runTest("compiler/testData/ir/irText/expressions/destructuring1.kt"); + } + + @Test + @TestMetadata("destructuringWithUnderscore.kt") + public void testDestructuringWithUnderscore() throws Exception { + runTest("compiler/testData/ir/irText/expressions/destructuringWithUnderscore.kt"); + } + + @Test + @TestMetadata("dotQualified.kt") + public void testDotQualified() throws Exception { + runTest("compiler/testData/ir/irText/expressions/dotQualified.kt"); + } + + @Test + @TestMetadata("elvis.kt") + public void testElvis() throws Exception { + runTest("compiler/testData/ir/irText/expressions/elvis.kt"); + } + + @Test + @TestMetadata("enumEntryAsReceiver.kt") + public void testEnumEntryAsReceiver() throws Exception { + runTest("compiler/testData/ir/irText/expressions/enumEntryAsReceiver.kt"); + } + + @Test + @TestMetadata("enumEntryReferenceFromEnumEntryClass.kt") + public void testEnumEntryReferenceFromEnumEntryClass() throws Exception { + runTest("compiler/testData/ir/irText/expressions/enumEntryReferenceFromEnumEntryClass.kt"); + } + + @Test + @TestMetadata("equality.kt") + public void testEquality() throws Exception { + runTest("compiler/testData/ir/irText/expressions/equality.kt"); + } + + @Test + @TestMetadata("exhaustiveWhenElseBranch.kt") + public void testExhaustiveWhenElseBranch() throws Exception { + runTest("compiler/testData/ir/irText/expressions/exhaustiveWhenElseBranch.kt"); + } + + @Test + @TestMetadata("extFunInvokeAsFun.kt") + public void testExtFunInvokeAsFun() throws Exception { + runTest("compiler/testData/ir/irText/expressions/extFunInvokeAsFun.kt"); + } + + @Test + @TestMetadata("extFunSafeInvoke.kt") + public void testExtFunSafeInvoke() throws Exception { + runTest("compiler/testData/ir/irText/expressions/extFunSafeInvoke.kt"); + } + + @Test + @TestMetadata("extensionPropertyGetterCall.kt") + public void testExtensionPropertyGetterCall() throws Exception { + runTest("compiler/testData/ir/irText/expressions/extensionPropertyGetterCall.kt"); + } + + @Test + @TestMetadata("field.kt") + public void testField() throws Exception { + runTest("compiler/testData/ir/irText/expressions/field.kt"); + } + + @Test + @TestMetadata("for.kt") + public void testFor() throws Exception { + runTest("compiler/testData/ir/irText/expressions/for.kt"); + } + + @Test + @TestMetadata("forWithBreakContinue.kt") + public void testForWithBreakContinue() throws Exception { + runTest("compiler/testData/ir/irText/expressions/forWithBreakContinue.kt"); + } + + @Test + @TestMetadata("forWithImplicitReceivers.kt") + public void testForWithImplicitReceivers() throws Exception { + runTest("compiler/testData/ir/irText/expressions/forWithImplicitReceivers.kt"); + } + + @Test + @TestMetadata("funImportedFromObject.kt") + public void testFunImportedFromObject() throws Exception { + runTest("compiler/testData/ir/irText/expressions/funImportedFromObject.kt"); + } + + @Test + @TestMetadata("funInterfaceConstructorReference.kt") + public void testFunInterfaceConstructorReference() throws Exception { + runTest("compiler/testData/ir/irText/expressions/funInterfaceConstructorReference.kt"); + } + + @Test + @TestMetadata("genericConstructorCallWithTypeArguments.kt") + public void testGenericConstructorCallWithTypeArguments() throws Exception { + runTest("compiler/testData/ir/irText/expressions/genericConstructorCallWithTypeArguments.kt"); + } + + @Test + @TestMetadata("genericPropertyCall.kt") + public void testGenericPropertyCall() throws Exception { + runTest("compiler/testData/ir/irText/expressions/genericPropertyCall.kt"); + } + + @Test + @TestMetadata("genericPropertyRef.kt") + public void testGenericPropertyRef() throws Exception { + runTest("compiler/testData/ir/irText/expressions/genericPropertyRef.kt"); + } + + @Test + @TestMetadata("identity.kt") + public void testIdentity() throws Exception { + runTest("compiler/testData/ir/irText/expressions/identity.kt"); + } + + @Test + @TestMetadata("ifElseIf.kt") + public void testIfElseIf() throws Exception { + runTest("compiler/testData/ir/irText/expressions/ifElseIf.kt"); + } + + @Test + @TestMetadata("implicitCastInReturnFromConstructor.kt") + public void testImplicitCastInReturnFromConstructor() throws Exception { + runTest("compiler/testData/ir/irText/expressions/implicitCastInReturnFromConstructor.kt"); + } + + @Test + @TestMetadata("implicitCastToNonNull.kt") + public void testImplicitCastToNonNull() throws Exception { + runTest("compiler/testData/ir/irText/expressions/implicitCastToNonNull.kt"); + } + + @Test + @TestMetadata("implicitCastToTypeParameter.kt") + public void testImplicitCastToTypeParameter() throws Exception { + runTest("compiler/testData/ir/irText/expressions/implicitCastToTypeParameter.kt"); + } + + @Test + @TestMetadata("in.kt") + public void testIn() throws Exception { + runTest("compiler/testData/ir/irText/expressions/in.kt"); + } + + @Test + @TestMetadata("incrementDecrement.kt") + public void testIncrementDecrement() throws Exception { + runTest("compiler/testData/ir/irText/expressions/incrementDecrement.kt"); + } + + @Test + @TestMetadata("interfaceThisRef.kt") + public void testInterfaceThisRef() throws Exception { + runTest("compiler/testData/ir/irText/expressions/interfaceThisRef.kt"); + } + + @Test + @TestMetadata("kt16905.kt") + public void testKt16905() throws Exception { + runTest("compiler/testData/ir/irText/expressions/kt16905.kt"); + } + + @Test + @TestMetadata("kt23030.kt") + public void testKt23030() throws Exception { + runTest("compiler/testData/ir/irText/expressions/kt23030.kt"); + } + + @Test + @TestMetadata("kt24804.kt") + public void testKt24804() throws Exception { + runTest("compiler/testData/ir/irText/expressions/kt24804.kt"); + } + + @Test + @TestMetadata("kt27933.kt") + public void testKt27933() throws Exception { + runTest("compiler/testData/ir/irText/expressions/kt27933.kt"); + } + + @Test + @TestMetadata("kt28006.kt") + public void testKt28006() throws Exception { + runTest("compiler/testData/ir/irText/expressions/kt28006.kt"); + } + + @Test + @TestMetadata("kt28456.kt") + public void testKt28456() throws Exception { + runTest("compiler/testData/ir/irText/expressions/kt28456.kt"); + } + + @Test + @TestMetadata("kt28456a.kt") + public void testKt28456a() throws Exception { + runTest("compiler/testData/ir/irText/expressions/kt28456a.kt"); + } + + @Test + @TestMetadata("kt28456b.kt") + public void testKt28456b() throws Exception { + runTest("compiler/testData/ir/irText/expressions/kt28456b.kt"); + } + + @Test + @TestMetadata("kt30020.kt") + public void testKt30020() throws Exception { + runTest("compiler/testData/ir/irText/expressions/kt30020.kt"); + } + + @Test + @TestMetadata("kt30796.kt") + public void testKt30796() throws Exception { + runTest("compiler/testData/ir/irText/expressions/kt30796.kt"); + } + + @Test + @TestMetadata("kt35730.kt") + public void testKt35730() throws Exception { + runTest("compiler/testData/ir/irText/expressions/kt35730.kt"); + } + + @Test + @TestMetadata("kt36956.kt") + public void testKt36956() throws Exception { + runTest("compiler/testData/ir/irText/expressions/kt36956.kt"); + } + + @Test + @TestMetadata("kt36963.kt") + public void testKt36963() throws Exception { + runTest("compiler/testData/ir/irText/expressions/kt36963.kt"); + } + + @Test + @TestMetadata("kt37570.kt") + public void testKt37570() throws Exception { + runTest("compiler/testData/ir/irText/expressions/kt37570.kt"); + } + + @Test + @TestMetadata("kt37779.kt") + public void testKt37779() throws Exception { + runTest("compiler/testData/ir/irText/expressions/kt37779.kt"); + } + + @Test + @TestMetadata("kt45022.kt") + public void testKt45022() throws Exception { + runTest("compiler/testData/ir/irText/expressions/kt45022.kt"); + } + + @Test + @TestMetadata("kt47245.kt") + public void testKt47245() throws Exception { + runTest("compiler/testData/ir/irText/expressions/kt47245.kt"); + } + + @Test + @TestMetadata("kt47450.kt") + public void testKt47450() throws Exception { + runTest("compiler/testData/ir/irText/expressions/kt47450.kt"); + } + + @Test + @TestMetadata("kt48708.kt") + public void testKt48708() throws Exception { + runTest("compiler/testData/ir/irText/expressions/kt48708.kt"); + } + + @Test + @TestMetadata("kt48806.kt") + public void testKt48806() throws Exception { + runTest("compiler/testData/ir/irText/expressions/kt48806.kt"); + } + + @Test + @TestMetadata("kt49203.kt") + public void testKt49203() throws Exception { + runTest("compiler/testData/ir/irText/expressions/kt49203.kt"); + } + + @Test + @TestMetadata("kt50028.kt") + public void testKt50028() throws Exception { + runTest("compiler/testData/ir/irText/expressions/kt50028.kt"); + } + + @Test + @TestMetadata("kt51036.kt") + public void testKt51036() throws Exception { + runTest("compiler/testData/ir/irText/expressions/kt51036.kt"); + } + + @Test + @TestMetadata("lambdaInCAO.kt") + public void testLambdaInCAO() throws Exception { + runTest("compiler/testData/ir/irText/expressions/lambdaInCAO.kt"); + } + + @Test + @TestMetadata("literals.kt") + public void testLiterals() throws Exception { + runTest("compiler/testData/ir/irText/expressions/literals.kt"); + } + + @Test + @TestMetadata("memberTypeArguments.kt") + public void testMemberTypeArguments() throws Exception { + runTest("compiler/testData/ir/irText/expressions/memberTypeArguments.kt"); + } + + @Test + @TestMetadata("membersImportedFromObject.kt") + public void testMembersImportedFromObject() throws Exception { + runTest("compiler/testData/ir/irText/expressions/membersImportedFromObject.kt"); + } + + @Test + @TestMetadata("multipleSmartCasts.kt") + public void testMultipleSmartCasts() throws Exception { + runTest("compiler/testData/ir/irText/expressions/multipleSmartCasts.kt"); + } + + @Test + @TestMetadata("multipleThisReferences.kt") + public void testMultipleThisReferences() throws Exception { + runTest("compiler/testData/ir/irText/expressions/multipleThisReferences.kt"); + } + + @Test + @TestMetadata("objectAsCallable.kt") + public void testObjectAsCallable() throws Exception { + runTest("compiler/testData/ir/irText/expressions/objectAsCallable.kt"); + } + + @Test + @TestMetadata("objectByNameInsideObject.kt") + public void testObjectByNameInsideObject() throws Exception { + runTest("compiler/testData/ir/irText/expressions/objectByNameInsideObject.kt"); + } + + @Test + @TestMetadata("objectReference.kt") + public void testObjectReference() throws Exception { + runTest("compiler/testData/ir/irText/expressions/objectReference.kt"); + } + + @Test + @TestMetadata("objectReferenceInClosureInSuperConstructorCall.kt") + public void testObjectReferenceInClosureInSuperConstructorCall() throws Exception { + runTest("compiler/testData/ir/irText/expressions/objectReferenceInClosureInSuperConstructorCall.kt"); + } + + @Test + @TestMetadata("objectReferenceInFieldInitializer.kt") + public void testObjectReferenceInFieldInitializer() throws Exception { + runTest("compiler/testData/ir/irText/expressions/objectReferenceInFieldInitializer.kt"); + } + + @Test + @TestMetadata("outerClassInstanceReference.kt") + public void testOuterClassInstanceReference() throws Exception { + runTest("compiler/testData/ir/irText/expressions/outerClassInstanceReference.kt"); + } + + @Test + @TestMetadata("primitiveComparisons.kt") + public void testPrimitiveComparisons() throws Exception { + runTest("compiler/testData/ir/irText/expressions/primitiveComparisons.kt"); + } + + @Test + @TestMetadata("primitivesImplicitConversions.kt") + public void testPrimitivesImplicitConversions() throws Exception { + runTest("compiler/testData/ir/irText/expressions/primitivesImplicitConversions.kt"); + } + + @Test + @TestMetadata("references.kt") + public void testReferences() throws Exception { + runTest("compiler/testData/ir/irText/expressions/references.kt"); + } + + @Test + @TestMetadata("reflectionLiterals.kt") + public void testReflectionLiterals() throws Exception { + runTest("compiler/testData/ir/irText/expressions/reflectionLiterals.kt"); + } + + @Test + @TestMetadata("safeAssignment.kt") + public void testSafeAssignment() throws Exception { + runTest("compiler/testData/ir/irText/expressions/safeAssignment.kt"); + } + + @Test + @TestMetadata("safeCallWithIncrementDecrement.kt") + public void testSafeCallWithIncrementDecrement() throws Exception { + runTest("compiler/testData/ir/irText/expressions/safeCallWithIncrementDecrement.kt"); + } + + @Test + @TestMetadata("safeCalls.kt") + public void testSafeCalls() throws Exception { + runTest("compiler/testData/ir/irText/expressions/safeCalls.kt"); + } + + @Test + @TestMetadata("signedToUnsignedConversions.kt") + public void testSignedToUnsignedConversions() throws Exception { + runTest("compiler/testData/ir/irText/expressions/signedToUnsignedConversions.kt"); + } + + @Test + @TestMetadata("simpleOperators.kt") + public void testSimpleOperators() throws Exception { + runTest("compiler/testData/ir/irText/expressions/simpleOperators.kt"); + } + + @Test + @TestMetadata("simpleUnaryOperators.kt") + public void testSimpleUnaryOperators() throws Exception { + runTest("compiler/testData/ir/irText/expressions/simpleUnaryOperators.kt"); + } + + @Test + @TestMetadata("smartCasts.kt") + public void testSmartCasts() throws Exception { + runTest("compiler/testData/ir/irText/expressions/smartCasts.kt"); + } + + @Test + @TestMetadata("smartCastsWithDestructuring.kt") + public void testSmartCastsWithDestructuring() throws Exception { + runTest("compiler/testData/ir/irText/expressions/smartCastsWithDestructuring.kt"); + } + + @Test + @TestMetadata("specializedTypeAliasConstructorCall.kt") + public void testSpecializedTypeAliasConstructorCall() throws Exception { + runTest("compiler/testData/ir/irText/expressions/specializedTypeAliasConstructorCall.kt"); + } + + @Test + @TestMetadata("stringComparisons.kt") + public void testStringComparisons() throws Exception { + runTest("compiler/testData/ir/irText/expressions/stringComparisons.kt"); + } + + @Test + @TestMetadata("stringPlus.kt") + public void testStringPlus() throws Exception { + runTest("compiler/testData/ir/irText/expressions/stringPlus.kt"); + } + + @Test + @TestMetadata("stringTemplates.kt") + public void testStringTemplates() throws Exception { + runTest("compiler/testData/ir/irText/expressions/stringTemplates.kt"); + } + + @Test + @TestMetadata("suspendConversionForExtensionFunction.kt") + public void testSuspendConversionForExtensionFunction() throws Exception { + runTest("compiler/testData/ir/irText/expressions/suspendConversionForExtensionFunction.kt"); + } + + @Test + @TestMetadata("suspendConversionInVararg.kt") + public void testSuspendConversionInVararg() throws Exception { + runTest("compiler/testData/ir/irText/expressions/suspendConversionInVararg.kt"); + } + + @Test + @TestMetadata("suspendConversionOnArbitraryExpression.kt") + public void testSuspendConversionOnArbitraryExpression() throws Exception { + runTest("compiler/testData/ir/irText/expressions/suspendConversionOnArbitraryExpression.kt"); + } + + @Test + @TestMetadata("suspendConversionWithFunInterfaces.kt") + public void testSuspendConversionWithFunInterfaces() throws Exception { + runTest("compiler/testData/ir/irText/expressions/suspendConversionWithFunInterfaces.kt"); + } + + @Test + @TestMetadata("temporaryInEnumEntryInitializer.kt") + public void testTemporaryInEnumEntryInitializer() throws Exception { + runTest("compiler/testData/ir/irText/expressions/temporaryInEnumEntryInitializer.kt"); + } + + @Test + @TestMetadata("temporaryInInitBlock.kt") + public void testTemporaryInInitBlock() throws Exception { + runTest("compiler/testData/ir/irText/expressions/temporaryInInitBlock.kt"); + } + + @Test + @TestMetadata("thisOfGenericOuterClass.kt") + public void testThisOfGenericOuterClass() throws Exception { + runTest("compiler/testData/ir/irText/expressions/thisOfGenericOuterClass.kt"); + } + + @Test + @TestMetadata("thisRefToObjectInNestedClassConstructorCall.kt") + public void testThisRefToObjectInNestedClassConstructorCall() throws Exception { + runTest("compiler/testData/ir/irText/expressions/thisRefToObjectInNestedClassConstructorCall.kt"); + } + + @Test + @TestMetadata("thisReferenceBeforeClassDeclared.kt") + public void testThisReferenceBeforeClassDeclared() throws Exception { + runTest("compiler/testData/ir/irText/expressions/thisReferenceBeforeClassDeclared.kt"); + } + + @Test + @TestMetadata("throw.kt") + public void testThrow() throws Exception { + runTest("compiler/testData/ir/irText/expressions/throw.kt"); + } + + @Test + @TestMetadata("tryCatch.kt") + public void testTryCatch() throws Exception { + runTest("compiler/testData/ir/irText/expressions/tryCatch.kt"); + } + + @Test + @TestMetadata("tryCatchWithImplicitCast.kt") + public void testTryCatchWithImplicitCast() throws Exception { + runTest("compiler/testData/ir/irText/expressions/tryCatchWithImplicitCast.kt"); + } + + @Test + @TestMetadata("typeAliasConstructorReference.kt") + public void testTypeAliasConstructorReference() throws Exception { + runTest("compiler/testData/ir/irText/expressions/typeAliasConstructorReference.kt"); + } + + @Test + @TestMetadata("typeOperators.kt") + public void testTypeOperators() throws Exception { + runTest("compiler/testData/ir/irText/expressions/typeOperators.kt"); + } + + @Test + @TestMetadata("typeParameterClassLiteral.kt") + public void testTypeParameterClassLiteral() throws Exception { + runTest("compiler/testData/ir/irText/expressions/typeParameterClassLiteral.kt"); + } + + @Test + @TestMetadata("unsignedIntegerLiterals.kt") + public void testUnsignedIntegerLiterals() throws Exception { + runTest("compiler/testData/ir/irText/expressions/unsignedIntegerLiterals.kt"); + } + + @Test + @TestMetadata("useImportedMember.kt") + public void testUseImportedMember() throws Exception { + runTest("compiler/testData/ir/irText/expressions/useImportedMember.kt"); + } + + @Test + @TestMetadata("values.kt") + public void testValues() throws Exception { + runTest("compiler/testData/ir/irText/expressions/values.kt"); + } + + @Test + @TestMetadata("vararg.kt") + public void testVararg() throws Exception { + runTest("compiler/testData/ir/irText/expressions/vararg.kt"); + } + + @Test + @TestMetadata("varargWithImplicitCast.kt") + public void testVarargWithImplicitCast() throws Exception { + runTest("compiler/testData/ir/irText/expressions/varargWithImplicitCast.kt"); + } + + @Test + @TestMetadata("variableAsFunctionCall.kt") + public void testVariableAsFunctionCall() throws Exception { + runTest("compiler/testData/ir/irText/expressions/variableAsFunctionCall.kt"); + } + + @Test + @TestMetadata("variableAsFunctionCallWithGenerics.kt") + public void testVariableAsFunctionCallWithGenerics() throws Exception { + runTest("compiler/testData/ir/irText/expressions/variableAsFunctionCallWithGenerics.kt"); + } + + @Test + @TestMetadata("when.kt") + public void testWhen() throws Exception { + runTest("compiler/testData/ir/irText/expressions/when.kt"); + } + + @Test + @TestMetadata("whenCoercedToUnit.kt") + public void testWhenCoercedToUnit() throws Exception { + runTest("compiler/testData/ir/irText/expressions/whenCoercedToUnit.kt"); + } + + @Test + @TestMetadata("whenElse.kt") + public void testWhenElse() throws Exception { + runTest("compiler/testData/ir/irText/expressions/whenElse.kt"); + } + + @Test + @TestMetadata("whenReturn.kt") + public void testWhenReturn() throws Exception { + runTest("compiler/testData/ir/irText/expressions/whenReturn.kt"); + } + + @Test + @TestMetadata("whenReturnUnit.kt") + public void testWhenReturnUnit() throws Exception { + runTest("compiler/testData/ir/irText/expressions/whenReturnUnit.kt"); + } + + @Test + @TestMetadata("whenSmartCastToEnum.kt") + public void testWhenSmartCastToEnum() throws Exception { + runTest("compiler/testData/ir/irText/expressions/whenSmartCastToEnum.kt"); + } + + @Test + @TestMetadata("whenUnusedExpression.kt") + public void testWhenUnusedExpression() throws Exception { + runTest("compiler/testData/ir/irText/expressions/whenUnusedExpression.kt"); + } + + @Test + @TestMetadata("whenWithSubjectVariable.kt") + public void testWhenWithSubjectVariable() throws Exception { + runTest("compiler/testData/ir/irText/expressions/whenWithSubjectVariable.kt"); + } + + @Test + @TestMetadata("whileDoWhile.kt") + public void testWhileDoWhile() throws Exception { + runTest("compiler/testData/ir/irText/expressions/whileDoWhile.kt"); + } + + @Nested + @TestMetadata("compiler/testData/ir/irText/expressions/callableReferences") + @TestDataPath("$PROJECT_ROOT") + public class CallableReferences { + @Test + @TestMetadata("adaptedExtensionFunctions.kt") + public void testAdaptedExtensionFunctions() throws Exception { + runTest("compiler/testData/ir/irText/expressions/callableReferences/adaptedExtensionFunctions.kt"); + } + + @Test + @TestMetadata("adaptedWithCoercionToUnit.kt") + public void testAdaptedWithCoercionToUnit() throws Exception { + runTest("compiler/testData/ir/irText/expressions/callableReferences/adaptedWithCoercionToUnit.kt"); + } + + @Test + public void testAllFilesPresentInCallableReferences() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/ir/irText/expressions/callableReferences"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.NATIVE, true); + } + + @Test + @TestMetadata("boundInlineAdaptedReference.kt") + public void testBoundInlineAdaptedReference() throws Exception { + runTest("compiler/testData/ir/irText/expressions/callableReferences/boundInlineAdaptedReference.kt"); + } + + @Test + @TestMetadata("boundInnerGenericConstructor.kt") + public void testBoundInnerGenericConstructor() throws Exception { + runTest("compiler/testData/ir/irText/expressions/callableReferences/boundInnerGenericConstructor.kt"); + } + + @Test + @TestMetadata("caoWithAdaptationForSam.kt") + public void testCaoWithAdaptationForSam() throws Exception { + runTest("compiler/testData/ir/irText/expressions/callableReferences/caoWithAdaptationForSam.kt"); + } + + @Test + @TestMetadata("constructorWithAdaptedArguments.kt") + public void testConstructorWithAdaptedArguments() throws Exception { + runTest("compiler/testData/ir/irText/expressions/callableReferences/constructorWithAdaptedArguments.kt"); + } + + @Test + @TestMetadata("funWithDefaultParametersAsKCallableStar.kt") + public void testFunWithDefaultParametersAsKCallableStar() throws Exception { + runTest("compiler/testData/ir/irText/expressions/callableReferences/funWithDefaultParametersAsKCallableStar.kt"); + } + + @Test + @TestMetadata("genericLocalClassConstructorReference.kt") + public void testGenericLocalClassConstructorReference() throws Exception { + runTest("compiler/testData/ir/irText/expressions/callableReferences/genericLocalClassConstructorReference.kt"); + } + + @Test + @TestMetadata("genericMember.kt") + public void testGenericMember() throws Exception { + runTest("compiler/testData/ir/irText/expressions/callableReferences/genericMember.kt"); + } + + @Test + @TestMetadata("importedFromObject.kt") + public void testImportedFromObject() throws Exception { + runTest("compiler/testData/ir/irText/expressions/callableReferences/importedFromObject.kt"); + } + + @Test + @TestMetadata("kt37131.kt") + public void testKt37131() throws Exception { + runTest("compiler/testData/ir/irText/expressions/callableReferences/kt37131.kt"); + } + + @Test + @TestMetadata("kt46069.kt") + public void testKt46069() throws Exception { + runTest("compiler/testData/ir/irText/expressions/callableReferences/kt46069.kt"); + } + + @Test + @TestMetadata("suspendConversion.kt") + public void testSuspendConversion() throws Exception { + runTest("compiler/testData/ir/irText/expressions/callableReferences/suspendConversion.kt"); + } + + @Test + @TestMetadata("typeArguments.kt") + public void testTypeArguments() throws Exception { + runTest("compiler/testData/ir/irText/expressions/callableReferences/typeArguments.kt"); + } + + @Test + @TestMetadata("unboundMemberReferenceWithAdaptedArguments.kt") + public void testUnboundMemberReferenceWithAdaptedArguments() throws Exception { + runTest("compiler/testData/ir/irText/expressions/callableReferences/unboundMemberReferenceWithAdaptedArguments.kt"); + } + + @Test + @TestMetadata("varargFunImportedFromObject.kt") + public void testVarargFunImportedFromObject() throws Exception { + runTest("compiler/testData/ir/irText/expressions/callableReferences/varargFunImportedFromObject.kt"); + } + + @Test + @TestMetadata("withAdaptationForSam.kt") + public void testWithAdaptationForSam() throws Exception { + runTest("compiler/testData/ir/irText/expressions/callableReferences/withAdaptationForSam.kt"); + } + + @Test + @TestMetadata("withAdaptedArguments.kt") + public void testWithAdaptedArguments() throws Exception { + runTest("compiler/testData/ir/irText/expressions/callableReferences/withAdaptedArguments.kt"); + } + + @Test + @TestMetadata("withArgumentAdaptationAndReceiver.kt") + public void testWithArgumentAdaptationAndReceiver() throws Exception { + runTest("compiler/testData/ir/irText/expressions/callableReferences/withArgumentAdaptationAndReceiver.kt"); + } + + @Test + @TestMetadata("withVarargViewedAsArray.kt") + public void testWithVarargViewedAsArray() throws Exception { + runTest("compiler/testData/ir/irText/expressions/callableReferences/withVarargViewedAsArray.kt"); + } + } + + @Nested + @TestMetadata("compiler/testData/ir/irText/expressions/floatingPointComparisons") + @TestDataPath("$PROJECT_ROOT") + public class FloatingPointComparisons { + @Test + public void testAllFilesPresentInFloatingPointComparisons() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/ir/irText/expressions/floatingPointComparisons"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.NATIVE, true); + } + + @Test + @TestMetadata("comparableWithDoubleOrFloat.kt") + public void testComparableWithDoubleOrFloat() throws Exception { + runTest("compiler/testData/ir/irText/expressions/floatingPointComparisons/comparableWithDoubleOrFloat.kt"); + } + + @Test + @TestMetadata("eqeqRhsConditionPossiblyAffectingLhs.kt") + public void testEqeqRhsConditionPossiblyAffectingLhs() throws Exception { + runTest("compiler/testData/ir/irText/expressions/floatingPointComparisons/eqeqRhsConditionPossiblyAffectingLhs.kt"); + } + + @Test + @TestMetadata("floatingPointCompareTo.kt") + public void testFloatingPointCompareTo() throws Exception { + runTest("compiler/testData/ir/irText/expressions/floatingPointComparisons/floatingPointCompareTo.kt"); + } + + @Test + @TestMetadata("floatingPointEqeq.kt") + public void testFloatingPointEqeq() throws Exception { + runTest("compiler/testData/ir/irText/expressions/floatingPointComparisons/floatingPointEqeq.kt"); + } + + @Test + @TestMetadata("floatingPointEquals.kt") + public void testFloatingPointEquals() throws Exception { + runTest("compiler/testData/ir/irText/expressions/floatingPointComparisons/floatingPointEquals.kt"); + } + + @Test + @TestMetadata("floatingPointExcleq.kt") + public void testFloatingPointExcleq() throws Exception { + runTest("compiler/testData/ir/irText/expressions/floatingPointComparisons/floatingPointExcleq.kt"); + } + + @Test + @TestMetadata("floatingPointLess.kt") + public void testFloatingPointLess() throws Exception { + runTest("compiler/testData/ir/irText/expressions/floatingPointComparisons/floatingPointLess.kt"); + } + + @Test + @TestMetadata("nullableAnyAsIntToDouble.kt") + public void testNullableAnyAsIntToDouble() throws Exception { + runTest("compiler/testData/ir/irText/expressions/floatingPointComparisons/nullableAnyAsIntToDouble.kt"); + } + + @Test + @TestMetadata("nullableFloatingPointEqeq.kt") + public void testNullableFloatingPointEqeq() throws Exception { + runTest("compiler/testData/ir/irText/expressions/floatingPointComparisons/nullableFloatingPointEqeq.kt"); + } + + @Test + @TestMetadata("typeParameterWithPrimitiveNumericSupertype.kt") + public void testTypeParameterWithPrimitiveNumericSupertype() throws Exception { + runTest("compiler/testData/ir/irText/expressions/floatingPointComparisons/typeParameterWithPrimitiveNumericSupertype.kt"); + } + + @Test + @TestMetadata("whenByFloatingPoint.kt") + public void testWhenByFloatingPoint() throws Exception { + runTest("compiler/testData/ir/irText/expressions/floatingPointComparisons/whenByFloatingPoint.kt"); + } + } + + @Nested + @TestMetadata("compiler/testData/ir/irText/expressions/funInterface") + @TestDataPath("$PROJECT_ROOT") + public class FunInterface { + @Test + public void testAllFilesPresentInFunInterface() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/ir/irText/expressions/funInterface"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.NATIVE, true); + } + + @Test + @TestMetadata("arrayAsVarargAfterSamArgument_fi.kt") + public void testArrayAsVarargAfterSamArgument_fi() throws Exception { + runTest("compiler/testData/ir/irText/expressions/funInterface/arrayAsVarargAfterSamArgument_fi.kt"); + } + + @Test + @TestMetadata("basicFunInterfaceConversion.kt") + public void testBasicFunInterfaceConversion() throws Exception { + runTest("compiler/testData/ir/irText/expressions/funInterface/basicFunInterfaceConversion.kt"); + } + + @Test + @TestMetadata("castFromAny.kt") + public void testCastFromAny() throws Exception { + runTest("compiler/testData/ir/irText/expressions/funInterface/castFromAny.kt"); + } + + @Test + @TestMetadata("functionSupertype.kt") + public void testFunctionSupertype() throws Exception { + runTest("compiler/testData/ir/irText/expressions/funInterface/functionSupertype.kt"); + } + + @Test + @TestMetadata("partialSam.kt") + public void testPartialSam() throws Exception { + runTest("compiler/testData/ir/irText/expressions/funInterface/partialSam.kt"); + } + + @Test + @TestMetadata("samConversionInVarargs.kt") + public void testSamConversionInVarargs() throws Exception { + runTest("compiler/testData/ir/irText/expressions/funInterface/samConversionInVarargs.kt"); + } + + @Test + @TestMetadata("samConversionInVarargsMixed.kt") + public void testSamConversionInVarargsMixed() throws Exception { + runTest("compiler/testData/ir/irText/expressions/funInterface/samConversionInVarargsMixed.kt"); + } + + @Test + @TestMetadata("samConversionOnCallableReference.kt") + public void testSamConversionOnCallableReference() throws Exception { + runTest("compiler/testData/ir/irText/expressions/funInterface/samConversionOnCallableReference.kt"); + } + + @Test + @TestMetadata("samConversionsWithSmartCasts.kt") + public void testSamConversionsWithSmartCasts() throws Exception { + runTest("compiler/testData/ir/irText/expressions/funInterface/samConversionsWithSmartCasts.kt"); + } + } + + @Nested + @TestMetadata("compiler/testData/ir/irText/expressions/sam") + @TestDataPath("$PROJECT_ROOT") + public class Sam { + @Test + public void testAllFilesPresentInSam() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/ir/irText/expressions/sam"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.NATIVE, true); + } + } + } + + @Nested + @TestMetadata("compiler/testData/ir/irText/firProblems") + @TestDataPath("$PROJECT_ROOT") + public class FirProblems { + @Test + public void testAllFilesPresentInFirProblems() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/ir/irText/firProblems"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.NATIVE, true); + } + + @Test + @TestMetadata("AnnotationLoader.kt") + public void testAnnotationLoader() throws Exception { + runTest("compiler/testData/ir/irText/firProblems/AnnotationLoader.kt"); + } + + @Test + @TestMetadata("AnonymousAsReturnOfGenericFunction.kt") + public void testAnonymousAsReturnOfGenericFunction() throws Exception { + runTest("compiler/testData/ir/irText/firProblems/AnonymousAsReturnOfGenericFunction.kt"); + } + + @Test + @TestMetadata("ArrayMap.kt") + public void testArrayMap() throws Exception { + runTest("compiler/testData/ir/irText/firProblems/ArrayMap.kt"); + } + + @Test + @TestMetadata("AssignmentOperator.kt") + public void testAssignmentOperator() throws Exception { + runTest("compiler/testData/ir/irText/firProblems/AssignmentOperator.kt"); + } + + @Test + @TestMetadata("candidateSymbol.kt") + public void testCandidateSymbol() throws Exception { + runTest("compiler/testData/ir/irText/firProblems/candidateSymbol.kt"); + } + + @Test + @TestMetadata("cannotCastToFunction.kt") + public void testCannotCastToFunction() throws Exception { + runTest("compiler/testData/ir/irText/firProblems/cannotCastToFunction.kt"); + } + + @Test + @TestMetadata("DeepCopyIrTree.kt") + public void testDeepCopyIrTree() throws Exception { + runTest("compiler/testData/ir/irText/firProblems/DeepCopyIrTree.kt"); + } + + @Test + @TestMetadata("deprecated.kt") + public void testDeprecated() throws Exception { + runTest("compiler/testData/ir/irText/firProblems/deprecated.kt"); + } + + @Test + @TestMetadata("emptyWhen.kt") + public void testEmptyWhen() throws Exception { + runTest("compiler/testData/ir/irText/firProblems/emptyWhen.kt"); + } + + @Test + @TestMetadata("ErrorInDefaultValue.kt") + public void testErrorInDefaultValue() throws Exception { + runTest("compiler/testData/ir/irText/firProblems/ErrorInDefaultValue.kt"); + } + + @Test + @TestMetadata("explicitIncrement.kt") + public void testExplicitIncrement() throws Exception { + runTest("compiler/testData/ir/irText/firProblems/explicitIncrement.kt"); + } + + @Test + @TestMetadata("FakeOverrideInAnonymousWithDelegation.kt") + public void testFakeOverrideInAnonymousWithDelegation() throws Exception { + runTest("compiler/testData/ir/irText/firProblems/FakeOverrideInAnonymousWithDelegation.kt"); + } + + @Test + @TestMetadata("Fir2IrClassifierStorage.kt") + public void testFir2IrClassifierStorage() throws Exception { + runTest("compiler/testData/ir/irText/firProblems/Fir2IrClassifierStorage.kt"); + } + + @Test + @TestMetadata("FirBuilder.kt") + public void testFirBuilder() throws Exception { + runTest("compiler/testData/ir/irText/firProblems/FirBuilder.kt"); + } + + @Test + @TestMetadata("ImplicitReceiverStack.kt") + public void testImplicitReceiverStack() throws Exception { + runTest("compiler/testData/ir/irText/firProblems/ImplicitReceiverStack.kt"); + } + + @Test + @TestMetadata("inapplicableCollectionSet.kt") + public void testInapplicableCollectionSet() throws Exception { + runTest("compiler/testData/ir/irText/firProblems/inapplicableCollectionSet.kt"); + } + + @Test + @TestMetadata("InnerClassInAnonymous.kt") + public void testInnerClassInAnonymous() throws Exception { + runTest("compiler/testData/ir/irText/firProblems/InnerClassInAnonymous.kt"); + } + + @Test + @TestMetadata("integerLiteralWithExpectedTypealiasType.kt") + public void testIntegerLiteralWithExpectedTypealiasType() throws Exception { + runTest("compiler/testData/ir/irText/firProblems/integerLiteralWithExpectedTypealiasType.kt"); + } + + @Test + @TestMetadata("kt43342.kt") + public void testKt43342() throws Exception { + runTest("compiler/testData/ir/irText/firProblems/kt43342.kt"); + } + + @Test + @TestMetadata("kt55458.kt") + public void testKt55458() throws Exception { + runTest("compiler/testData/ir/irText/firProblems/kt55458.kt"); + } + + @Test + @TestMetadata("kt59102.kt") + public void testKt59102() throws Exception { + runTest("compiler/testData/ir/irText/firProblems/kt59102.kt"); + } + + @Test + @TestMetadata("lambdaInEnumEntryConstructorCall.kt") + public void testLambdaInEnumEntryConstructorCall() throws Exception { + runTest("compiler/testData/ir/irText/firProblems/lambdaInEnumEntryConstructorCall.kt"); + } + + @Test + @TestMetadata("localClassUsedBeforeDeclaration.kt") + public void testLocalClassUsedBeforeDeclaration() throws Exception { + runTest("compiler/testData/ir/irText/firProblems/localClassUsedBeforeDeclaration.kt"); + } + + @Test + @TestMetadata("localCompanion.kt") + public void testLocalCompanion() throws Exception { + runTest("compiler/testData/ir/irText/firProblems/localCompanion.kt"); + } + + @Test + @TestMetadata("LocalSuspendFun.kt") + public void testLocalSuspendFun() throws Exception { + runTest("compiler/testData/ir/irText/firProblems/LocalSuspendFun.kt"); + } + + @Test + @TestMetadata("readWriteProperty.kt") + public void testReadWriteProperty() throws Exception { + runTest("compiler/testData/ir/irText/firProblems/readWriteProperty.kt"); + } + + @Test + @TestMetadata("recursiveCapturedTypeInPropertyReference.kt") + public void testRecursiveCapturedTypeInPropertyReference() throws Exception { + runTest("compiler/testData/ir/irText/firProblems/recursiveCapturedTypeInPropertyReference.kt"); + } + + @Test + @TestMetadata("reflectGetOnNullableTypeAlias.kt") + public void testReflectGetOnNullableTypeAlias() throws Exception { + runTest("compiler/testData/ir/irText/firProblems/reflectGetOnNullableTypeAlias.kt"); + } + + @Test + @TestMetadata("SafeLetWithReturn.kt") + public void testSafeLetWithReturn() throws Exception { + runTest("compiler/testData/ir/irText/firProblems/SafeLetWithReturn.kt"); + } + + @Test + @TestMetadata("SignatureClash.kt") + public void testSignatureClash() throws Exception { + runTest("compiler/testData/ir/irText/firProblems/SignatureClash.kt"); + } + + @Test + @TestMetadata("SimpleTypeMarker.kt") + public void testSimpleTypeMarker() throws Exception { + runTest("compiler/testData/ir/irText/firProblems/SimpleTypeMarker.kt"); + } + + @Test + @TestMetadata("thisInEnumConstructor.kt") + public void testThisInEnumConstructor() throws Exception { + runTest("compiler/testData/ir/irText/firProblems/thisInEnumConstructor.kt"); + } + + @Test + @TestMetadata("timesInBuilder.kt") + public void testTimesInBuilder() throws Exception { + runTest("compiler/testData/ir/irText/firProblems/timesInBuilder.kt"); + } + + @Test + @TestMetadata("TypeParameterBounds.kt") + public void testTypeParameterBounds() throws Exception { + runTest("compiler/testData/ir/irText/firProblems/TypeParameterBounds.kt"); + } + + @Test + @TestMetadata("TypeParameterInNestedClass.kt") + public void testTypeParameterInNestedClass() throws Exception { + runTest("compiler/testData/ir/irText/firProblems/TypeParameterInNestedClass.kt"); + } + + @Test + @TestMetadata("typeVariableAfterBuildMap.kt") + public void testTypeVariableAfterBuildMap() throws Exception { + runTest("compiler/testData/ir/irText/firProblems/typeVariableAfterBuildMap.kt"); + } + + @Test + @TestMetadata("VarInInit.kt") + public void testVarInInit() throws Exception { + runTest("compiler/testData/ir/irText/firProblems/VarInInit.kt"); + } + + @Test + @TestMetadata("VarargIntegerLiteral.kt") + public void testVarargIntegerLiteral() throws Exception { + runTest("compiler/testData/ir/irText/firProblems/VarargIntegerLiteral.kt"); + } + } + + @Nested + @TestMetadata("compiler/testData/ir/irText/js") + @TestDataPath("$PROJECT_ROOT") + public class Js { + @Test + public void testAllFilesPresentInJs() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/ir/irText/js"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.NATIVE, true); + } + + @Nested + @TestMetadata("compiler/testData/ir/irText/js/dynamic") + @TestDataPath("$PROJECT_ROOT") + public class Dynamic { + @Test + public void testAllFilesPresentInDynamic() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/ir/irText/js/dynamic"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.NATIVE, true); + } + } + + @Nested + @TestMetadata("compiler/testData/ir/irText/js/external") + @TestDataPath("$PROJECT_ROOT") + public class External { + @Test + public void testAllFilesPresentInExternal() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/ir/irText/js/external"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.NATIVE, true); + } + } + + @Nested + @TestMetadata("compiler/testData/ir/irText/js/native") + @TestDataPath("$PROJECT_ROOT") + public class Native { + @Test + public void testAllFilesPresentInNative() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/ir/irText/js/native"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.NATIVE, true); + } + } + } + + @Nested + @TestMetadata("compiler/testData/ir/irText/lambdas") + @TestDataPath("$PROJECT_ROOT") + public class Lambdas { + @Test + public void testAllFilesPresentInLambdas() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/ir/irText/lambdas"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.NATIVE, true); + } + + @Test + @TestMetadata("anonymousFunction.kt") + public void testAnonymousFunction() throws Exception { + runTest("compiler/testData/ir/irText/lambdas/anonymousFunction.kt"); + } + + @Test + @TestMetadata("destructuringInLambda.kt") + public void testDestructuringInLambda() throws Exception { + runTest("compiler/testData/ir/irText/lambdas/destructuringInLambda.kt"); + } + + @Test + @TestMetadata("extensionLambda.kt") + public void testExtensionLambda() throws Exception { + runTest("compiler/testData/ir/irText/lambdas/extensionLambda.kt"); + } + + @Test + @TestMetadata("justLambda.kt") + public void testJustLambda() throws Exception { + runTest("compiler/testData/ir/irText/lambdas/justLambda.kt"); + } + + @Test + @TestMetadata("lambdaReturningUnit.kt") + public void testLambdaReturningUnit() throws Exception { + runTest("compiler/testData/ir/irText/lambdas/lambdaReturningUnit.kt"); + } + + @Test + @TestMetadata("localFunction.kt") + public void testLocalFunction() throws Exception { + runTest("compiler/testData/ir/irText/lambdas/localFunction.kt"); + } + + @Test + @TestMetadata("multipleImplicitReceivers.kt") + public void testMultipleImplicitReceivers() throws Exception { + runTest("compiler/testData/ir/irText/lambdas/multipleImplicitReceivers.kt"); + } + + @Test + @TestMetadata("nonLocalReturn.kt") + public void testNonLocalReturn() throws Exception { + runTest("compiler/testData/ir/irText/lambdas/nonLocalReturn.kt"); + } + } + + @Nested + @TestMetadata("compiler/testData/ir/irText/properties") + @TestDataPath("$PROJECT_ROOT") + public class Properties { + @Test + public void testAllFilesPresentInProperties() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/ir/irText/properties"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.NATIVE, true); + } + + @Nested + @TestMetadata("compiler/testData/ir/irText/properties/backingField") + @TestDataPath("$PROJECT_ROOT") + public class BackingField { + @Test + public void testAllFilesPresentInBackingField() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/ir/irText/properties/backingField"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.NATIVE, true); + } + + @Test + @TestMetadata("backingFieldVisibility.kt") + public void testBackingFieldVisibility() throws Exception { + runTest("compiler/testData/ir/irText/properties/backingField/backingFieldVisibility.kt"); + } + + @Test + @TestMetadata("explicitBackingFieldType.kt") + public void testExplicitBackingFieldType() throws Exception { + runTest("compiler/testData/ir/irText/properties/backingField/explicitBackingFieldType.kt"); + } + + @Test + @TestMetadata("independentBackingFieldType.kt") + public void testIndependentBackingFieldType() throws Exception { + runTest("compiler/testData/ir/irText/properties/backingField/independentBackingFieldType.kt"); + } + + @Test + @TestMetadata("propertyTypeNarrowing.kt") + public void testPropertyTypeNarrowing() throws Exception { + runTest("compiler/testData/ir/irText/properties/backingField/propertyTypeNarrowing.kt"); + } + } + } + + @Nested + @TestMetadata("compiler/testData/ir/irText/regressions") + @TestDataPath("$PROJECT_ROOT") + public class Regressions { + @Test + public void testAllFilesPresentInRegressions() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/ir/irText/regressions"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.NATIVE, true); + } + + @Test + @TestMetadata("coercionInLoop.kt") + public void testCoercionInLoop() throws Exception { + runTest("compiler/testData/ir/irText/regressions/coercionInLoop.kt"); + } + + @Test + @TestMetadata("integerCoercionToT.kt") + public void testIntegerCoercionToT() throws Exception { + runTest("compiler/testData/ir/irText/regressions/integerCoercionToT.kt"); + } + + @Test + @TestMetadata("kt24114.kt") + public void testKt24114() throws Exception { + runTest("compiler/testData/ir/irText/regressions/kt24114.kt"); + } + + @Test + @TestMetadata("newInferenceFixationOrder1.kt") + public void testNewInferenceFixationOrder1() throws Exception { + runTest("compiler/testData/ir/irText/regressions/newInferenceFixationOrder1.kt"); + } + + @Test + @TestMetadata("typeAliasCtorForGenericClass.kt") + public void testTypeAliasCtorForGenericClass() throws Exception { + runTest("compiler/testData/ir/irText/regressions/typeAliasCtorForGenericClass.kt"); + } + } + + @Nested + @TestMetadata("compiler/testData/ir/irText/singletons") + @TestDataPath("$PROJECT_ROOT") + public class Singletons { + @Test + public void testAllFilesPresentInSingletons() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/ir/irText/singletons"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.NATIVE, true); + } + + @Test + @TestMetadata("companion.kt") + public void testCompanion() throws Exception { + runTest("compiler/testData/ir/irText/singletons/companion.kt"); + } + + @Test + @TestMetadata("enumEntry.kt") + public void testEnumEntry() throws Exception { + runTest("compiler/testData/ir/irText/singletons/enumEntry.kt"); + } + + @Test + @TestMetadata("object.kt") + public void testObject() throws Exception { + runTest("compiler/testData/ir/irText/singletons/object.kt"); + } + } + + @Nested + @TestMetadata("compiler/testData/ir/irText/stubs") + @TestDataPath("$PROJECT_ROOT") + public class Stubs { + @Test + public void testAllFilesPresentInStubs() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/ir/irText/stubs"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.NATIVE, true); + } + + @Test + @TestMetadata("genericClassInDifferentModule.kt") + public void testGenericClassInDifferentModule() throws Exception { + runTest("compiler/testData/ir/irText/stubs/genericClassInDifferentModule.kt"); + } + + @Test + @TestMetadata("kotlinInnerClass.kt") + public void testKotlinInnerClass() throws Exception { + runTest("compiler/testData/ir/irText/stubs/kotlinInnerClass.kt"); + } + + @Test + @TestMetadata("simple.kt") + public void testSimple() throws Exception { + runTest("compiler/testData/ir/irText/stubs/simple.kt"); + } + } + + @Nested + @TestMetadata("compiler/testData/ir/irText/types") + @TestDataPath("$PROJECT_ROOT") + public class Types { + @Test + @TestMetadata("abbreviatedTypes.kt") + public void testAbbreviatedTypes() throws Exception { + runTest("compiler/testData/ir/irText/types/abbreviatedTypes.kt"); + } + + @Test + public void testAllFilesPresentInTypes() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/ir/irText/types"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.NATIVE, true); + } + + @Test + @TestMetadata("castsInsideCoroutineInference.kt") + public void testCastsInsideCoroutineInference() throws Exception { + runTest("compiler/testData/ir/irText/types/castsInsideCoroutineInference.kt"); + } + + @Test + @TestMetadata("coercionToUnitInLambdaReturnValue.kt") + public void testCoercionToUnitInLambdaReturnValue() throws Exception { + runTest("compiler/testData/ir/irText/types/coercionToUnitInLambdaReturnValue.kt"); + } + + @Test + @TestMetadata("definitelyNonNull.kt") + public void testDefinitelyNonNull() throws Exception { + runTest("compiler/testData/ir/irText/types/definitelyNonNull.kt"); + } + + @Test + @TestMetadata("definitelyNonNullOverride.kt") + public void testDefinitelyNonNullOverride() throws Exception { + runTest("compiler/testData/ir/irText/types/definitelyNonNullOverride.kt"); + } + + @Test + @TestMetadata("definitelyNonNullSAM.kt") + public void testDefinitelyNonNullSAM() throws Exception { + runTest("compiler/testData/ir/irText/types/definitelyNonNullSAM.kt"); + } + + @Test + @TestMetadata("definitelyNotNullAsArgument.kt") + public void testDefinitelyNotNullAsArgument() throws Exception { + runTest("compiler/testData/ir/irText/types/definitelyNotNullAsArgument.kt"); + } + + @Test + @TestMetadata("definitelyNotNullAsReceiver.kt") + public void testDefinitelyNotNullAsReceiver() throws Exception { + runTest("compiler/testData/ir/irText/types/definitelyNotNullAsReceiver.kt"); + } + + @Test + @TestMetadata("definitelyNotNullWithIntersection1.kt") + public void testDefinitelyNotNullWithIntersection1() throws Exception { + runTest("compiler/testData/ir/irText/types/definitelyNotNullWithIntersection1.kt"); + } + + @Test + @TestMetadata("dontLeaveStubTypesInSetter.kt") + public void testDontLeaveStubTypesInSetter() throws Exception { + runTest("compiler/testData/ir/irText/types/dontLeaveStubTypesInSetter.kt"); + } + + @Test + @TestMetadata("genericDelegatedDeepProperty.kt") + public void testGenericDelegatedDeepProperty() throws Exception { + runTest("compiler/testData/ir/irText/types/genericDelegatedDeepProperty.kt"); + } + + @Test + @TestMetadata("genericFunWithStar.kt") + public void testGenericFunWithStar() throws Exception { + runTest("compiler/testData/ir/irText/types/genericFunWithStar.kt"); + } + + @Test + @TestMetadata("genericPropertyReferenceType.kt") + public void testGenericPropertyReferenceType() throws Exception { + runTest("compiler/testData/ir/irText/types/genericPropertyReferenceType.kt"); + } + + @Test + @TestMetadata("inStarProjectionInReceiverType.kt") + public void testInStarProjectionInReceiverType() throws Exception { + runTest("compiler/testData/ir/irText/types/inStarProjectionInReceiverType.kt"); + } + + @Test + @TestMetadata("intersectionType1.kt") + public void testIntersectionType1() throws Exception { + runTest("compiler/testData/ir/irText/types/intersectionType1.kt"); + } + + @Test + @TestMetadata("intersectionType2.kt") + public void testIntersectionType2() throws Exception { + runTest("compiler/testData/ir/irText/types/intersectionType2.kt"); + } + + @Test + @TestMetadata("intersectionType3.kt") + public void testIntersectionType3() throws Exception { + runTest("compiler/testData/ir/irText/types/intersectionType3.kt"); + } + + @Test + @TestMetadata("intersectionTypeInSamType.kt") + public void testIntersectionTypeInSamType() throws Exception { + runTest("compiler/testData/ir/irText/types/intersectionTypeInSamType.kt"); + } + + @Test + @TestMetadata("kt36143.kt") + public void testKt36143() throws Exception { + runTest("compiler/testData/ir/irText/types/kt36143.kt"); + } + + @Test + @TestMetadata("kt49526.kt") + public void testKt49526() throws Exception { + runTest("compiler/testData/ir/irText/types/kt49526.kt"); + } + + @Test + @TestMetadata("localVariableOfIntersectionType.kt") + public void testLocalVariableOfIntersectionType() throws Exception { + runTest("compiler/testData/ir/irText/types/localVariableOfIntersectionType.kt"); + } + + @Test + @TestMetadata("smartCastOnFakeOverrideReceiver.kt") + public void testSmartCastOnFakeOverrideReceiver() throws Exception { + runTest("compiler/testData/ir/irText/types/smartCastOnFakeOverrideReceiver.kt"); + } + + @Test + @TestMetadata("smartCastOnReceiverOfGenericType.kt") + public void testSmartCastOnReceiverOfGenericType() throws Exception { + runTest("compiler/testData/ir/irText/types/smartCastOnReceiverOfGenericType.kt"); + } + + @Test + @TestMetadata("starProjection.kt") + public void testStarProjection() throws Exception { + runTest("compiler/testData/ir/irText/types/starProjection.kt"); + } + + @Test + @TestMetadata("typeAliasWithUnsafeVariance.kt") + public void testTypeAliasWithUnsafeVariance() throws Exception { + runTest("compiler/testData/ir/irText/types/typeAliasWithUnsafeVariance.kt"); + } + + @Test + @TestMetadata("typeCheckOnDefinitelyNotNull.kt") + public void testTypeCheckOnDefinitelyNotNull() throws Exception { + runTest("compiler/testData/ir/irText/types/typeCheckOnDefinitelyNotNull.kt"); + } + + @Nested + @TestMetadata("compiler/testData/ir/irText/types/nullChecks") + @TestDataPath("$PROJECT_ROOT") + public class NullChecks { + @Test + public void testAllFilesPresentInNullChecks() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/ir/irText/types/nullChecks"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.NATIVE, true); + } + + @Nested + @TestMetadata("compiler/testData/ir/irText/types/nullChecks/nullCheckOnLambdaResult") + @TestDataPath("$PROJECT_ROOT") + public class NullCheckOnLambdaResult { + @Test + public void testAllFilesPresentInNullCheckOnLambdaResult() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/ir/irText/types/nullChecks/nullCheckOnLambdaResult"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.NATIVE, true); + } + } + } + } +} diff --git a/native/native.tests/tests/org/jetbrains/kotlin/generators/tests/GenerateNativeTests.kt b/native/native.tests/tests/org/jetbrains/kotlin/generators/tests/GenerateNativeTests.kt index 56097a4a2b7..93857d1b615 100644 --- a/native/native.tests/tests/org/jetbrains/kotlin/generators/tests/GenerateNativeTests.kt +++ b/native/native.tests/tests/org/jetbrains/kotlin/generators/tests/GenerateNativeTests.kt @@ -20,6 +20,7 @@ import org.jetbrains.kotlin.konan.blackboxtest.support.group.UsePartialLinkage import org.jetbrains.kotlin.konan.diagnostics.AbstractDiagnosticsNativeTest import org.jetbrains.kotlin.konan.diagnostics.AbstractFirLightTreeNativeDiagnosticsTest import org.jetbrains.kotlin.konan.diagnostics.AbstractFirPsiNativeDiagnosticsTest +import org.jetbrains.kotlin.konan.irtext.AbstractClassicNativeIrTextTest import org.jetbrains.kotlin.test.TargetBackend import org.jetbrains.kotlin.test.utils.CUSTOM_TEST_DATA_EXTENSION_PATTERN import org.junit.jupiter.api.Tag @@ -76,6 +77,9 @@ fun main() { model("codegen/box", targetBackend = TargetBackend.NATIVE) model("codegen/boxInline", targetBackend = TargetBackend.NATIVE) } + testClass { + model("ir/irText") + } } // Samples (how to utilize the abilities of new test infrastructure). diff --git a/native/native.tests/tests/org/jetbrains/kotlin/konan/ClassicFrontend2NativeIrConverter.kt b/native/native.tests/tests/org/jetbrains/kotlin/konan/ClassicFrontend2NativeIrConverter.kt new file mode 100644 index 00000000000..261f1fa4a8d --- /dev/null +++ b/native/native.tests/tests/org/jetbrains/kotlin/konan/ClassicFrontend2NativeIrConverter.kt @@ -0,0 +1,155 @@ +/* + * Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.konan + +import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension +import org.jetbrains.kotlin.backend.common.extensions.IrPluginContextImpl +import org.jetbrains.kotlin.backend.common.linkage.issues.checkNoUnboundSymbols +import org.jetbrains.kotlin.backend.common.serialization.DescriptorByIdSignatureFinderImpl +import org.jetbrains.kotlin.config.languageVersionSettings +import org.jetbrains.kotlin.diagnostics.DiagnosticReporterFactory +import org.jetbrains.kotlin.ir.declarations.IrModuleFragment +import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl +import org.jetbrains.kotlin.ir.linkage.IrDeserializer +import org.jetbrains.kotlin.ir.linkage.partial.partialLinkageConfig +import org.jetbrains.kotlin.ir.symbols.IrSymbol +import org.jetbrains.kotlin.ir.util.* +import org.jetbrains.kotlin.konan.blackboxtest.support.CastCompatibleKotlinNativeClassLoader +import org.jetbrains.kotlin.name.Name +import org.jetbrains.kotlin.psi.KtFile +import org.jetbrains.kotlin.psi2ir.Psi2IrConfiguration +import org.jetbrains.kotlin.psi2ir.Psi2IrTranslator +import org.jetbrains.kotlin.psi2ir.generators.DeclarationStubGeneratorImpl +import org.jetbrains.kotlin.test.TargetBackend +import org.jetbrains.kotlin.test.backend.ir.IrBackendInput +import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontendOutputArtifact +import org.jetbrains.kotlin.test.model.BackendKinds +import org.jetbrains.kotlin.test.model.Frontend2BackendConverter +import org.jetbrains.kotlin.test.model.FrontendKinds +import org.jetbrains.kotlin.test.model.TestModule +import org.jetbrains.kotlin.test.services.* +import kotlin.reflect.KClass + + +class ClassicFrontend2NativeIrConverter( + testServices: TestServices, +) : Frontend2BackendConverter( + testServices, + FrontendKinds.ClassicFrontend, + BackendKinds.IrBackend +) { + override val additionalServices: List + get() = listOf(service(::LibraryProvider)) + + override fun transform(module: TestModule, inputArtifact: ClassicFrontendOutputArtifact): IrBackendInput { + return when (module.targetBackend) { + TargetBackend.NATIVE -> transformToNativeIr(module, inputArtifact) + else -> testServices.assertions.fail { "Target backend ${module.targetBackend} is not supported for transformation into IR" } + } + } + + /** + * Mostly mimics [org.jetbrains.kotlin.backend.konan.psiToIr], since direct call is impossible due to: + * - prohibited import of module `:kotlin-native:backend.native` here to `:native:native.tests` + * - invocation via reflection is complicated due to moving [com.intellij.openapi.project.Project] to another subpackage during compiler + * JAR embedding. + * + * It's unlikely that [org.jetbrains.kotlin.backend.konan.psiToIr] would be ever significantly changed before reaching its end-of-life, + * so it's plausible to have a reduced copy here in the test pipeline. + */ + private fun transformToNativeIr(module: TestModule, inputArtifact: ClassicFrontendOutputArtifact): IrBackendInput { + val (psiFiles, analysisResult, project, _) = inputArtifact + + val configuration = testServices.compilerConfigurationProvider.getCompilerConfiguration(module) + + val sourceFiles: List = psiFiles.values.toList() + val translator = Psi2IrTranslator( + configuration.languageVersionSettings, + Psi2IrConfiguration(ignoreErrors = false, configuration.partialLinkageConfig.isEnabled), + configuration.irMessageLogger::checkNoUnboundSymbols + ) + val konanManglerDescClass = kotlinNativeClass("org.jetbrains.kotlin.backend.konan.serialization.KonanManglerDesc") + val manglerDesc = konanManglerDescClass.objectInstance as KotlinMangler.DescriptorMangler + val konanIdSignaturerClass = kotlinNativeClass("org.jetbrains.kotlin.backend.konan.serialization.KonanIdSignaturer") + val konanIdSignaturerConstructor = konanIdSignaturerClass.constructors.single() + val konanIdSignaturerClassInstance = konanIdSignaturerConstructor.call(manglerDesc) as IdSignatureComposer + val symbolTable = SymbolTable(konanIdSignaturerClassInstance, IrFactoryImpl) + val generatorContext = translator.createGeneratorContext( + analysisResult.moduleDescriptor, + analysisResult.bindingContext, + symbolTable + ) + + val konanStubGeneratorExtensionsClass = kotlinNativeClass("org.jetbrains.kotlin.backend.konan.KonanStubGeneratorExtensions") + val stubGenerator = DeclarationStubGeneratorImpl( + analysisResult.moduleDescriptor, symbolTable, + generatorContext.irBuiltIns, + DescriptorByIdSignatureFinderImpl(analysisResult.moduleDescriptor, manglerDesc), + konanStubGeneratorExtensionsClass.objectInstance as StubGeneratorExtensions + ).apply { + unboundSymbolGeneration = true + } + val irDeserializer = object : IrDeserializer { + override fun getDeclaration(symbol: IrSymbol) = stubGenerator.getDeclaration(symbol) + + override fun resolveBySignatureInModule( + signature: IdSignature, + kind: IrDeserializer.TopLevelSymbolKind, + moduleName: Name + ): IrSymbol { + error("Should not be called") + } + + override fun postProcess(inOrAfterLinkageStep: Boolean) = Unit + } + val pluginExtensions = IrGenerationExtension.getInstances(project) + + val moduleFragment = translator.generateModuleFragment( + generatorContext, + sourceFiles, + irProviders = listOf(irDeserializer), + linkerExtensions = pluginExtensions, + ).toKonanModule() + + val pluginContext = IrPluginContextImpl( + generatorContext.moduleDescriptor, + generatorContext.bindingContext, + generatorContext.languageVersionSettings, + generatorContext.symbolTable, + generatorContext.typeTranslator, + generatorContext.irBuiltIns, + linker = irDeserializer, + diagnosticReporter = configuration.irMessageLogger + ) + + val konanManglerIrClassKotlin = kotlinNativeClass("org.jetbrains.kotlin.backend.konan.serialization.KonanManglerIr") + val konanIrMangler = konanManglerIrClassKotlin.objectInstance as KotlinMangler.IrMangler + + return IrBackendInput.NativeBackendInput( + moduleFragment, + dependentIrModuleFragments = emptyList(), + pluginContext, + diagnosticReporter = DiagnosticReporterFactory.createReporter(), + descriptorMangler = (pluginContext.symbolTable as SymbolTable).signaturer.mangler, + irMangler = konanIrMangler, + firMangler = null, + ) + } + + private fun IrModuleFragment.toKonanModule(): IrModuleFragment { + val konanIrModuleFragmentImplClass = kotlinNativeClass("org.jetbrains.kotlin.backend.konan.serialization.KonanIrModuleFragmentImpl") + return konanIrModuleFragmentImplClass.constructors.single().call(descriptor, irBuiltins, files) as IrModuleFragment + } + + private fun kotlinNativeClass(name: String): KClass { + // KT-61248: TODO Replace reflection for direct import, when classes would be extracted out of `backend.native` module + return Class.forName( + name, + true, + CastCompatibleKotlinNativeClassLoader.kotlinNativeClassLoader.classLoader + ).kotlin + } +} \ No newline at end of file diff --git a/native/native.tests/tests/org/jetbrains/kotlin/konan/blackboxtest/support/NativeTestSupport.kt b/native/native.tests/tests/org/jetbrains/kotlin/konan/blackboxtest/support/NativeTestSupport.kt index 1a7d4425e20..4884d849b73 100644 --- a/native/native.tests/tests/org/jetbrains/kotlin/konan/blackboxtest/support/NativeTestSupport.kt +++ b/native/native.tests/tests/org/jetbrains/kotlin/konan/blackboxtest/support/NativeTestSupport.kt @@ -70,6 +70,10 @@ class NativeSimpleTestSupport : BeforeEachCallback { } } +internal object CastCompatibleKotlinNativeClassLoader { + val kotlinNativeClassLoader = NativeTestSupport.computeNativeClassLoader(this::class.java.classLoader) +} + private object NativeTestSupport { private val NAMESPACE = ExtensionContext.Namespace.create(NativeTestSupport::class.java.simpleName) @@ -93,14 +97,24 @@ private object NativeTestSupport { private fun computeNativeHome(): KotlinNativeHome = KotlinNativeHome(File(ProcessLevelProperty.KOTLIN_NATIVE_HOME.readValue())) - private fun computeNativeClassLoader(): KotlinNativeClassLoader = KotlinNativeClassLoader( + /** + * - For Codegen native tests, no parent classloader should be provided, + * since compiler `class K2Native: CLICompiler` is invoked via reflection with kotlinNativeClassLoader, + * so both classes K2Native and CLICompiler need to be loaded with same nativeclassloader. + * This way, `K2Native.doExecute()` method would define abstract method `CLICompiler.doExecute()`. + * With parent classloader, these two classes would be loaded by different classloaders and AbstractMethodError is thrown + * - For irText tests, classloaded mangler instance is passed to generate mangles to IR dumps files. + * For this, a cast of mangler object(within K/N classloader) to mangler interface(within app classloader) is needed, + * which is possible when app classloader is provided as parent. + */ + fun computeNativeClassLoader(parent: ClassLoader? = null): KotlinNativeClassLoader = KotlinNativeClassLoader( lazy { val nativeClassPath = ProcessLevelProperty.COMPILER_CLASSPATH.readValue() .split(':', ';') .map { File(it).toURI().toURL() } .toTypedArray() - URLClassLoader(nativeClassPath, /* no parent class loader */ null).apply { setDefaultAssertionStatus(true) } + URLClassLoader(nativeClassPath, parent).apply { setDefaultAssertionStatus(true) } } ) diff --git a/native/native.tests/tests/org/jetbrains/kotlin/konan/irtext/AbstractClassicNativeIrTextTest.kt b/native/native.tests/tests/org/jetbrains/kotlin/konan/irtext/AbstractClassicNativeIrTextTest.kt new file mode 100644 index 00000000000..f92548f2a69 --- /dev/null +++ b/native/native.tests/tests/org/jetbrains/kotlin/konan/irtext/AbstractClassicNativeIrTextTest.kt @@ -0,0 +1,27 @@ +/* + * Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.konan.irtext + +import org.jetbrains.kotlin.konan.ClassicFrontend2NativeIrConverter +import org.jetbrains.kotlin.test.Constructor +import org.jetbrains.kotlin.test.backend.ir.IrBackendInput +import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontendFacade +import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontendOutputArtifact +import org.jetbrains.kotlin.test.model.Frontend2BackendConverter +import org.jetbrains.kotlin.test.model.FrontendFacade +import org.jetbrains.kotlin.test.model.FrontendKind +import org.jetbrains.kotlin.test.model.FrontendKinds + +open class AbstractClassicNativeIrTextTest: AbstractNativeIrTextTestBase() { + override val frontend: FrontendKind<*> + get() = FrontendKinds.ClassicFrontend + + override val frontendFacade: Constructor> + get() = ::ClassicFrontendFacade + + override val converter: Constructor> + get() = ::ClassicFrontend2NativeIrConverter +} diff --git a/native/native.tests/tests/org/jetbrains/kotlin/konan/irtext/AbstractNativeIrTextTestBase.kt b/native/native.tests/tests/org/jetbrains/kotlin/konan/irtext/AbstractNativeIrTextTestBase.kt new file mode 100644 index 00000000000..be799c7a61f --- /dev/null +++ b/native/native.tests/tests/org/jetbrains/kotlin/konan/irtext/AbstractNativeIrTextTestBase.kt @@ -0,0 +1,40 @@ +/* + * Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.konan.irtext + +import org.jetbrains.kotlin.platform.konan.NativePlatforms +import org.jetbrains.kotlin.test.TargetBackend +import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder +import org.jetbrains.kotlin.test.directives.ConfigurationDirectives +import org.jetbrains.kotlin.test.model.ResultingArtifact +import org.jetbrains.kotlin.test.runners.ir.AbstractIrTextTest +import org.jetbrains.kotlin.test.services.LibraryProvider +import org.jetbrains.kotlin.test.services.configuration.CommonEnvironmentConfigurator +import org.jetbrains.kotlin.test.services.configuration.NativeEnvironmentConfigurator + +abstract class AbstractNativeIrTextTestBase> : + AbstractIrTextTest(NativePlatforms.unspecifiedNativePlatform, TargetBackend.NATIVE) { + + final override fun TestConfigurationBuilder.applyConfigurators() { + useConfigurators( + ::CommonEnvironmentConfigurator, + ::NativeEnvironmentConfigurator, + ) + + useAdditionalService(::LibraryProvider) + } + + override fun configure(builder: TestConfigurationBuilder) { + super.configure(builder) + with(builder) { + defaultDirectives { + // Kotlin/Native does not have "minimal" stdlib(like other backends do), so full stdlib is needed to resolve + // `Any`, `String`, `println`, etc. + +ConfigurationDirectives.WITH_STDLIB + } + } + } +} \ No newline at end of file