K2 Scripting: add Fir script codegen tests
27 failing tests are muted
This commit is contained in:
committed by
Space Team
parent
83d0dbe436
commit
5824b9c59c
@@ -48,6 +48,8 @@ abstract class CLICompiler<A : CommonCompilerArguments> : CLITool<A>() {
|
|||||||
const val SCRIPT_PLUGIN_REGISTRAR_NAME =
|
const val SCRIPT_PLUGIN_REGISTRAR_NAME =
|
||||||
"org.jetbrains.kotlin.scripting.compiler.plugin.ScriptingCompilerConfigurationComponentRegistrar"
|
"org.jetbrains.kotlin.scripting.compiler.plugin.ScriptingCompilerConfigurationComponentRegistrar"
|
||||||
const val SCRIPT_PLUGIN_COMMANDLINE_PROCESSOR_NAME = "org.jetbrains.kotlin.scripting.compiler.plugin.ScriptingCommandLineProcessor"
|
const val SCRIPT_PLUGIN_COMMANDLINE_PROCESSOR_NAME = "org.jetbrains.kotlin.scripting.compiler.plugin.ScriptingCommandLineProcessor"
|
||||||
|
const val SCRIPT_PLUGIN_K2_REGISTRAR_NAME =
|
||||||
|
"org.jetbrains.kotlin.scripting.compiler.plugin.ScriptingK2CompilerPluginRegistrar"
|
||||||
}
|
}
|
||||||
|
|
||||||
abstract val defaultPerformanceManager: CommonCompilerPerformanceManager
|
abstract val defaultPerformanceManager: CommonCompilerPerformanceManager
|
||||||
|
|||||||
+349
@@ -0,0 +1,349 @@
|
|||||||
|
/*
|
||||||
|
* 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.test.runners.codegen;
|
||||||
|
|
||||||
|
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.test.generators.GenerateCompilerTestsKt}. DO NOT MODIFY MANUALLY */
|
||||||
|
@SuppressWarnings("all")
|
||||||
|
@TestMetadata("compiler/testData/codegen/script")
|
||||||
|
@TestDataPath("$PROJECT_ROOT")
|
||||||
|
public class FirScriptCodegenTestGenerated extends AbstractFirScriptCodegenTest {
|
||||||
|
@Test
|
||||||
|
@TestMetadata("adder.kts")
|
||||||
|
public void testAdder() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/script/adder.kts");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testAllFilesPresentInScript() throws Exception {
|
||||||
|
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/script"), Pattern.compile("^(.*)\\.kts?$"), Pattern.compile("^(.+)\\.(reversed|fir|ll)\\.kts?$"), TargetBackend.JVM_IR, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("classLiteralInsideFunction.kts")
|
||||||
|
public void testClassLiteralInsideFunction() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/script/classLiteralInsideFunction.kts");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("destructuringDeclaration.kts")
|
||||||
|
public void testDestructuringDeclaration() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/script/destructuringDeclaration.kts");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("destructuringDeclarationUnderscore.kts")
|
||||||
|
public void testDestructuringDeclarationUnderscore() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/script/destructuringDeclarationUnderscore.kts");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("empty.kts")
|
||||||
|
public void testEmpty() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/script/empty.kts");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("helloWorld.kts")
|
||||||
|
public void testHelloWorld() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/script/helloWorld.kts");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("inline.kts")
|
||||||
|
public void testInline() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/script/inline.kts");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("innerClass.kts")
|
||||||
|
public void testInnerClass() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/script/innerClass.kts");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("kt20707.kts")
|
||||||
|
public void testKt20707() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/script/kt20707.kts");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("kt22029.kts")
|
||||||
|
public void testKt22029() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/script/kt22029.kts");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("kt48025.kts")
|
||||||
|
public void testKt48025() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/script/kt48025.kts");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("localDelegatedProperty.kts")
|
||||||
|
public void testLocalDelegatedProperty() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/script/localDelegatedProperty.kts");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("localDelegatedPropertyInLambda.kts")
|
||||||
|
public void testLocalDelegatedPropertyInLambda() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/script/localDelegatedPropertyInLambda.kts");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("localDelegatedPropertyNoExplicitType.kts")
|
||||||
|
public void testLocalDelegatedPropertyNoExplicitType() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/script/localDelegatedPropertyNoExplicitType.kts");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("localFunction.kts")
|
||||||
|
public void testLocalFunction() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/script/localFunction.kts");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("outerCapture.kts")
|
||||||
|
public void testOuterCapture() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/script/outerCapture.kts");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("parameter.kts")
|
||||||
|
public void testParameter() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/script/parameter.kts");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("parameterArray.kts")
|
||||||
|
public void testParameterArray() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/script/parameterArray.kts");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("parameterClosure.kts")
|
||||||
|
public void testParameterClosure() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/script/parameterClosure.kts");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("parameterLong.kts")
|
||||||
|
public void testParameterLong() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/script/parameterLong.kts");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("secondLevelFunction.kts")
|
||||||
|
public void testSecondLevelFunction() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/script/secondLevelFunction.kts");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("secondLevelFunctionClosure.kts")
|
||||||
|
public void testSecondLevelFunctionClosure() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/script/secondLevelFunctionClosure.kts");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("secondLevelVal.kts")
|
||||||
|
public void testSecondLevelVal() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/script/secondLevelVal.kts");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("simpleClass.kts")
|
||||||
|
public void testSimpleClass() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/script/simpleClass.kts");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("string.kts")
|
||||||
|
public void testString() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/script/string.kts");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("topLevelFunction.kts")
|
||||||
|
public void testTopLevelFunction() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/script/topLevelFunction.kts");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("topLevelFunctionClosure.kts")
|
||||||
|
public void testTopLevelFunctionClosure() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/script/topLevelFunctionClosure.kts");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("topLevelLocalDelegatedProperty.kts")
|
||||||
|
public void testTopLevelLocalDelegatedProperty() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/script/topLevelLocalDelegatedProperty.kts");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("topLevelPropertiesWithGetSet.kts")
|
||||||
|
public void testTopLevelPropertiesWithGetSet() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/script/topLevelPropertiesWithGetSet.kts");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("topLevelProperty.kts")
|
||||||
|
public void testTopLevelProperty() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/script/topLevelProperty.kts");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("topLevelPropertyWithProvideDelegate.kts")
|
||||||
|
public void testTopLevelPropertyWithProvideDelegate() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/script/topLevelPropertyWithProvideDelegate.kts");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("topLevelTypealias.kts")
|
||||||
|
public void testTopLevelTypealias() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/script/topLevelTypealias.kts");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nested
|
||||||
|
@TestMetadata("compiler/testData/codegen/script/scriptInstanceCapturing")
|
||||||
|
@TestDataPath("$PROJECT_ROOT")
|
||||||
|
public class ScriptInstanceCapturing {
|
||||||
|
@Test
|
||||||
|
public void testAllFilesPresentInScriptInstanceCapturing() throws Exception {
|
||||||
|
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/script/scriptInstanceCapturing"), Pattern.compile("^(.*)\\.kts?$"), Pattern.compile("^(.+)\\.(reversed|fir|ll)\\.kts?$"), TargetBackend.JVM_IR, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("anonymousObjectCapturesProperty.kts")
|
||||||
|
public void testAnonymousObjectCapturesProperty() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/script/scriptInstanceCapturing/anonymousObjectCapturesProperty.kts");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("classCapturesExtensionIndirect.kts")
|
||||||
|
public void testClassCapturesExtensionIndirect() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/script/scriptInstanceCapturing/classCapturesExtensionIndirect.kts");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("classCapturesExtensionIndirect2x.kts")
|
||||||
|
public void testClassCapturesExtensionIndirect2x() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/script/scriptInstanceCapturing/classCapturesExtensionIndirect2x.kts");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("classCapturesFunction.kts")
|
||||||
|
public void testClassCapturesFunction() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/script/scriptInstanceCapturing/classCapturesFunction.kts");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("classCapturesProperty.kts")
|
||||||
|
public void testClassCapturesProperty() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/script/scriptInstanceCapturing/classCapturesProperty.kts");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("classCapturesPropertyInStringTemplate.kts")
|
||||||
|
public void testClassCapturesPropertyInStringTemplate() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/script/scriptInstanceCapturing/classCapturesPropertyInStringTemplate.kts");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("classCapturesPropertyIndirect.kts")
|
||||||
|
public void testClassCapturesPropertyIndirect() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/script/scriptInstanceCapturing/classCapturesPropertyIndirect.kts");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("classCapturesPropertyIndirect2x.kts")
|
||||||
|
public void testClassCapturesPropertyIndirect2x() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/script/scriptInstanceCapturing/classCapturesPropertyIndirect2x.kts");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("companionCapturesProperty.kts")
|
||||||
|
public void testCompanionCapturesProperty() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/script/scriptInstanceCapturing/companionCapturesProperty.kts");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("enumCapturesProperty.kts")
|
||||||
|
public void testEnumCapturesProperty() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/script/scriptInstanceCapturing/enumCapturesProperty.kts");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("enumEntryCapturesProperty.kts")
|
||||||
|
public void testEnumEntryCapturesProperty() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/script/scriptInstanceCapturing/enumEntryCapturesProperty.kts");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("innerClassesHierarchyCaptureProperty.kts")
|
||||||
|
public void testInnerClassesHierarchyCaptureProperty() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/script/scriptInstanceCapturing/innerClassesHierarchyCaptureProperty.kts");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("interfaceCapturesProperty.kts")
|
||||||
|
public void testInterfaceCapturesProperty() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/script/scriptInstanceCapturing/interfaceCapturesProperty.kts");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("nestedAndOuterClassesCaptureProperty.kts")
|
||||||
|
public void testNestedAndOuterClassesCaptureProperty() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/script/scriptInstanceCapturing/nestedAndOuterClassesCaptureProperty.kts");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("nestedClassCapturesProperty.kts")
|
||||||
|
public void testNestedClassCapturesProperty() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/script/scriptInstanceCapturing/nestedClassCapturesProperty.kts");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("nestedInnerClassCapturesProperty.kts")
|
||||||
|
public void testNestedInnerClassCapturesProperty() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/script/scriptInstanceCapturing/nestedInnerClassCapturesProperty.kts");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("nestedToObjectClassCapturesProperty.kts")
|
||||||
|
public void testNestedToObjectClassCapturesProperty() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/script/scriptInstanceCapturing/nestedToObjectClassCapturesProperty.kts");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("objectCapturesProperty.kts")
|
||||||
|
public void testObjectCapturesProperty() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/script/scriptInstanceCapturing/objectCapturesProperty.kts");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("objectCapturesPropertyIndirect.kts")
|
||||||
|
public void testObjectCapturesPropertyIndirect() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/script/scriptInstanceCapturing/objectCapturesPropertyIndirect.kts");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("objectCapturesPropertyViaExtension.kts")
|
||||||
|
public void testObjectCapturesPropertyViaExtension() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/script/scriptInstanceCapturing/objectCapturesPropertyViaExtension.kts");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,3 +1,5 @@
|
|||||||
|
// IGNORE_BACKEND_K2: JVM_IR
|
||||||
|
|
||||||
package script.long.name.inside.packag
|
package script.long.name.inside.packag
|
||||||
|
|
||||||
interface I {
|
interface I {
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
// IGNORE_BACKEND_K2: JVM_IR
|
||||||
|
|
||||||
val (abc, def) = A()
|
val (abc, def) = A()
|
||||||
|
|
||||||
val rv = abc + def
|
val rv = abc + def
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
// IGNORE_BACKEND_K2: JVM_IR
|
||||||
|
|
||||||
val (_, b, _) = A()
|
val (_, b, _) = A()
|
||||||
|
|
||||||
class A {
|
class A {
|
||||||
|
|||||||
+2
@@ -1,3 +1,5 @@
|
|||||||
|
// IGNORE_BACKEND_K2: JVM_IR
|
||||||
|
|
||||||
// expected: rv: 2
|
// expected: rv: 2
|
||||||
inline fun foo(l: (Int) -> Int ): Int {
|
inline fun foo(l: (Int) -> Int ): Int {
|
||||||
return l(1)
|
return l(1)
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_BACKEND_K2: JVM_IR
|
||||||
|
|
||||||
val b = "K"
|
val b = "K"
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
// IGNORE_BACKEND_K2: JVM_IR
|
||||||
|
|
||||||
enum class Build { Debug, Release }
|
enum class Build { Debug, Release }
|
||||||
|
|
||||||
fun applySomething(build: Build) = when (build) {
|
fun applySomething(build: Build) = when (build) {
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_BACKEND_K2: JVM_IR
|
||||||
|
|
||||||
data class Pair(val first: Int, val second: Int)
|
data class Pair(val first: Int, val second: Int)
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_BACKEND_K2: JVM_IR
|
||||||
|
|
||||||
val p = 0
|
val p = 0
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
// IGNORE_BACKEND_K2: JVM_IR
|
||||||
|
|
||||||
import kotlin.reflect.KProperty
|
import kotlin.reflect.KProperty
|
||||||
|
|
||||||
class Delegate {
|
class Delegate {
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// IGNORE_BACKEND_K2: JVM_IR
|
||||||
// WITH_REFLECT
|
// WITH_REFLECT
|
||||||
|
|
||||||
import kotlin.reflect.KProperty
|
import kotlin.reflect.KProperty
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
// IGNORE_BACKEND_K2: JVM_IR
|
||||||
|
|
||||||
import kotlin.reflect.KProperty
|
import kotlin.reflect.KProperty
|
||||||
|
|
||||||
class Delegate {
|
class Delegate {
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
// IGNORE_BACKEND_K2: JVM_IR
|
||||||
|
|
||||||
// param: 10
|
// param: 10
|
||||||
|
|
||||||
fun addX(y: Int) = java.lang.Integer.parseInt(args[0]) + y
|
fun addX(y: Int) = java.lang.Integer.parseInt(args[0]) + y
|
||||||
|
|||||||
Vendored
+1
@@ -1,4 +1,5 @@
|
|||||||
// IGNORE_BACKEND: JS, JS_IR, JS_IR_ES6, NATIVE, WASM
|
// IGNORE_BACKEND: JS, JS_IR, JS_IR_ES6, NATIVE, WASM
|
||||||
|
// IGNORE_BACKEND_K2: JVM_IR
|
||||||
|
|
||||||
// expected: rv: 42
|
// expected: rv: 42
|
||||||
|
|
||||||
|
|||||||
Vendored
+1
@@ -1,5 +1,6 @@
|
|||||||
// IGNORE_BACKEND: JS, JS_IR, JS_IR_ES6, NATIVE, WASM
|
// IGNORE_BACKEND: JS, JS_IR, JS_IR_ES6, NATIVE, WASM
|
||||||
// IGNORE_BACKEND: JVM
|
// IGNORE_BACKEND: JVM
|
||||||
|
// IGNORE_BACKEND_K2: JVM_IR
|
||||||
|
|
||||||
// expected: rv: kotlin.Unit
|
// expected: rv: kotlin.Unit
|
||||||
|
|
||||||
|
|||||||
Vendored
+1
@@ -1,5 +1,6 @@
|
|||||||
// IGNORE_BACKEND: JS, JS_IR, JS_IR_ES6, NATIVE, WASM
|
// IGNORE_BACKEND: JS, JS_IR, JS_IR_ES6, NATIVE, WASM
|
||||||
// IGNORE_BACKEND: JVM
|
// IGNORE_BACKEND: JVM
|
||||||
|
// IGNORE_BACKEND_K2: JVM_IR
|
||||||
|
|
||||||
// expected: rv: kotlin.Unit
|
// expected: rv: kotlin.Unit
|
||||||
|
|
||||||
|
|||||||
+1
@@ -1,4 +1,5 @@
|
|||||||
// IGNORE_BACKEND: JS, JS_IR, JS_IR_ES6, NATIVE, WASM
|
// IGNORE_BACKEND: JS, JS_IR, JS_IR_ES6, NATIVE, WASM
|
||||||
|
// IGNORE_BACKEND_K2: JVM_IR
|
||||||
|
|
||||||
// expected: rv: 42
|
// expected: rv: 42
|
||||||
|
|
||||||
|
|||||||
+1
@@ -1,4 +1,5 @@
|
|||||||
// IGNORE_BACKEND: JS, JS_IR, JS_IR_ES6, NATIVE, WASM
|
// IGNORE_BACKEND: JS, JS_IR, JS_IR_ES6, NATIVE, WASM
|
||||||
|
// IGNORE_BACKEND_K2: JVM_IR
|
||||||
|
|
||||||
// expected: rv: abc
|
// expected: rv: abc
|
||||||
|
|
||||||
|
|||||||
Vendored
+1
@@ -1,5 +1,6 @@
|
|||||||
// IGNORE_BACKEND: JS, JS_IR, JS_IR_ES6, NATIVE, WASM
|
// IGNORE_BACKEND: JS, JS_IR, JS_IR_ES6, NATIVE, WASM
|
||||||
// IGNORE_BACKEND: JVM
|
// IGNORE_BACKEND: JVM
|
||||||
|
// IGNORE_BACKEND_K2: JVM_IR
|
||||||
|
|
||||||
// expected: rv: 42
|
// expected: rv: 42
|
||||||
|
|
||||||
|
|||||||
+1
@@ -1,5 +1,6 @@
|
|||||||
// IGNORE_BACKEND: JS, JS_IR, JS_IR_ES6, NATIVE, WASM
|
// IGNORE_BACKEND: JS, JS_IR, JS_IR_ES6, NATIVE, WASM
|
||||||
// IGNORE_BACKEND: JVM
|
// IGNORE_BACKEND: JVM
|
||||||
|
// IGNORE_BACKEND_K2: JVM_IR
|
||||||
|
|
||||||
// expected: rv: 42
|
// expected: rv: 42
|
||||||
|
|
||||||
|
|||||||
Vendored
+1
@@ -1,5 +1,6 @@
|
|||||||
// IGNORE_BACKEND: JS, JS_IR, JS_IR_ES6, NATIVE, WASM
|
// IGNORE_BACKEND: JS, JS_IR, JS_IR_ES6, NATIVE, WASM
|
||||||
// IGNORE_BACKEND: JVM
|
// IGNORE_BACKEND: JVM
|
||||||
|
// IGNORE_BACKEND_K2: JVM_IR
|
||||||
|
|
||||||
// expected: rv: 42
|
// expected: rv: 42
|
||||||
|
|
||||||
|
|||||||
Vendored
+1
@@ -1,4 +1,5 @@
|
|||||||
// IGNORE_BACKEND: JS, JS_IR, JS_IR_ES6, NATIVE, WASM
|
// IGNORE_BACKEND: JS, JS_IR, JS_IR_ES6, NATIVE, WASM
|
||||||
|
// IGNORE_BACKEND_K2: JVM_IR
|
||||||
|
|
||||||
// expected: rv: abcabc
|
// expected: rv: abcabc
|
||||||
|
|
||||||
|
|||||||
Vendored
+1
@@ -1,4 +1,5 @@
|
|||||||
// IGNORE_BACKEND: JS, JS_IR, JS_IR_ES6, NATIVE, WASM
|
// IGNORE_BACKEND: JS, JS_IR, JS_IR_ES6, NATIVE, WASM
|
||||||
|
// IGNORE_BACKEND_K2: JVM_IR
|
||||||
|
|
||||||
// expected: rv: abc!
|
// expected: rv: abc!
|
||||||
|
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
// IGNORE_BACKEND_K2: JVM_IR
|
||||||
|
|
||||||
class SimpleClass(val s: String) {
|
class SimpleClass(val s: String) {
|
||||||
fun foo() = s
|
fun foo() = s
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
// IGNORE_BACKEND_K2: JVM_IR
|
||||||
|
|
||||||
import kotlin.reflect.KProperty
|
import kotlin.reflect.KProperty
|
||||||
|
|
||||||
class Delegate {
|
class Delegate {
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
// IGNORE_BACKEND_K2: JVM_IR
|
||||||
|
|
||||||
var log = "begin"
|
var log = "begin"
|
||||||
fun append(msg: String) {
|
fun append(msg: String) {
|
||||||
log = "$log;$msg"
|
log = "$log;$msg"
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
// IGNORE_BACKEND_K2: JVM_IR
|
||||||
|
|
||||||
import kotlin.reflect.KProperty
|
import kotlin.reflect.KProperty
|
||||||
|
|
||||||
class Delegate {
|
class Delegate {
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
// IGNORE_BACKEND_K2: JVM_IR
|
||||||
|
|
||||||
class SimpleClass(val s: String) {
|
class SimpleClass(val s: String) {
|
||||||
fun foo() = s
|
fun foo() = s
|
||||||
}
|
}
|
||||||
|
|||||||
+40
-36
@@ -282,7 +282,7 @@ open class JvmBoxRunner(testServices: TestServices) : JvmBinaryArtifactHandler(t
|
|||||||
classFileFactory: ClassFileFactory,
|
classFileFactory: ClassFileFactory,
|
||||||
reportProblems: Boolean
|
reportProblems: Boolean
|
||||||
): GeneratedClassLoader {
|
): GeneratedClassLoader {
|
||||||
val classLoader = createClassLoader(module, classFileFactory)
|
val classLoader = generatedTestClassLoader(testServices, module, classFileFactory)
|
||||||
if (REQUIRES_SEPARATE_PROCESS !in module.directives && module.directives.singleOrZeroValue(JDK_KIND)?.requiresSeparateProcess != true) {
|
if (REQUIRES_SEPARATE_PROCESS !in module.directives && module.directives.singleOrZeroValue(JDK_KIND)?.requiresSeparateProcess != true) {
|
||||||
val verificationSucceeded = CodegenTestUtil.verifyAllFilesWithAsm(classFileFactory, classLoader, reportProblems)
|
val verificationSucceeded = CodegenTestUtil.verifyAllFilesWithAsm(classFileFactory, classLoader, reportProblems)
|
||||||
if (!verificationSucceeded) {
|
if (!verificationSucceeded) {
|
||||||
@@ -292,41 +292,6 @@ open class JvmBoxRunner(testServices: TestServices) : JvmBinaryArtifactHandler(t
|
|||||||
return classLoader
|
return classLoader
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun createClassLoader(module: TestModule, classFileFactory: ClassFileFactory): GeneratedClassLoader {
|
|
||||||
val configuration = testServices.compilerConfigurationProvider.getCompilerConfiguration(module)
|
|
||||||
val parentClassLoader = if (configuration[TEST_CONFIGURATION_KIND_KEY]?.withReflection == true) {
|
|
||||||
testServices.standardLibrariesPathProvider.getRuntimeAndReflectJarClassLoader()
|
|
||||||
} else {
|
|
||||||
testServices.standardLibrariesPathProvider.getRuntimeJarClassLoader()
|
|
||||||
}
|
|
||||||
val classpath = computeRuntimeClasspath(module)
|
|
||||||
return GeneratedClassLoader(classFileFactory, parentClassLoader, *classpath.map { it.toURI().toURL() }.toTypedArray())
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun computeRuntimeClasspath(rootModule: TestModule): List<File> {
|
|
||||||
val visited = mutableSetOf<TestModule>()
|
|
||||||
val result = mutableListOf<File>()
|
|
||||||
|
|
||||||
fun computeClasspath(module: TestModule, isRoot: Boolean) {
|
|
||||||
if (!visited.add(module)) return
|
|
||||||
|
|
||||||
if (!isRoot) {
|
|
||||||
result.add(testServices.compiledClassesManager.getCompiledKotlinDirForModule(module))
|
|
||||||
}
|
|
||||||
result.addIfNotNull(testServices.compiledClassesManager.getCompiledJavaDirForModule(module))
|
|
||||||
|
|
||||||
for (dependency in module.allDependencies) {
|
|
||||||
if (dependency.kind == DependencyKind.Binary) {
|
|
||||||
computeClasspath(testServices.dependencyProvider.getTestModule(dependency.moduleName), false)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
computeClasspath(rootModule, true)
|
|
||||||
testServices.runtimeClasspathProviders.flatMapTo(result) { it.runtimeClassPaths(rootModule) }
|
|
||||||
return result
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun KtFile.getFacadeFqName(): String? {
|
private fun KtFile.getFacadeFqName(): String? {
|
||||||
return runIf(getMemberDeclarationsToGenerate(this).isNotEmpty()) {
|
return runIf(getMemberDeclarationsToGenerate(this).isNotEmpty()) {
|
||||||
getFileClassInfoNoResolve(this).facadeClassFqName.asString()
|
getFileClassInfoNoResolve(this).facadeClassFqName.asString()
|
||||||
@@ -349,3 +314,42 @@ open class JvmBoxRunner(testServices: TestServices) : JvmBinaryArtifactHandler(t
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal fun generatedTestClassLoader(
|
||||||
|
testServices: TestServices,
|
||||||
|
module: TestModule,
|
||||||
|
classFileFactory: ClassFileFactory,
|
||||||
|
): GeneratedClassLoader {
|
||||||
|
val configuration = testServices.compilerConfigurationProvider.getCompilerConfiguration(module)
|
||||||
|
val parentClassLoader = if (configuration[TEST_CONFIGURATION_KIND_KEY]?.withReflection == true) {
|
||||||
|
testServices.standardLibrariesPathProvider.getRuntimeAndReflectJarClassLoader()
|
||||||
|
} else {
|
||||||
|
testServices.standardLibrariesPathProvider.getRuntimeJarClassLoader()
|
||||||
|
}
|
||||||
|
val classpath = computeTestRuntimeClasspath(testServices, module)
|
||||||
|
return GeneratedClassLoader(classFileFactory, parentClassLoader, *classpath.map { it.toURI().toURL() }.toTypedArray())
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun computeTestRuntimeClasspath(testServices: TestServices, rootModule: TestModule): MutableList<File> {
|
||||||
|
val visited = mutableSetOf<TestModule>()
|
||||||
|
val result = mutableListOf<File>()
|
||||||
|
|
||||||
|
fun computeClasspath(module: TestModule, isRoot: Boolean) {
|
||||||
|
if (!visited.add(module)) return
|
||||||
|
|
||||||
|
if (!isRoot) {
|
||||||
|
result.add(testServices.compiledClassesManager.getCompiledKotlinDirForModule(module))
|
||||||
|
}
|
||||||
|
result.addIfNotNull(testServices.compiledClassesManager.getCompiledJavaDirForModule(module))
|
||||||
|
|
||||||
|
for (dependency in module.allDependencies) {
|
||||||
|
if (dependency.kind == DependencyKind.Binary) {
|
||||||
|
computeClasspath(testServices.dependencyProvider.getTestModule(dependency.moduleName), false)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
computeClasspath(rootModule, true)
|
||||||
|
testServices.runtimeClasspathProviders.flatMapTo(result) { it.runtimeClassPaths(rootModule) }
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
|||||||
+187
@@ -0,0 +1,187 @@
|
|||||||
|
/*
|
||||||
|
* 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.test.runners.codegen
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.KtPsiSourceFile
|
||||||
|
import org.jetbrains.kotlin.cli.common.CLICompiler
|
||||||
|
import org.jetbrains.kotlin.codegen.GeneratedClassLoader
|
||||||
|
import org.jetbrains.kotlin.compiler.plugin.*
|
||||||
|
import org.jetbrains.kotlin.config.CompilerConfiguration
|
||||||
|
import org.jetbrains.kotlin.name.FqName
|
||||||
|
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
|
||||||
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
|
import org.jetbrains.kotlin.test.FirParser
|
||||||
|
import org.jetbrains.kotlin.test.TargetBackend
|
||||||
|
import org.jetbrains.kotlin.test.backend.BlackBoxCodegenSuppressor
|
||||||
|
import org.jetbrains.kotlin.test.backend.handlers.*
|
||||||
|
import org.jetbrains.kotlin.test.backend.handlers.generatedTestClassLoader
|
||||||
|
import org.jetbrains.kotlin.test.backend.ir.JvmIrBackendFacade
|
||||||
|
import org.jetbrains.kotlin.test.builders.*
|
||||||
|
import org.jetbrains.kotlin.test.directives.configureFirParser
|
||||||
|
import org.jetbrains.kotlin.test.frontend.fir.Fir2IrResultsConverter
|
||||||
|
import org.jetbrains.kotlin.test.frontend.fir.FirFailingTestSuppressor
|
||||||
|
import org.jetbrains.kotlin.test.frontend.fir.FirFrontendFacade
|
||||||
|
import org.jetbrains.kotlin.test.frontend.fir.handlers.FirDiagnosticsHandler
|
||||||
|
import org.jetbrains.kotlin.test.frontend.fir.handlers.FirIdenticalChecker
|
||||||
|
import org.jetbrains.kotlin.test.model.BinaryArtifacts
|
||||||
|
import org.jetbrains.kotlin.test.model.DependencyKind
|
||||||
|
import org.jetbrains.kotlin.test.model.FrontendKinds
|
||||||
|
import org.jetbrains.kotlin.test.model.TestModule
|
||||||
|
import org.jetbrains.kotlin.test.runners.AbstractKotlinCompilerWithTargetBackendTest
|
||||||
|
import org.jetbrains.kotlin.test.services.EnvironmentConfigurator
|
||||||
|
import org.jetbrains.kotlin.test.services.TestServices
|
||||||
|
import org.jetbrains.kotlin.test.services.configuration.CommonEnvironmentConfigurator
|
||||||
|
import org.jetbrains.kotlin.test.services.configuration.JvmEnvironmentConfigurator
|
||||||
|
import org.jetbrains.kotlin.test.services.fir.FirOldFrontendMetaConfigurator
|
||||||
|
import org.jetbrains.kotlin.utils.PathUtil
|
||||||
|
import java.io.File
|
||||||
|
import java.net.URLClassLoader
|
||||||
|
|
||||||
|
open class AbstractFirScriptCodegenTest : AbstractKotlinCompilerWithTargetBackendTest(TargetBackend.JVM_IR) {
|
||||||
|
|
||||||
|
override fun TestConfigurationBuilder.configuration() {
|
||||||
|
globalDefaults {
|
||||||
|
frontend = FrontendKinds.FIR
|
||||||
|
targetPlatform = JvmPlatforms.defaultJvmPlatform
|
||||||
|
dependencyKind = DependencyKind.Source
|
||||||
|
}
|
||||||
|
|
||||||
|
useConfigurators(
|
||||||
|
::CommonEnvironmentConfigurator,
|
||||||
|
::JvmEnvironmentConfigurator,
|
||||||
|
::ScriptingPluginEnvironmentConfigurator
|
||||||
|
)
|
||||||
|
|
||||||
|
facadeStep(::FirFrontendFacade)
|
||||||
|
firHandlersStep()
|
||||||
|
facadeStep(::Fir2IrResultsConverter)
|
||||||
|
irHandlersStep {
|
||||||
|
useHandlers(
|
||||||
|
::IrTextDumpHandler,
|
||||||
|
::IrPrettyKotlinDumpHandler,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
facadeStep(::JvmIrBackendFacade)
|
||||||
|
jvmArtifactsHandlersStep(init = {})
|
||||||
|
|
||||||
|
configureFirHandlersStep {
|
||||||
|
useHandlers(
|
||||||
|
::FirDiagnosticsHandler
|
||||||
|
)
|
||||||
|
commonFirHandlersForCodegenTest()
|
||||||
|
}
|
||||||
|
|
||||||
|
configureJvmArtifactsHandlersStep {
|
||||||
|
commonBackendHandlersForCodegenTest()
|
||||||
|
useHandlers(
|
||||||
|
::BytecodeListingHandler,
|
||||||
|
::FirJvmScriptRunChecker
|
||||||
|
)
|
||||||
|
}
|
||||||
|
enableMetaInfoHandler()
|
||||||
|
|
||||||
|
useAfterAnalysisCheckers(
|
||||||
|
::FirFailingTestSuppressor,
|
||||||
|
::BlackBoxCodegenSuppressor
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun configure(builder: TestConfigurationBuilder) {
|
||||||
|
super.configure(builder)
|
||||||
|
with(builder) {
|
||||||
|
configureFirParser(FirParser.Psi)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class FirJvmScriptRunChecker(testServices: TestServices) : JvmBinaryArtifactHandler(testServices) {
|
||||||
|
|
||||||
|
private var scriptProcessed = false
|
||||||
|
|
||||||
|
override fun processModule(module: TestModule, info: BinaryArtifacts.Jvm) {
|
||||||
|
val fileInfos = info.fileInfos.ifEmpty { return }
|
||||||
|
val classLoader = generatedTestClassLoader(testServices, module, info.classFileFactory)
|
||||||
|
try {
|
||||||
|
for (fileInfo in fileInfos) {
|
||||||
|
when (val sourceFile = fileInfo.sourceFile) {
|
||||||
|
is KtPsiSourceFile -> (sourceFile.psiFile as? KtFile)?.let { ktFile ->
|
||||||
|
ktFile.script?.fqName?.let { scriptFqName ->
|
||||||
|
runAndCheckScript(ktFile, scriptFqName, classLoader)
|
||||||
|
scriptProcessed = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else -> {
|
||||||
|
assertions.fail { "Only PSI scripts are supported so far" }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
classLoader.dispose()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun runAndCheckScript(
|
||||||
|
ktFile: KtFile,
|
||||||
|
scriptFqName: FqName,
|
||||||
|
classLoader: GeneratedClassLoader,
|
||||||
|
) {
|
||||||
|
val expected = Regex("// expected: (\\S+): (.*)").findAll(ktFile.text).map {
|
||||||
|
it.groups[1]!!.value to it.groups[2]!!.value
|
||||||
|
}
|
||||||
|
|
||||||
|
val scriptClass = classLoader.loadClass(scriptFqName.asString())
|
||||||
|
val ctor = scriptClass.constructors.single()
|
||||||
|
val args: Array<String> =
|
||||||
|
Regex("param: (\\S.*)").find(ktFile.text)?.let { it.groups[1]?.value?.split(" ") }
|
||||||
|
.orEmpty().toTypedArray()
|
||||||
|
val scriptInstance = ctor.newInstance(args)
|
||||||
|
var anyExpectationFound = false
|
||||||
|
for ((fieldName, expectedValue) in expected) {
|
||||||
|
anyExpectationFound = true
|
||||||
|
|
||||||
|
if (expectedValue == "<nofield>") {
|
||||||
|
try {
|
||||||
|
scriptClass.getDeclaredField(fieldName)
|
||||||
|
assertions.fail { "must have no field $fieldName" }
|
||||||
|
} catch (e: NoSuchFieldException) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
val field = scriptClass.getDeclaredField(fieldName)
|
||||||
|
field.isAccessible = true
|
||||||
|
val result = field[scriptInstance]
|
||||||
|
val resultString = result?.toString() ?: "null"
|
||||||
|
assertions.assertEquals(expectedValue, resultString) { "comparing field $fieldName" }
|
||||||
|
}
|
||||||
|
assertions.assertTrue(anyExpectationFound) { "expecting at least one expectation" }
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun processAfterAllModules(someAssertionWasFailed: Boolean) {
|
||||||
|
if (!scriptProcessed) {
|
||||||
|
assertions.fail { "Can't find script to test" }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class ScriptingPluginEnvironmentConfigurator(testServices: TestServices) : EnvironmentConfigurator(testServices) {
|
||||||
|
override fun configureCompilerConfiguration(configuration: CompilerConfiguration, module: TestModule) {
|
||||||
|
val libPath = PathUtil.kotlinPathsForCompiler.libPath
|
||||||
|
val pluginClasspath = PathUtil.KOTLIN_SCRIPTING_PLUGIN_CLASSPATH_JARS.map { File(libPath, it) }
|
||||||
|
val pluginClassLoader = URLClassLoader(pluginClasspath.map { it.toURI().toURL() }.toTypedArray(), this::class.java.classLoader)
|
||||||
|
|
||||||
|
val pluginRegistrarClass = pluginClassLoader.loadClass(CLICompiler.SCRIPT_PLUGIN_REGISTRAR_NAME)
|
||||||
|
@Suppress("DEPRECATION")
|
||||||
|
(pluginRegistrarClass.getDeclaredConstructor().newInstance() as? ComponentRegistrar)?.also {
|
||||||
|
configuration.add(ComponentRegistrar.PLUGIN_COMPONENT_REGISTRARS, it)
|
||||||
|
}
|
||||||
|
|
||||||
|
val pluginK2RegistrarClass = pluginClassLoader.loadClass(CLICompiler.SCRIPT_PLUGIN_K2_REGISTRAR_NAME)
|
||||||
|
(pluginK2RegistrarClass.getDeclaredConstructor().newInstance() as? CompilerPluginRegistrar)?.also {
|
||||||
|
configuration.add(CompilerPluginRegistrar.COMPILER_PLUGIN_REGISTRARS, it)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+5
-2
@@ -46,9 +46,12 @@ import org.jetbrains.kotlin.resolve.AbstractResolveTest
|
|||||||
import org.jetbrains.kotlin.resolve.calls.AbstractResolvedCallsTest
|
import org.jetbrains.kotlin.resolve.calls.AbstractResolvedCallsTest
|
||||||
import org.jetbrains.kotlin.resolve.calls.AbstractResolvedConstructorDelegationCallsTests
|
import org.jetbrains.kotlin.resolve.calls.AbstractResolvedConstructorDelegationCallsTests
|
||||||
import org.jetbrains.kotlin.test.TargetBackend
|
import org.jetbrains.kotlin.test.TargetBackend
|
||||||
|
import org.jetbrains.kotlin.test.utils.CUSTOM_TEST_DATA_EXTENSION_PATTERN
|
||||||
import org.jetbrains.kotlin.types.AbstractTypeBindingTest
|
import org.jetbrains.kotlin.types.AbstractTypeBindingTest
|
||||||
|
|
||||||
fun generateJUnit3CompilerTests(args: Array<String>) {
|
fun generateJUnit3CompilerTests(args: Array<String>) {
|
||||||
|
val excludedCustomTestdataPattern = CUSTOM_TEST_DATA_EXTENSION_PATTERN
|
||||||
|
|
||||||
generateTestGroupSuite(args) {
|
generateTestGroupSuite(args) {
|
||||||
testGroup("compiler/tests-gen", "compiler/testData") {
|
testGroup("compiler/tests-gen", "compiler/testData") {
|
||||||
testClass<AbstractDiagnosticsTestWithJsStdLibAndBackendCompilation> {
|
testClass<AbstractDiagnosticsTestWithJsStdLibAndBackendCompilation> {
|
||||||
@@ -103,7 +106,7 @@ fun generateJUnit3CompilerTests(args: Array<String>) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
testClass<AbstractScriptCodegenTest> {
|
testClass<AbstractScriptCodegenTest> {
|
||||||
model("codegen/script", extension = "kts", targetBackend = TargetBackend.JVM)
|
model("codegen/script", extension = "kts", targetBackend = TargetBackend.JVM, excludedPattern = excludedCustomTestdataPattern)
|
||||||
}
|
}
|
||||||
|
|
||||||
testClass<AbstractCustomScriptCodegenTest> {
|
testClass<AbstractCustomScriptCodegenTest> {
|
||||||
@@ -379,7 +382,7 @@ fun generateJUnit3CompilerTests(args: Array<String>) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
testClass<AbstractIrScriptCodegenTest> {
|
testClass<AbstractIrScriptCodegenTest> {
|
||||||
model("codegen/script", extension = "kts", targetBackend = TargetBackend.JVM_IR)
|
model("codegen/script", extension = "kts", targetBackend = TargetBackend.JVM_IR, excludedPattern = excludedCustomTestdataPattern)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+4
@@ -348,6 +348,10 @@ fun generateJUnit5CompilerTests(args: Array<String>) {
|
|||||||
testClass<AbstractFirLightTreeBytecodeListingTest> {
|
testClass<AbstractFirLightTreeBytecodeListingTest> {
|
||||||
model("codegen/bytecodeListing")
|
model("codegen/bytecodeListing")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
testClass<AbstractFirScriptCodegenTest> {
|
||||||
|
model("codegen/script", pattern = "^(.*)\\.kts?$", excludedPattern = excludedCustomTestdataPattern)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
testGroup("compiler/fir/analysis-tests/tests-gen", "compiler/fir/analysis-tests/testData") {
|
testGroup("compiler/fir/analysis-tests/tests-gen", "compiler/fir/analysis-tests/testData") {
|
||||||
|
|||||||
+2
-2
@@ -32,7 +32,7 @@ public class ScriptCodegenTestGenerated extends AbstractScriptCodegenTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void testAllFilesPresentInScript() throws Exception {
|
public void testAllFilesPresentInScript() throws Exception {
|
||||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/script"), Pattern.compile("^(.+)\\.kts$"), null, TargetBackend.JVM, true);
|
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/script"), Pattern.compile("^(.+)\\.kts$"), Pattern.compile("^(.+)\\.(reversed|fir|ll)\\.kts?$"), TargetBackend.JVM, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@TestMetadata("classLiteralInsideFunction.kts")
|
@TestMetadata("classLiteralInsideFunction.kts")
|
||||||
@@ -199,7 +199,7 @@ public class ScriptCodegenTestGenerated extends AbstractScriptCodegenTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void testAllFilesPresentInScriptInstanceCapturing() throws Exception {
|
public void testAllFilesPresentInScriptInstanceCapturing() throws Exception {
|
||||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/script/scriptInstanceCapturing"), Pattern.compile("^(.+)\\.kts$"), null, TargetBackend.JVM, true);
|
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/script/scriptInstanceCapturing"), Pattern.compile("^(.+)\\.kts$"), Pattern.compile("^(.+)\\.(reversed|fir|ll)\\.kts?$"), TargetBackend.JVM, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@TestMetadata("anonymousObjectCapturesProperty.kts")
|
@TestMetadata("anonymousObjectCapturesProperty.kts")
|
||||||
|
|||||||
+2
-2
@@ -32,7 +32,7 @@ public class IrScriptCodegenTestGenerated extends AbstractIrScriptCodegenTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void testAllFilesPresentInScript() throws Exception {
|
public void testAllFilesPresentInScript() throws Exception {
|
||||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/script"), Pattern.compile("^(.+)\\.kts$"), null, TargetBackend.JVM_IR, true);
|
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/script"), Pattern.compile("^(.+)\\.kts$"), Pattern.compile("^(.+)\\.(reversed|fir|ll)\\.kts?$"), TargetBackend.JVM_IR, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@TestMetadata("classLiteralInsideFunction.kts")
|
@TestMetadata("classLiteralInsideFunction.kts")
|
||||||
@@ -199,7 +199,7 @@ public class IrScriptCodegenTestGenerated extends AbstractIrScriptCodegenTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void testAllFilesPresentInScriptInstanceCapturing() throws Exception {
|
public void testAllFilesPresentInScriptInstanceCapturing() throws Exception {
|
||||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/script/scriptInstanceCapturing"), Pattern.compile("^(.+)\\.kts$"), null, TargetBackend.JVM_IR, true);
|
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/script/scriptInstanceCapturing"), Pattern.compile("^(.+)\\.kts$"), Pattern.compile("^(.+)\\.(reversed|fir|ll)\\.kts?$"), TargetBackend.JVM_IR, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@TestMetadata("anonymousObjectCapturesProperty.kts")
|
@TestMetadata("anonymousObjectCapturesProperty.kts")
|
||||||
|
|||||||
Reference in New Issue
Block a user