[Test] Require specifying parser for FIR test. Unify names for FIR tests

Now all tests with `Fir` in name are named accordingly to parser which
  is used in them -- `FirPsi` or `FirLightTree`. This is needed to keep
  consistency between different types of tests, because there is no
  single default in parser mode between different scenarios of using FIR
This commit is contained in:
Dmitriy Novozhilov
2023-02-20 12:14:46 +02:00
committed by Space Team
parent 7e36a88b82
commit da581f38e1
95 changed files with 361 additions and 306 deletions
@@ -18,11 +18,13 @@ import org.jetbrains.kotlin.analysis.test.framework.project.structure.ktModulePr
import org.jetbrains.kotlin.config.LanguageFeature import org.jetbrains.kotlin.config.LanguageFeature
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.test.FirParser
import org.jetbrains.kotlin.test.TestInfrastructureInternals import org.jetbrains.kotlin.test.TestInfrastructureInternals
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
import org.jetbrains.kotlin.test.builders.firHandlersStep import org.jetbrains.kotlin.test.builders.firHandlersStep
import org.jetbrains.kotlin.test.builders.testConfiguration import org.jetbrains.kotlin.test.builders.testConfiguration
import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives
import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives.FIR_PARSER
import org.jetbrains.kotlin.test.frontend.fir.FirFrontendFacade import org.jetbrains.kotlin.test.frontend.fir.FirFrontendFacade
import org.jetbrains.kotlin.test.frontend.fir.FirOutputArtifact import org.jetbrains.kotlin.test.frontend.fir.FirOutputArtifact
import org.jetbrains.kotlin.test.frontend.fir.FirOutputArtifactImpl import org.jetbrains.kotlin.test.frontend.fir.FirOutputArtifactImpl
@@ -33,7 +35,6 @@ import org.jetbrains.kotlin.test.model.TestModule
import org.jetbrains.kotlin.test.services.* import org.jetbrains.kotlin.test.services.*
abstract class AbstractCompilerBasedTestForFir : AbstractCompilerBasedTest() { abstract class AbstractCompilerBasedTestForFir : AbstractCompilerBasedTest() {
@OptIn(TestInfrastructureInternals::class)
final override fun TestConfigurationBuilder.configuration() { final override fun TestConfigurationBuilder.configuration() {
globalDefaults { globalDefaults {
frontend = FrontendKinds.FIR frontend = FrontendKinds.FIR
@@ -41,6 +42,10 @@ abstract class AbstractCompilerBasedTestForFir : AbstractCompilerBasedTest() {
dependencyKind = DependencyKind.Source dependencyKind = DependencyKind.Source
} }
defaultDirectives {
FIR_PARSER with FirParser.Psi
}
configureTest() configureTest()
defaultConfiguration(this) defaultConfiguration(this)
registerAnalysisApiBaseTestServices(disposable, FirLowLevelCompilerBasedTestConfigurator) registerAnalysisApiBaseTestServices(disposable, FirLowLevelCompilerBasedTestConfigurator)
@@ -16,7 +16,7 @@ import java.util.regex.Pattern;
/** This class is generated by {@link org.jetbrains.kotlin.test.generators.GenerateCompilerTestsKt}. DO NOT MODIFY MANUALLY */ /** This class is generated by {@link org.jetbrains.kotlin.test.generators.GenerateCompilerTestsKt}. DO NOT MODIFY MANUALLY */
@SuppressWarnings("all") @SuppressWarnings("all")
public class FirDiagnosticsWithLightTreeTestGenerated extends AbstractFirDiagnosticsWithLightTreeTest { public class FirLightTreeDiagnosticsTestGenerated extends AbstractFirLightTreeDiagnosticsTest {
@Nested @Nested
@TestMetadata("compiler/fir/analysis-tests/testData/resolve") @TestMetadata("compiler/fir/analysis-tests/testData/resolve")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
@@ -17,7 +17,7 @@ import java.util.regex.Pattern;
/** This class is generated by {@link org.jetbrains.kotlin.test.generators.GenerateCompilerTestsKt}. DO NOT MODIFY MANUALLY */ /** This class is generated by {@link org.jetbrains.kotlin.test.generators.GenerateCompilerTestsKt}. DO NOT MODIFY MANUALLY */
@SuppressWarnings("all") @SuppressWarnings("all")
public class FirOldFrontendDiagnosticsWithLightTreeTestGenerated extends AbstractFirDiagnosticsWithLightTreeTest { public class FirLightTreeOldFrontendDiagnosticsTestGenerated extends AbstractFirLightTreeDiagnosticsTest {
@Nested @Nested
@TestMetadata("compiler/testData/diagnostics/tests") @TestMetadata("compiler/testData/diagnostics/tests")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
@@ -18,7 +18,7 @@ import java.util.regex.Pattern;
@SuppressWarnings("all") @SuppressWarnings("all")
@TestMetadata("compiler/testData/diagnostics/nativeTests") @TestMetadata("compiler/testData/diagnostics/nativeTests")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
public class FirOldFrontendNativeDiagnosticsWithLightTreeTestGenerated extends AbstractFirNativeDiagnosticsWithLightTreeTest { public class FirLightTreeOldFrontendNativeDiagnosticsTestGenerated extends AbstractFirLightTreeNativeDiagnosticsTest {
@Test @Test
public void testAllFilesPresentInNativeTests() throws Exception { public void testAllFilesPresentInNativeTests() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/nativeTests"), Pattern.compile("^(.+)\\.kt$"), Pattern.compile("^(.+)\\.(fir|ll)\\.kts?$"), true); KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/nativeTests"), Pattern.compile("^(.+)\\.kt$"), Pattern.compile("^(.+)\\.(fir|ll)\\.kts?$"), true);
@@ -16,7 +16,7 @@ import java.util.regex.Pattern;
/** This class is generated by {@link org.jetbrains.kotlin.test.generators.GenerateCompilerTestsKt}. DO NOT MODIFY MANUALLY */ /** This class is generated by {@link org.jetbrains.kotlin.test.generators.GenerateCompilerTestsKt}. DO NOT MODIFY MANUALLY */
@SuppressWarnings("all") @SuppressWarnings("all")
public class FirDiagnosticTestGenerated extends AbstractFirDiagnosticTest { public class FirPsiDiagnosticTestGenerated extends AbstractFirPsiDiagnosticTest {
@Nested @Nested
@TestMetadata("compiler/fir/analysis-tests/testData/resolve") @TestMetadata("compiler/fir/analysis-tests/testData/resolve")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
@@ -1,5 +1,5 @@
/* /*
* Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors. * 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. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/ */
@@ -18,7 +18,7 @@ import java.util.regex.Pattern;
@SuppressWarnings("all") @SuppressWarnings("all")
@TestMetadata("compiler/tests-spec/testData/diagnostics") @TestMetadata("compiler/tests-spec/testData/diagnostics")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
public class FirDiagnosticTestSpecGenerated extends AbstractFirDiagnosticTestSpec { public class FirPsiDiagnosticTestSpecGenerated extends AbstractFirPsiDiagnosticTestSpec {
@Test @Test
public void testAllFilesPresentInDiagnostics() throws Exception { public void testAllFilesPresentInDiagnostics() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/tests-spec/testData/diagnostics"), Pattern.compile("^(.+)\\.kt$"), Pattern.compile("^(.+)\\.(fir|ll)\\.kts?$"), true, "helpers", "linked/annotations", "linked/built-in-types-and-their-semantics", "linked/control--and-data-flow-analysis.control-flow-graph.expressions-1.conditional-expressions", "linked/control--and-data-flow-analysis/performing-analysis-on-the-control-flow-graph", "linked/declarations/classifier-declaration/class-declaration/nested-and-inner-classifiers", "linked/declarations/classifier-declaration/classifier-initialization", "linked/declarations/classifier-declaration/data-class-declaration", "linked/declarations/function-declaration", "linked/declarations/property-declaration/property-initialization", "linked/declarations/type-alias", "linked/expressions/call-and-property-access-expressions", "linked/expressions/function-literals", "linked/inheritance", "linked/overload-resolution/c-level-partition", "linked/overload-resolution/determining-function-applicability-for-a-specific-call/rationale", "linked/overloadable-operators", "linked/statements/assignments/simple-assignments", "linked/type-inference/local-type-inference", "linked/type-inference/smart-casts/smart-cast-types", "linked/type-system/subtyping/subtyping-for-nullable-types", "linked/type-system/type-kinds/type-parameters"); KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/tests-spec/testData/diagnostics"), Pattern.compile("^(.+)\\.kt$"), Pattern.compile("^(.+)\\.(fir|ll)\\.kts?$"), true, "helpers", "linked/annotations", "linked/built-in-types-and-their-semantics", "linked/control--and-data-flow-analysis.control-flow-graph.expressions-1.conditional-expressions", "linked/control--and-data-flow-analysis/performing-analysis-on-the-control-flow-graph", "linked/declarations/classifier-declaration/class-declaration/nested-and-inner-classifiers", "linked/declarations/classifier-declaration/classifier-initialization", "linked/declarations/classifier-declaration/data-class-declaration", "linked/declarations/function-declaration", "linked/declarations/property-declaration/property-initialization", "linked/declarations/type-alias", "linked/expressions/call-and-property-access-expressions", "linked/expressions/function-literals", "linked/inheritance", "linked/overload-resolution/c-level-partition", "linked/overload-resolution/determining-function-applicability-for-a-specific-call/rationale", "linked/overloadable-operators", "linked/statements/assignments/simple-assignments", "linked/type-inference/local-type-inference", "linked/type-inference/smart-casts/smart-cast-types", "linked/type-system/subtyping/subtyping-for-nullable-types", "linked/type-system/type-kinds/type-parameters");
@@ -17,7 +17,7 @@ import java.util.regex.Pattern;
/** This class is generated by {@link org.jetbrains.kotlin.test.generators.GenerateCompilerTestsKt}. DO NOT MODIFY MANUALLY */ /** This class is generated by {@link org.jetbrains.kotlin.test.generators.GenerateCompilerTestsKt}. DO NOT MODIFY MANUALLY */
@SuppressWarnings("all") @SuppressWarnings("all")
public class FirOldFrontendDiagnosticsTestGenerated extends AbstractFirDiagnosticTest { public class FirPsiOldFrontendDiagnosticsTestGenerated extends AbstractFirPsiDiagnosticTest {
@Nested @Nested
@TestMetadata("compiler/testData/diagnostics/tests") @TestMetadata("compiler/testData/diagnostics/tests")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
@@ -16,7 +16,7 @@ import java.util.regex.Pattern;
/** This class is generated by {@link org.jetbrains.kotlin.test.generators.GenerateCompilerTestsKt}. DO NOT MODIFY MANUALLY */ /** This class is generated by {@link org.jetbrains.kotlin.test.generators.GenerateCompilerTestsKt}. DO NOT MODIFY MANUALLY */
@SuppressWarnings("all") @SuppressWarnings("all")
public class FirOldFrontendForeignAnnotationsSourceJavaTestGenerated extends AbstractFirForeignAnnotationsSourceJavaTest { public class FirPsiOldFrontendForeignAnnotationsCompiledJavaTestGenerated extends AbstractFirPsiForeignAnnotationsCompiledJavaTest {
@Nested @Nested
@TestMetadata("compiler/testData/diagnostics/foreignAnnotationsTests/tests") @TestMetadata("compiler/testData/diagnostics/foreignAnnotationsTests/tests")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
@@ -16,7 +16,7 @@ import java.util.regex.Pattern;
/** This class is generated by {@link org.jetbrains.kotlin.test.generators.GenerateCompilerTestsKt}. DO NOT MODIFY MANUALLY */ /** This class is generated by {@link org.jetbrains.kotlin.test.generators.GenerateCompilerTestsKt}. DO NOT MODIFY MANUALLY */
@SuppressWarnings("all") @SuppressWarnings("all")
public class FirOldFrontendForeignAnnotationsCompiledJavaWithPsiClassReadingTestGenerated extends AbstractFirForeignAnnotationsCompiledJavaWithPsiClassReadingTest { public class FirPsiOldFrontendForeignAnnotationsCompiledJavaWithPsiClassReadingTestGenerated extends AbstractFirPsiForeignAnnotationsCompiledJavaWithPsiClassReadingTest {
@Nested @Nested
@TestMetadata("compiler/testData/diagnostics/foreignAnnotationsTests/tests") @TestMetadata("compiler/testData/diagnostics/foreignAnnotationsTests/tests")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
@@ -16,7 +16,7 @@ import java.util.regex.Pattern;
/** This class is generated by {@link org.jetbrains.kotlin.test.generators.GenerateCompilerTestsKt}. DO NOT MODIFY MANUALLY */ /** This class is generated by {@link org.jetbrains.kotlin.test.generators.GenerateCompilerTestsKt}. DO NOT MODIFY MANUALLY */
@SuppressWarnings("all") @SuppressWarnings("all")
public class FirOldFrontendForeignAnnotationsCompiledJavaTestGenerated extends AbstractFirForeignAnnotationsCompiledJavaTest { public class FirPsiOldFrontendForeignAnnotationsSourceJavaTestGenerated extends AbstractFirPsiForeignAnnotationsSourceJavaTest {
@Nested @Nested
@TestMetadata("compiler/testData/diagnostics/foreignAnnotationsTests/tests") @TestMetadata("compiler/testData/diagnostics/foreignAnnotationsTests/tests")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
@@ -18,7 +18,7 @@ import java.util.regex.Pattern;
@SuppressWarnings("all") @SuppressWarnings("all")
@TestMetadata("compiler/testData/diagnostics/nativeTests") @TestMetadata("compiler/testData/diagnostics/nativeTests")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
public class FirOldFrontendNativeDiagnosticsTestGenerated extends AbstractFirNativeDiagnosticsTest { public class FirPsiOldFrontendNativeDiagnosticsTestGenerated extends AbstractFirPsiNativeDiagnosticsTest {
@Test @Test
public void testAllFilesPresentInNativeTests() throws Exception { public void testAllFilesPresentInNativeTests() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/nativeTests"), Pattern.compile("^(.+)\\.kt$"), Pattern.compile("^(.+)\\.(fir|ll)\\.kts?$"), true); KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/nativeTests"), Pattern.compile("^(.+)\\.kt$"), Pattern.compile("^(.+)\\.(fir|ll)\\.kts?$"), true);
@@ -18,7 +18,7 @@ import java.util.regex.Pattern;
@SuppressWarnings("all") @SuppressWarnings("all")
@TestMetadata("compiler/testData/diagnostics/firTestWithJvmBackend") @TestMetadata("compiler/testData/diagnostics/firTestWithJvmBackend")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
public class FirDiagnosticsTestWithJvmIrBackendGenerated extends AbstractFirDiagnosticsTestWithJvmIrBackend { public class FirPsiDiagnosticsTestWithJvmIrBackendGenerated extends AbstractFirPsiDiagnosticsTestWithJvmIrBackend {
@Test @Test
public void testAllFilesPresentInFirTestWithJvmBackend() throws Exception { public void testAllFilesPresentInFirTestWithJvmBackend() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/firTestWithJvmBackend"), Pattern.compile("^(.+)\\.kt$"), null, true); KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/firTestWithJvmBackend"), Pattern.compile("^(.+)\\.kt$"), null, true);
@@ -18,7 +18,7 @@ import java.util.regex.Pattern;
@SuppressWarnings("all") @SuppressWarnings("all")
@TestMetadata("compiler/testData/diagnostics/testsWithJvmBackend") @TestMetadata("compiler/testData/diagnostics/testsWithJvmBackend")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
public class FirOldDiagnosticsTestWithJvmIrBackendGenerated extends AbstractFirDiagnosticsTestWithJvmIrBackend { public class FirPsiOldDiagnosticsTestWithJvmIrBackendGenerated extends AbstractFirPsiDiagnosticsTestWithJvmIrBackend {
@Test @Test
public void testAllFilesPresentInTestsWithJvmBackend() throws Exception { public void testAllFilesPresentInTestsWithJvmBackend() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/testsWithJvmBackend"), Pattern.compile("^(.+)\\.kt$"), Pattern.compile("^(.+)\\.(fir|ll)\\.kts?$"), true); KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/testsWithJvmBackend"), Pattern.compile("^(.+)\\.kt$"), Pattern.compile("^(.+)\\.(fir|ll)\\.kts?$"), true);
@@ -20,7 +20,7 @@ import java.util.regex.Pattern;
@SuppressWarnings("all") @SuppressWarnings("all")
@TestMetadata("compiler/testData/codegen/box") @TestMetadata("compiler/testData/codegen/box")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
public class FirBlackBoxCodegenTestGenerated extends AbstractFirBlackBoxCodegenTest { public class FirLightTreeBlackBoxCodegenTestGenerated extends AbstractFirLightTreeBlackBoxCodegenTest {
@Test @Test
public void testAllFilesPresentInBox() throws Exception { public void testAllFilesPresentInBox() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true); KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
@@ -19,7 +19,7 @@ import java.util.regex.Pattern;
@SuppressWarnings("all") @SuppressWarnings("all")
@TestMetadata("compiler/testData/codegen/boxInline") @TestMetadata("compiler/testData/codegen/boxInline")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
public class FirBlackBoxInlineCodegenTestGenerated extends AbstractFirBlackBoxInlineCodegenTest { public class FirLightTreeBlackBoxInlineCodegenTestGenerated extends AbstractFirLightTreeBlackBoxInlineCodegenTest {
@Test @Test
public void testAllFilesPresentInBoxInline() throws Exception { public void testAllFilesPresentInBoxInline() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/boxInline"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true); KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/boxInline"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
@@ -20,7 +20,7 @@ import java.util.regex.Pattern;
@SuppressWarnings("all") @SuppressWarnings("all")
@TestMetadata("compiler/testData/codegen/boxModernJdk") @TestMetadata("compiler/testData/codegen/boxModernJdk")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
public class FirBlackBoxModernJdkCodegenTestGenerated extends AbstractFirBlackBoxCodegenTest { public class FirLightTreeBlackBoxModernJdkCodegenTestGenerated extends AbstractFirLightTreeBlackBoxCodegenTest {
@Test @Test
public void testAllFilesPresentInBoxModernJdk() throws Exception { public void testAllFilesPresentInBoxModernJdk() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/boxModernJdk"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true); KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/boxModernJdk"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
@@ -19,7 +19,7 @@ import java.util.regex.Pattern;
@SuppressWarnings("all") @SuppressWarnings("all")
@TestMetadata("compiler/testData/codegen/bytecodeText") @TestMetadata("compiler/testData/codegen/bytecodeText")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
public class FirBytecodeTextTestGenerated extends AbstractFirBytecodeTextTest { public class FirLightTreeBytecodeTextTestGenerated extends AbstractFirLightTreeBytecodeTextTest {
@Test @Test
@TestMetadata("accessorForOverridenVal.kt") @TestMetadata("accessorForOverridenVal.kt")
public void testAccessorForOverridenVal() throws Exception { public void testAccessorForOverridenVal() throws Exception {
@@ -19,7 +19,7 @@ import java.util.regex.Pattern;
@SuppressWarnings("all") @SuppressWarnings("all")
@TestMetadata("compiler/testData/debug/localVariables") @TestMetadata("compiler/testData/debug/localVariables")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
public class FirLocalVariableTestGenerated extends AbstractFirLocalVariableTest { public class FirLightTreeLocalVariableTestGenerated extends AbstractFirLightTreeLocalVariableTest {
@Test @Test
public void testAllFilesPresentInLocalVariables() throws Exception { public void testAllFilesPresentInLocalVariables() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/debug/localVariables"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true); KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/debug/localVariables"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
@@ -19,7 +19,7 @@ import java.util.regex.Pattern;
@SuppressWarnings("all") @SuppressWarnings("all")
@TestMetadata("compiler/testData/codegen/boxInline") @TestMetadata("compiler/testData/codegen/boxInline")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
public class FirSerializeCompileKotlinAgainstInlineKotlinTestGenerated extends AbstractFirSerializeCompileKotlinAgainstInlineKotlinTest { public class FirLightTreeSerializeCompileKotlinAgainstInlineKotlinTestGenerated extends AbstractFirLightTreeSerializeCompileKotlinAgainstInlineKotlinTest {
@Test @Test
public void testAllFilesPresentInBoxInline() throws Exception { public void testAllFilesPresentInBoxInline() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/boxInline"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR_SERIALIZE, true); KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/boxInline"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR_SERIALIZE, true);
@@ -17,7 +17,7 @@ import java.util.regex.Pattern;
/** This class is generated by {@link org.jetbrains.kotlin.test.generators.GenerateCompilerTestsKt}. DO NOT MODIFY MANUALLY */ /** This class is generated by {@link org.jetbrains.kotlin.test.generators.GenerateCompilerTestsKt}. DO NOT MODIFY MANUALLY */
@SuppressWarnings("all") @SuppressWarnings("all")
public class FirSpecificBlackBoxCodegenTestGenerated extends AbstractFirBlackBoxCodegenTest { public class FirLightTreeSpecificBlackBoxCodegenTestGenerated extends AbstractFirLightTreeBlackBoxCodegenTest {
@Nested @Nested
@TestMetadata("compiler/fir/fir2ir/testData/codegen/box") @TestMetadata("compiler/fir/fir2ir/testData/codegen/box")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
@@ -19,7 +19,7 @@ import java.util.regex.Pattern;
@SuppressWarnings("all") @SuppressWarnings("all")
@TestMetadata("compiler/fir/fir2ir/testData/codegen/bytecodeListing") @TestMetadata("compiler/fir/fir2ir/testData/codegen/bytecodeListing")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
public class Fir2IrSpecificBytecodeListingPsiTestGenerated extends AbstractFirPsiBytecodeListingTest { public class FirLightTreeSpecificBytecodeListingTestGenerated extends AbstractFirLightTreeBytecodeListingTest {
@Test @Test
public void testAllFilesPresentInBytecodeListing() throws Exception { public void testAllFilesPresentInBytecodeListing() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/fir/fir2ir/testData/codegen/bytecodeListing"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true); KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/fir/fir2ir/testData/codegen/bytecodeListing"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
@@ -19,7 +19,7 @@ import java.util.regex.Pattern;
@SuppressWarnings("all") @SuppressWarnings("all")
@TestMetadata("compiler/testData/debug/stepping") @TestMetadata("compiler/testData/debug/stepping")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
public class FirSteppingTestGenerated extends AbstractFirSteppingTest { public class FirLightTreeSteppingTestGenerated extends AbstractFirLightTreeSteppingTest {
@Test @Test
public void testAllFilesPresentInStepping() throws Exception { public void testAllFilesPresentInStepping() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/debug/stepping"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true); KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/debug/stepping"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
@@ -19,7 +19,7 @@ import java.util.regex.Pattern;
@SuppressWarnings("all") @SuppressWarnings("all")
@TestMetadata("compiler/fir/fir2ir/testData/codegen/bytecodeListing") @TestMetadata("compiler/fir/fir2ir/testData/codegen/bytecodeListing")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
public class Fir2IrSpecificBytecodeListingTestGenerated extends AbstractFirBytecodeListingTest { public class FirPsiSpecificBytecodeListingTestGenerated extends AbstractFirPsiBytecodeListingTest {
@Test @Test
public void testAllFilesPresentInBytecodeListing() throws Exception { public void testAllFilesPresentInBytecodeListing() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/fir/fir2ir/testData/codegen/bytecodeListing"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true); KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/fir/fir2ir/testData/codegen/bytecodeListing"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
@@ -19,7 +19,7 @@ import java.util.regex.Pattern;
@SuppressWarnings("all") @SuppressWarnings("all")
@TestMetadata("compiler/fir/fir2ir/testData/ir/irText") @TestMetadata("compiler/fir/fir2ir/testData/ir/irText")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
public class LightTreeFir2IrSpecificTextTestGenerated extends AbstractFirPsi2IrTextTest { public class FirLightTreeIrSpecificTextTestGenerated extends AbstractFirLightTreeIrTextTest {
@Test @Test
public void testAllFilesPresentInIrText() throws Exception { public void testAllFilesPresentInIrText() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/fir/fir2ir/testData/ir/irText"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true); KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/fir/fir2ir/testData/ir/irText"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
@@ -19,7 +19,7 @@ import java.util.regex.Pattern;
@SuppressWarnings("all") @SuppressWarnings("all")
@TestMetadata("compiler/testData/ir/irText") @TestMetadata("compiler/testData/ir/irText")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
public class FirPsi2IrTextTestGenerated extends AbstractFirPsi2IrTextTest { public class FirLightTreeIrTextTestGenerated extends AbstractFirLightTreeIrTextTest {
@Test @Test
public void testAllFilesPresentInIrText() throws Exception { public void testAllFilesPresentInIrText() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/ir/irText"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true); KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/ir/irText"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
@@ -19,7 +19,7 @@ import java.util.regex.Pattern;
@SuppressWarnings("all") @SuppressWarnings("all")
@TestMetadata("compiler/fir/fir2ir/testData/ir/irText") @TestMetadata("compiler/fir/fir2ir/testData/ir/irText")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
public class Fir2IrSpecificTextTestGenerated extends AbstractFir2IrTextTest { public class FirPsiIrSpecificTextTestGenerated extends AbstractFirPsiIrTextTest {
@Test @Test
public void testAllFilesPresentInIrText() throws Exception { public void testAllFilesPresentInIrText() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/fir/fir2ir/testData/ir/irText"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true); KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/fir/fir2ir/testData/ir/irText"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
@@ -19,7 +19,7 @@ import java.util.regex.Pattern;
@SuppressWarnings("all") @SuppressWarnings("all")
@TestMetadata("compiler/testData/ir/irText") @TestMetadata("compiler/testData/ir/irText")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
public class Fir2IrTextTestGenerated extends AbstractFir2IrTextTest { public class FirPsiIrTextTestGenerated extends AbstractFirPsiIrTextTest {
@Test @Test
public void testAllFilesPresentInIrText() throws Exception { public void testAllFilesPresentInIrText() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/ir/irText"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true); KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/ir/irText"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
@@ -0,0 +1,10 @@
/*
* 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
enum class FirParser {
Psi, LightTree
}
@@ -19,7 +19,7 @@ import java.util.regex.Pattern;
@SuppressWarnings("all") @SuppressWarnings("all")
@TestMetadata("compiler/testData/ir/interpreter") @TestMetadata("compiler/testData/ir/interpreter")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
public class JvmIrInterpreterAfterFir2IrTestGenerated extends AbstractJvmIrInterpreterAfterFir2IrTest { public class JvmIrInterpreterAfterFirPsi2IrTestGenerated extends AbstractJvmIrInterpreterAfterFirPsi2IrTest {
@Test @Test
@TestMetadata("abstract1.kt") @TestMetadata("abstract1.kt")
public void testAbstract1() throws Exception { public void testAbstract1() throws Exception {
@@ -6,6 +6,7 @@
package org.jetbrains.kotlin.test.directives package org.jetbrains.kotlin.test.directives
import org.jetbrains.kotlin.backend.common.phaser.AnyNamedPhase import org.jetbrains.kotlin.backend.common.phaser.AnyNamedPhase
import org.jetbrains.kotlin.test.FirParser
import org.jetbrains.kotlin.test.TargetBackend import org.jetbrains.kotlin.test.TargetBackend
import org.jetbrains.kotlin.test.backend.handlers.* import org.jetbrains.kotlin.test.backend.handlers.*
import org.jetbrains.kotlin.test.backend.ir.JvmIrBackendFacade import org.jetbrains.kotlin.test.backend.ir.JvmIrBackendFacade
@@ -13,6 +14,7 @@ import org.jetbrains.kotlin.test.directives.model.DirectiveApplicability.File
import org.jetbrains.kotlin.test.directives.model.DirectiveApplicability.Global import org.jetbrains.kotlin.test.directives.model.DirectiveApplicability.Global
import org.jetbrains.kotlin.test.directives.model.SimpleDirectivesContainer import org.jetbrains.kotlin.test.directives.model.SimpleDirectivesContainer
import org.jetbrains.kotlin.test.directives.model.ValueDirective import org.jetbrains.kotlin.test.directives.model.ValueDirective
import org.jetbrains.kotlin.test.directives.model.singleOrZeroValue
import org.jetbrains.kotlin.test.model.FrontendKinds import org.jetbrains.kotlin.test.model.FrontendKinds
import org.jetbrains.kotlin.test.model.TestModule import org.jetbrains.kotlin.test.model.TestModule
@@ -205,7 +207,9 @@ fun extractIgnoredDirectivesForTargetBackend(
FrontendKinds.ClassicFrontend -> listOf(CodegenTestDirectives.IGNORE_BACKEND_K1) FrontendKinds.ClassicFrontend -> listOf(CodegenTestDirectives.IGNORE_BACKEND_K1)
FrontendKinds.FIR -> listOfNotNull( FrontendKinds.FIR -> listOfNotNull(
CodegenTestDirectives.IGNORE_BACKEND_K2, CodegenTestDirectives.IGNORE_BACKEND_K2,
CodegenTestDirectives.IGNORE_BACKEND_K2_LIGHT_TREE.takeIf { module.directives.contains(FirDiagnosticsDirectives.USE_LIGHT_TREE) } CodegenTestDirectives.IGNORE_BACKEND_K2_LIGHT_TREE.takeIf {
module.directives.singleOrZeroValue(FirDiagnosticsDirectives.FIR_PARSER) == FirParser.LightTree
}
) )
else -> return emptyList() else -> return emptyList()
} }
@@ -5,6 +5,9 @@
package org.jetbrains.kotlin.test.directives package org.jetbrains.kotlin.test.directives
import org.jetbrains.kotlin.test.FirParser
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives.FIR_PARSER
import org.jetbrains.kotlin.test.directives.model.DirectiveApplicability.Global import org.jetbrains.kotlin.test.directives.model.DirectiveApplicability.Global
import org.jetbrains.kotlin.test.directives.model.SimpleDirectivesContainer import org.jetbrains.kotlin.test.directives.model.SimpleDirectivesContainer
import org.jetbrains.kotlin.test.frontend.fir.handlers.FirResolvedTypesVerifier import org.jetbrains.kotlin.test.frontend.fir.handlers.FirResolvedTypesVerifier
@@ -36,8 +39,8 @@ object FirDiagnosticsDirectives : SimpleDirectivesContainer() {
applicability = Global applicability = Global
) )
val USE_LIGHT_TREE by directive( val FIR_PARSER by enumDirective<FirParser>(
description = "Enables light tree parser instead of PSI" description = "Defines which parser should be used for FIR compiler"
) )
val FIR_DISABLE_LAZY_RESOLVE_CHECKS by directive( val FIR_DISABLE_LAZY_RESOLVE_CHECKS by directive(
@@ -45,10 +48,7 @@ object FirDiagnosticsDirectives : SimpleDirectivesContainer() {
) )
val COMPARE_WITH_LIGHT_TREE by directive( val COMPARE_WITH_LIGHT_TREE by directive(
description = """ description = "Enable comparing diagnostics between PSI and light tree modes",
Enable comparing diagnostics between PSI and light tree modes
For enabling light tree mode use $USE_LIGHT_TREE directive
""".trimIndent(),
applicability = Global applicability = Global
) )
@@ -78,3 +78,9 @@ object FirDiagnosticsDirectives : SimpleDirectivesContainer() {
""".trimIndent() """.trimIndent()
) )
} }
fun TestConfigurationBuilder.configureFirParser(parser: FirParser) {
defaultDirectives {
FIR_PARSER with parser
}
}
@@ -11,8 +11,8 @@ import org.jetbrains.kotlin.test.directives.model.DirectivesContainer
import org.jetbrains.kotlin.test.directives.model.RegisteredDirectives import org.jetbrains.kotlin.test.directives.model.RegisteredDirectives
import org.jetbrains.kotlin.test.model.AfterAnalysisChecker import org.jetbrains.kotlin.test.model.AfterAnalysisChecker
import org.jetbrains.kotlin.test.model.TestFile import org.jetbrains.kotlin.test.model.TestFile
import org.jetbrains.kotlin.test.runners.AbstractFirDiagnosticTest import org.jetbrains.kotlin.test.runners.AbstractFirPsiDiagnosticsTestWithJvmIrBackend
import org.jetbrains.kotlin.test.runners.AbstractFirDiagnosticsTestWithJvmIrBackend import org.jetbrains.kotlin.test.runners.AbstractFirPsiDiagnosticTest
import org.jetbrains.kotlin.test.runners.AbstractKotlinCompilerTest import org.jetbrains.kotlin.test.runners.AbstractKotlinCompilerTest
import org.jetbrains.kotlin.test.services.* import org.jetbrains.kotlin.test.services.*
import org.jetbrains.kotlin.test.utils.firTestDataFile import org.jetbrains.kotlin.test.utils.firTestDataFile
@@ -59,7 +59,7 @@ open class FirTestDataConsistencyHandler(testServices: TestServices) : AfterAnal
} }
protected open fun correspondingFirTest(): AbstractKotlinCompilerTest { protected open fun correspondingFirTest(): AbstractKotlinCompilerTest {
return if ("Backend" in testServices.testInfo.className) object : AbstractFirDiagnosticsTestWithJvmIrBackend() {} return if ("Backend" in testServices.testInfo.className) object : AbstractFirPsiDiagnosticsTestWithJvmIrBackend() {}
else object : AbstractFirDiagnosticTest() {} else object : AbstractFirPsiDiagnosticTest() {}
} }
} }
@@ -38,7 +38,9 @@ import org.jetbrains.kotlin.platform.konan.isNative
import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.test.TargetBackend import org.jetbrains.kotlin.test.TargetBackend
import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives
import org.jetbrains.kotlin.test.FirParser
import org.jetbrains.kotlin.test.directives.model.DirectivesContainer import org.jetbrains.kotlin.test.directives.model.DirectivesContainer
import org.jetbrains.kotlin.test.directives.model.singleValue
import org.jetbrains.kotlin.test.getAnalyzerServices import org.jetbrains.kotlin.test.getAnalyzerServices
import org.jetbrains.kotlin.test.model.FrontendFacade import org.jetbrains.kotlin.test.model.FrontendFacade
import org.jetbrains.kotlin.test.model.FrontendKinds import org.jetbrains.kotlin.test.model.FrontendKinds
@@ -261,11 +263,11 @@ open class FirFrontendFacade(
PsiElementFinder.EP.getPoint(project).unregisterExtension(JavaElementFinder::class.java) PsiElementFinder.EP.getPoint(project).unregisterExtension(JavaElementFinder::class.java)
val lightTreeEnabled = FirDiagnosticsDirectives.USE_LIGHT_TREE in module.directives val parser = module.directives.singleValue(FirDiagnosticsDirectives.FIR_PARSER)
val (ktFiles, lightTreeFiles) = if (lightTreeEnabled) {
emptyList<KtFile>() to testServices.sourceFileProvider.getLightTreeFilesForSourceFiles(module.files).values val (ktFiles, lightTreeFiles) = when (parser) {
} else { FirParser.LightTree -> emptyList<KtFile>() to testServices.sourceFileProvider.getLightTreeFilesForSourceFiles(module.files).values
testServices.sourceFileProvider.getKtFilesForSourceFiles(module.files, project).values to emptyList() FirParser.Psi -> testServices.sourceFileProvider.getKtFilesForSourceFiles(module.files, project).values to emptyList()
} }
val extensionRegistrars = FirExtensionRegistrar.getInstances(project) val extensionRegistrars = FirExtensionRegistrar.getInstances(project)
@@ -295,7 +297,7 @@ open class FirFrontendFacade(
ktFiles, ktFiles,
lightTreeFiles, lightTreeFiles,
IrGenerationExtension.getInstances(project), IrGenerationExtension.getInstances(project),
lightTreeEnabled, parser,
enablePluginPhases, enablePluginPhases,
generateSignatures = module.targetBackend == TargetBackend.JVM_IR_SERIALIZE generateSignatures = module.targetBackend == TargetBackend.JVM_IR_SERIALIZE
) )
@@ -34,11 +34,13 @@ import org.jetbrains.kotlin.name.FqNameUnsafe
import org.jetbrains.kotlin.psi.KtBinaryExpression import org.jetbrains.kotlin.psi.KtBinaryExpression
import org.jetbrains.kotlin.psi.KtQualifiedExpression import org.jetbrains.kotlin.psi.KtQualifiedExpression
import org.jetbrains.kotlin.resolve.AnalyzingUtils import org.jetbrains.kotlin.resolve.AnalyzingUtils
import org.jetbrains.kotlin.test.FirParser
import org.jetbrains.kotlin.test.directives.AdditionalFilesDirectives import org.jetbrains.kotlin.test.directives.AdditionalFilesDirectives
import org.jetbrains.kotlin.test.directives.DiagnosticsDirectives import org.jetbrains.kotlin.test.directives.DiagnosticsDirectives
import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives
import org.jetbrains.kotlin.test.directives.LanguageSettingsDirectives import org.jetbrains.kotlin.test.directives.LanguageSettingsDirectives
import org.jetbrains.kotlin.test.directives.model.DirectivesContainer import org.jetbrains.kotlin.test.directives.model.DirectivesContainer
import org.jetbrains.kotlin.test.directives.model.singleValue
import org.jetbrains.kotlin.test.frontend.fir.FirOutputArtifact import org.jetbrains.kotlin.test.frontend.fir.FirOutputArtifact
import org.jetbrains.kotlin.test.model.TestFile import org.jetbrains.kotlin.test.model.TestFile
import org.jetbrains.kotlin.test.model.TestModule import org.jetbrains.kotlin.test.model.TestModule
@@ -66,7 +68,7 @@ class FirDiagnosticsHandler(testServices: TestServices) : FirAnalysisHandler(tes
val currentModule = part.module val currentModule = part.module
val lightTreeComparingModeEnabled = FirDiagnosticsDirectives.COMPARE_WITH_LIGHT_TREE in currentModule.directives val lightTreeComparingModeEnabled = FirDiagnosticsDirectives.COMPARE_WITH_LIGHT_TREE in currentModule.directives
val lightTreeEnabled = FirDiagnosticsDirectives.USE_LIGHT_TREE in currentModule.directives val lightTreeEnabled = currentModule.directives.singleValue(FirDiagnosticsDirectives.FIR_PARSER) == FirParser.LightTree
for (file in currentModule.files) { for (file in currentModule.files) {
val firFile = info.mainFirFiles[file] ?: continue val firFile = info.mainFirFiles[file] ?: continue
@@ -491,7 +493,7 @@ class PsiLightTreeMetaInfoProcessor(testServices: TestServices) : AbstractTwoAtt
} }
override fun firstAttributeEnabled(module: TestModule): Boolean { override fun firstAttributeEnabled(module: TestModule): Boolean {
return FirDiagnosticsDirectives.USE_LIGHT_TREE !in module.directives return module.directives.singleValue(FirDiagnosticsDirectives.FIR_PARSER) == FirParser.Psi
} }
} }
@@ -7,13 +7,11 @@ package org.jetbrains.kotlin.test.runners
import org.jetbrains.kotlin.platform.konan.NativePlatforms import org.jetbrains.kotlin.platform.konan.NativePlatforms
import org.jetbrains.kotlin.test.Constructor import org.jetbrains.kotlin.test.Constructor
import org.jetbrains.kotlin.test.FirParser
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
import org.jetbrains.kotlin.test.builders.classicFrontendHandlersStep import org.jetbrains.kotlin.test.builders.classicFrontendHandlersStep
import org.jetbrains.kotlin.test.builders.firHandlersStep import org.jetbrains.kotlin.test.builders.firHandlersStep
import org.jetbrains.kotlin.test.directives.ConfigurationDirectives import org.jetbrains.kotlin.test.directives.*
import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives
import org.jetbrains.kotlin.test.directives.JvmEnvironmentConfigurationDirectives
import org.jetbrains.kotlin.test.directives.LanguageSettingsDirectives
import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontendFacade import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontendFacade
import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontendOutputArtifact import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontendOutputArtifact
import org.jetbrains.kotlin.test.frontend.classic.handlers.ClassicDiagnosticsHandler import org.jetbrains.kotlin.test.frontend.classic.handlers.ClassicDiagnosticsHandler
@@ -88,7 +86,7 @@ abstract class AbstractDiagnosticsNativeTest : AbstractDiagnosticsNativeTestBase
} }
} }
abstract class AbstractFirNativeDiagnosticsTest : AbstractDiagnosticsNativeTestBase<FirOutputArtifact>() { abstract class AbstractFirNativeDiagnosticsTestBase(val parser: FirParser) : AbstractDiagnosticsNativeTestBase<FirOutputArtifact>() {
override val targetFrontend: FrontendKind<FirOutputArtifact> override val targetFrontend: FrontendKind<FirOutputArtifact>
get() = FrontendKinds.FIR get() = FrontendKinds.FIR
@@ -108,24 +106,20 @@ abstract class AbstractFirNativeDiagnosticsTest : AbstractDiagnosticsNativeTestB
} }
} }
override fun configure(builder: TestConfigurationBuilder) {
super.configure(builder)
builder.enableLazyResolvePhaseChecking()
builder.forTestsMatching("compiler/testData/diagnostics/*") {
configurationForClassicAndFirTestsAlongside()
}
}
}
abstract class AbstractFirNativeDiagnosticsWithLightTreeTest : AbstractFirNativeDiagnosticsTest() {
override fun configure(builder: TestConfigurationBuilder) { override fun configure(builder: TestConfigurationBuilder) {
super.configure(builder) super.configure(builder)
with(builder) { with(builder) {
defaultDirectives { configureFirParser(parser)
+FirDiagnosticsDirectives.USE_LIGHT_TREE enableLazyResolvePhaseChecking()
forTestsMatching("compiler/testData/diagnostics/*") {
configurationForClassicAndFirTestsAlongside()
} }
} }
} }
} }
abstract class AbstractFirPsiNativeDiagnosticsTest : AbstractFirNativeDiagnosticsTestBase(FirParser.Psi)
abstract class AbstractFirLightTreeNativeDiagnosticsTest : AbstractFirNativeDiagnosticsTestBase(FirParser.LightTree)
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.test.runners
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
import org.jetbrains.kotlin.test.Constructor import org.jetbrains.kotlin.test.Constructor
import org.jetbrains.kotlin.test.FirParser
import org.jetbrains.kotlin.test.InTextDirectivesUtils import org.jetbrains.kotlin.test.InTextDirectivesUtils
import org.jetbrains.kotlin.test.TargetBackend import org.jetbrains.kotlin.test.TargetBackend
import org.jetbrains.kotlin.test.backend.classic.ClassicBackendInput import org.jetbrains.kotlin.test.backend.classic.ClassicBackendInput
@@ -19,6 +20,7 @@ import org.jetbrains.kotlin.test.builders.classicFrontendHandlersStep
import org.jetbrains.kotlin.test.builders.firHandlersStep import org.jetbrains.kotlin.test.builders.firHandlersStep
import org.jetbrains.kotlin.test.builders.jvmArtifactsHandlersStep import org.jetbrains.kotlin.test.builders.jvmArtifactsHandlersStep
import org.jetbrains.kotlin.test.directives.JvmEnvironmentConfigurationDirectives import org.jetbrains.kotlin.test.directives.JvmEnvironmentConfigurationDirectives
import org.jetbrains.kotlin.test.directives.configureFirParser
import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontend2ClassicBackendConverter import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontend2ClassicBackendConverter
import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontend2IrConverter import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontend2IrConverter
import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontendFacade import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontendFacade
@@ -146,7 +148,9 @@ abstract class AbstractDiagnosticsTestWithJvmIrBackend :
get() = ::JvmIrBackendFacade get() = ::JvmIrBackendFacade
} }
abstract class AbstractFirDiagnosticsTestWithJvmIrBackend : AbstractDiagnosticsTestWithJvmBackend<FirOutputArtifact, IrBackendInput>() { abstract class AbstractFirDiagnosticsTestWithJvmIrBackendBase(
val parser: FirParser
) : AbstractDiagnosticsTestWithJvmBackend<FirOutputArtifact, IrBackendInput>() {
override val targetFrontend: FrontendKind<FirOutputArtifact> override val targetFrontend: FrontendKind<FirOutputArtifact>
get() = FrontendKinds.FIR get() = FrontendKinds.FIR
@@ -169,4 +173,11 @@ abstract class AbstractFirDiagnosticsTestWithJvmIrBackend : AbstractDiagnosticsT
if (InTextDirectivesUtils.isDirectiveDefined(wholeText, "// TARGET_BACKEND: JVM_OLD")) return if (InTextDirectivesUtils.isDirectiveDefined(wholeText, "// TARGET_BACKEND: JVM_OLD")) return
super.runTest(filePath) super.runTest(filePath)
} }
override fun configure(builder: TestConfigurationBuilder) {
super.configure(builder)
builder.configureFirParser(parser)
}
} }
abstract class AbstractFirPsiDiagnosticsTestWithJvmIrBackend : AbstractFirDiagnosticsTestWithJvmIrBackendBase(FirParser.Psi)
@@ -18,13 +18,14 @@ import org.jetbrains.kotlin.test.builders.firHandlersStep
import org.jetbrains.kotlin.test.coerce import org.jetbrains.kotlin.test.coerce
import org.jetbrains.kotlin.test.directives.ConfigurationDirectives.WITH_STDLIB import org.jetbrains.kotlin.test.directives.ConfigurationDirectives.WITH_STDLIB
import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives.FIR_DUMP import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives.FIR_DUMP
import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives.USE_LIGHT_TREE
import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives.WITH_EXTENDED_CHECKERS import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives.WITH_EXTENDED_CHECKERS
import org.jetbrains.kotlin.test.FirParser
import org.jetbrains.kotlin.test.directives.JvmEnvironmentConfigurationDirectives.JDK_KIND import org.jetbrains.kotlin.test.directives.JvmEnvironmentConfigurationDirectives.JDK_KIND
import org.jetbrains.kotlin.test.directives.JvmEnvironmentConfigurationDirectives.WITH_REFLECT import org.jetbrains.kotlin.test.directives.JvmEnvironmentConfigurationDirectives.WITH_REFLECT
import org.jetbrains.kotlin.test.directives.LanguageSettingsDirectives import org.jetbrains.kotlin.test.directives.LanguageSettingsDirectives
import org.jetbrains.kotlin.test.directives.LanguageSettingsDirectives.ALLOW_KOTLIN_PACKAGE import org.jetbrains.kotlin.test.directives.LanguageSettingsDirectives.ALLOW_KOTLIN_PACKAGE
import org.jetbrains.kotlin.test.directives.LanguageSettingsDirectives.LANGUAGE import org.jetbrains.kotlin.test.directives.LanguageSettingsDirectives.LANGUAGE
import org.jetbrains.kotlin.test.directives.configureFirParser
import org.jetbrains.kotlin.test.frontend.fir.* import org.jetbrains.kotlin.test.frontend.fir.*
import org.jetbrains.kotlin.test.frontend.fir.handlers.* import org.jetbrains.kotlin.test.frontend.fir.handlers.*
import org.jetbrains.kotlin.test.model.DependencyKind import org.jetbrains.kotlin.test.model.DependencyKind
@@ -37,23 +38,16 @@ import org.jetbrains.kotlin.test.services.service
import org.jetbrains.kotlin.test.services.sourceProviders.AdditionalDiagnosticsSourceFilesProvider import org.jetbrains.kotlin.test.services.sourceProviders.AdditionalDiagnosticsSourceFilesProvider
import org.jetbrains.kotlin.test.services.sourceProviders.CoroutineHelpersSourceFilesProvider import org.jetbrains.kotlin.test.services.sourceProviders.CoroutineHelpersSourceFilesProvider
abstract class AbstractFirDiagnosticTest : AbstractKotlinCompilerTest() { abstract class AbstractFirDiagnosticTestBase(val parser: FirParser) : AbstractKotlinCompilerTest() {
override fun TestConfigurationBuilder.configuration() { override fun TestConfigurationBuilder.configuration() {
baseFirDiagnosticTestConfiguration() baseFirDiagnosticTestConfiguration()
enableLazyResolvePhaseChecking() enableLazyResolvePhaseChecking()
configureFirParser(parser)
} }
} }
abstract class AbstractFirDiagnosticsWithLightTreeTest : AbstractFirDiagnosticTest() { abstract class AbstractFirPsiDiagnosticTest : AbstractFirDiagnosticTestBase(FirParser.Psi)
override fun configure(builder: TestConfigurationBuilder) { abstract class AbstractFirLightTreeDiagnosticsTest : AbstractFirDiagnosticTestBase(FirParser.LightTree)
super.configure(builder)
with(builder) {
defaultDirectives {
+USE_LIGHT_TREE
}
}
}
}
fun TestConfigurationBuilder.configurationForClassicAndFirTestsAlongside() { fun TestConfigurationBuilder.configurationForClassicAndFirTestsAlongside() {
useAfterAnalysisCheckers( useAfterAnalysisCheckers(
@@ -5,6 +5,7 @@
package org.jetbrains.kotlin.test.runners package org.jetbrains.kotlin.test.runners
import org.jetbrains.kotlin.test.FirParser
import org.jetbrains.kotlin.test.bind import org.jetbrains.kotlin.test.bind
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
import org.jetbrains.kotlin.test.directives.AdditionalFilesDirectives.SPEC_HELPERS import org.jetbrains.kotlin.test.directives.AdditionalFilesDirectives.SPEC_HELPERS
@@ -14,7 +15,7 @@ import org.jetbrains.kotlin.test.frontend.fir.handlers.FirIdenticalChecker
import org.jetbrains.kotlin.test.services.fir.FirOldFrontendMetaConfigurator import org.jetbrains.kotlin.test.services.fir.FirOldFrontendMetaConfigurator
import org.jetbrains.kotlin.test.services.sourceProviders.SpecHelpersSourceFilesProvider import org.jetbrains.kotlin.test.services.sourceProviders.SpecHelpersSourceFilesProvider
abstract class AbstractFirDiagnosticTestSpec : AbstractFirDiagnosticTest() { abstract class AbstractFirDiagnosticTestSpecBase(parser: FirParser) : AbstractFirDiagnosticTestBase(parser) {
override fun configure(builder: TestConfigurationBuilder) { override fun configure(builder: TestConfigurationBuilder) {
super.configure(builder) super.configure(builder)
with(builder) { with(builder) {
@@ -23,6 +24,8 @@ abstract class AbstractFirDiagnosticTestSpec : AbstractFirDiagnosticTest() {
} }
} }
abstract class AbstractFirPsiDiagnosticTestSpec : AbstractFirDiagnosticTestSpecBase(FirParser.Psi)
fun TestConfigurationBuilder.baseFirSpecDiagnosticTestConfiguration(baseDir: String = ".") { fun TestConfigurationBuilder.baseFirSpecDiagnosticTestConfiguration(baseDir: String = ".") {
defaultDirectives { defaultDirectives {
+SPEC_HELPERS +SPEC_HELPERS
@@ -5,11 +5,13 @@
package org.jetbrains.kotlin.test.runners package org.jetbrains.kotlin.test.runners
import org.jetbrains.kotlin.test.FirParser
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
import org.jetbrains.kotlin.test.builders.configureFirHandlersStep import org.jetbrains.kotlin.test.builders.configureFirHandlersStep
import org.jetbrains.kotlin.test.builders.firFrontendStep import org.jetbrains.kotlin.test.builders.firFrontendStep
import org.jetbrains.kotlin.test.builders.firHandlersStep import org.jetbrains.kotlin.test.builders.firHandlersStep
import org.jetbrains.kotlin.test.directives.LanguageSettingsDirectives import org.jetbrains.kotlin.test.directives.LanguageSettingsDirectives
import org.jetbrains.kotlin.test.directives.configureFirParser
import org.jetbrains.kotlin.test.frontend.classic.handlers.FirJspecifyDiagnosticComplianceHandler import org.jetbrains.kotlin.test.frontend.classic.handlers.FirJspecifyDiagnosticComplianceHandler
import org.jetbrains.kotlin.test.frontend.fir.FirFailingTestSuppressor import org.jetbrains.kotlin.test.frontend.fir.FirFailingTestSuppressor
import org.jetbrains.kotlin.test.frontend.fir.handlers.* import org.jetbrains.kotlin.test.frontend.fir.handlers.*
@@ -17,7 +19,10 @@ import org.jetbrains.kotlin.test.model.FrontendKinds
import org.jetbrains.kotlin.test.preprocessors.JspecifyMarksCleanupPreprocessor import org.jetbrains.kotlin.test.preprocessors.JspecifyMarksCleanupPreprocessor
import org.jetbrains.kotlin.test.services.fir.FirOldFrontendMetaConfigurator import org.jetbrains.kotlin.test.services.fir.FirOldFrontendMetaConfigurator
abstract class AbstractFirForeignAnnotationsTestBase(kind: ForeignAnnotationsTestKind) : AbstractForeignAnnotationsTestBase(kind) { abstract class AbstractFirForeignAnnotationsTestBase(
kind: ForeignAnnotationsTestKind,
val parser: FirParser
) : AbstractForeignAnnotationsTestBase(kind) {
override fun TestConfigurationBuilder.configureFrontend() { override fun TestConfigurationBuilder.configureFrontend() {
globalDefaults { globalDefaults {
frontend = FrontendKinds.FIR frontend = FrontendKinds.FIR
@@ -27,6 +32,8 @@ abstract class AbstractFirForeignAnnotationsTestBase(kind: ForeignAnnotationsTes
LanguageSettingsDirectives.LANGUAGE with "+EnableDfaWarningsInK2" LanguageSettingsDirectives.LANGUAGE with "+EnableDfaWarningsInK2"
} }
configureFirParser(parser)
useMetaInfoProcessors(::PsiLightTreeMetaInfoProcessor) useMetaInfoProcessors(::PsiLightTreeMetaInfoProcessor)
firFrontendStep() firFrontendStep()
firHandlersStep { firHandlersStep {
@@ -56,11 +63,11 @@ abstract class AbstractFirForeignAnnotationsTestBase(kind: ForeignAnnotationsTes
} }
} }
abstract class AbstractFirForeignAnnotationsSourceJavaTest : abstract class AbstractFirPsiForeignAnnotationsSourceJavaTest :
AbstractFirForeignAnnotationsTestBase(ForeignAnnotationsTestKind.SOURCE) AbstractFirForeignAnnotationsTestBase(ForeignAnnotationsTestKind.SOURCE, FirParser.Psi)
abstract class AbstractFirForeignAnnotationsCompiledJavaTest : abstract class AbstractFirPsiForeignAnnotationsCompiledJavaTest :
AbstractFirForeignAnnotationsTestBase(ForeignAnnotationsTestKind.COMPILED_JAVA) AbstractFirForeignAnnotationsTestBase(ForeignAnnotationsTestKind.COMPILED_JAVA, FirParser.Psi)
abstract class AbstractFirForeignAnnotationsCompiledJavaWithPsiClassReadingTest : abstract class AbstractFirPsiForeignAnnotationsCompiledJavaWithPsiClassReadingTest :
AbstractFirForeignAnnotationsTestBase(ForeignAnnotationsTestKind.COMPILED_JAVA_WITH_PSI_CLASS_LOADING) AbstractFirForeignAnnotationsTestBase(ForeignAnnotationsTestKind.COMPILED_JAVA_WITH_PSI_CLASS_LOADING, FirParser.Psi)
@@ -108,7 +108,7 @@ private class FirForeignDiagnosticsTestDataConsistencyHandler(testServices: Test
FirTestDataConsistencyHandler(testServices) { FirTestDataConsistencyHandler(testServices) {
override fun correspondingFirTest(): AbstractKotlinCompilerTest = override fun correspondingFirTest(): AbstractKotlinCompilerTest =
object : AbstractFirForeignAnnotationsSourceJavaTest() {} object : AbstractFirPsiForeignAnnotationsSourceJavaTest() {}
} }
abstract class AbstractOldFrontendForeignAnnotationsTestBase(kind: ForeignAnnotationsTestKind) : abstract class AbstractOldFrontendForeignAnnotationsTestBase(kind: ForeignAnnotationsTestKind) :
@@ -18,7 +18,8 @@ import org.jetbrains.kotlin.test.builders.configureClassicFrontendHandlersStep
import org.jetbrains.kotlin.test.builders.configureFirHandlersStep import org.jetbrains.kotlin.test.builders.configureFirHandlersStep
import org.jetbrains.kotlin.test.builders.configureJvmArtifactsHandlersStep import org.jetbrains.kotlin.test.builders.configureJvmArtifactsHandlersStep
import org.jetbrains.kotlin.test.directives.AsmLikeInstructionListingDirectives.CHECK_ASM_LIKE_INSTRUCTIONS import org.jetbrains.kotlin.test.directives.AsmLikeInstructionListingDirectives.CHECK_ASM_LIKE_INSTRUCTIONS
import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives.USE_LIGHT_TREE import org.jetbrains.kotlin.test.FirParser
import org.jetbrains.kotlin.test.directives.configureFirParser
import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontend2ClassicBackendConverter import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontend2ClassicBackendConverter
import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontend2IrConverter import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontend2IrConverter
import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontendFacade import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontendFacade
@@ -100,7 +101,7 @@ open class AbstractIrAsmLikeInstructionListingTest :
get() = ::JvmIrBackendFacade get() = ::JvmIrBackendFacade
} }
abstract class AbstractFirAsmLikeInstructionListingTestBase(val useLightTree: Boolean) : abstract class AbstractFirAsmLikeInstructionListingTestBase(val parser: FirParser) :
AbstractAsmLikeInstructionListingTestBase<FirOutputArtifact, IrBackendInput>( AbstractAsmLikeInstructionListingTestBase<FirOutputArtifact, IrBackendInput>(
FrontendKinds.FIR, FrontendKinds.FIR,
TargetBackend.JVM_IR TargetBackend.JVM_IR
@@ -117,12 +118,13 @@ abstract class AbstractFirAsmLikeInstructionListingTestBase(val useLightTree: Bo
override fun configure(builder: TestConfigurationBuilder) { override fun configure(builder: TestConfigurationBuilder) {
super.configure(builder) super.configure(builder)
if (useLightTree) { builder.configureFirParser(parser)
builder.defaultDirectives { +USE_LIGHT_TREE }
}
} }
} }
open class AbstractFirAsmLikeInstructionListingTest : AbstractFirAsmLikeInstructionListingTestBase(useLightTree = true) open class AbstractFirLightTreeAsmLikeInstructionListingTest : AbstractFirAsmLikeInstructionListingTestBase(FirParser.LightTree)
@FirPsiCodegenTest
open class AbstractFirPsiAsmLikeInstructionListingTest : AbstractFirAsmLikeInstructionListingTestBase(FirParser.Psi)
@@ -21,7 +21,7 @@ open class AbstractIrBlackBoxInlineCodegenTest : AbstractIrBlackBoxCodegenTest()
} }
} }
open class AbstractFirBlackBoxInlineCodegenTest : AbstractFirBlackBoxCodegenTest() { open class AbstractFirLightTreeBlackBoxInlineCodegenTest : AbstractFirLightTreeBlackBoxCodegenTest() {
override fun configure(builder: TestConfigurationBuilder) { override fun configure(builder: TestConfigurationBuilder) {
super.configure(builder) super.configure(builder)
builder.useInlineHandlers() builder.useInlineHandlers()
@@ -32,8 +32,6 @@ open class AbstractFirBlackBoxInlineCodegenTest : AbstractFirBlackBoxCodegenTest
open class AbstractFirPsiBlackBoxInlineCodegenTest : AbstractFirPsiBlackBoxCodegenTest() { open class AbstractFirPsiBlackBoxInlineCodegenTest : AbstractFirPsiBlackBoxCodegenTest() {
override fun configure(builder: TestConfigurationBuilder) { override fun configure(builder: TestConfigurationBuilder) {
super.configure(builder) super.configure(builder)
with(builder) { builder.useInlineHandlers()
useInlineHandlers()
}
} }
} }
@@ -6,6 +6,7 @@
package org.jetbrains.kotlin.test.runners.codegen package org.jetbrains.kotlin.test.runners.codegen
import org.jetbrains.kotlin.test.Constructor import org.jetbrains.kotlin.test.Constructor
import org.jetbrains.kotlin.test.FirParser
import org.jetbrains.kotlin.test.TargetBackend import org.jetbrains.kotlin.test.TargetBackend
import org.jetbrains.kotlin.test.backend.BlackBoxCodegenSuppressor import org.jetbrains.kotlin.test.backend.BlackBoxCodegenSuppressor
import org.jetbrains.kotlin.test.backend.classic.ClassicBackendInput import org.jetbrains.kotlin.test.backend.classic.ClassicBackendInput
@@ -15,9 +16,7 @@ import org.jetbrains.kotlin.test.backend.ir.IrBackendInput
import org.jetbrains.kotlin.test.backend.ir.JvmIrBackendFacade import org.jetbrains.kotlin.test.backend.ir.JvmIrBackendFacade
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
import org.jetbrains.kotlin.test.builders.configureJvmArtifactsHandlersStep import org.jetbrains.kotlin.test.builders.configureJvmArtifactsHandlersStep
import org.jetbrains.kotlin.test.directives.CodegenTestDirectives import org.jetbrains.kotlin.test.directives.*
import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives
import org.jetbrains.kotlin.test.directives.LanguageSettingsDirectives
import org.jetbrains.kotlin.test.runners.AbstractKotlinCompilerWithTargetBackendTest import org.jetbrains.kotlin.test.runners.AbstractKotlinCompilerWithTargetBackendTest
import org.jetbrains.kotlin.test.frontend.classic.* import org.jetbrains.kotlin.test.frontend.classic.*
import org.jetbrains.kotlin.test.frontend.fir.Fir2IrResultsConverter import org.jetbrains.kotlin.test.frontend.fir.Fir2IrResultsConverter
@@ -81,7 +80,7 @@ open class AbstractIrBytecodeListingTest : AbstractBytecodeListingTestBase<Class
get() = ::JvmIrBackendFacade get() = ::JvmIrBackendFacade
} }
abstract class AbstractFirBytecodeListingTestBase(val useLightTree: Boolean) : abstract class AbstractFirBytecodeListingTestBase(val parser: FirParser) :
AbstractBytecodeListingTestBase<FirOutputArtifact, IrBackendInput>( AbstractBytecodeListingTestBase<FirOutputArtifact, IrBackendInput>(
TargetBackend.JVM_IR, TargetBackend.JVM_IR,
FrontendKinds.FIR FrontendKinds.FIR
@@ -97,13 +96,11 @@ abstract class AbstractFirBytecodeListingTestBase(val useLightTree: Boolean) :
override fun configure(builder: TestConfigurationBuilder) { override fun configure(builder: TestConfigurationBuilder) {
super.configure(builder) super.configure(builder)
if (useLightTree) { builder.configureFirParser(parser)
builder.defaultDirectives { +FirDiagnosticsDirectives.USE_LIGHT_TREE }
}
} }
} }
open class AbstractFirBytecodeListingTest : AbstractFirBytecodeListingTestBase(useLightTree = true) open class AbstractFirLightTreeBytecodeListingTest : AbstractFirBytecodeListingTestBase(FirParser.LightTree)
@FirPsiCodegenTest @FirPsiCodegenTest
open class AbstractFirPsiBytecodeListingTest : AbstractFirBytecodeListingTestBase(useLightTree = false) open class AbstractFirPsiBytecodeListingTest : AbstractFirBytecodeListingTestBase(FirParser.Psi)
@@ -18,7 +18,8 @@ import org.jetbrains.kotlin.test.builders.configureJvmArtifactsHandlersStep
import org.jetbrains.kotlin.test.directives.JvmEnvironmentConfigurationDirectives.USE_PSI_CLASS_FILES_READING import org.jetbrains.kotlin.test.directives.JvmEnvironmentConfigurationDirectives.USE_PSI_CLASS_FILES_READING
import org.jetbrains.kotlin.test.directives.JvmEnvironmentConfigurationDirectives.WITH_REFLECT import org.jetbrains.kotlin.test.directives.JvmEnvironmentConfigurationDirectives.WITH_REFLECT
import org.jetbrains.kotlin.test.directives.ConfigurationDirectives.WITH_STDLIB import org.jetbrains.kotlin.test.directives.ConfigurationDirectives.WITH_STDLIB
import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives import org.jetbrains.kotlin.test.FirParser
import org.jetbrains.kotlin.test.directives.configureFirParser
import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontend2ClassicBackendConverter import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontend2ClassicBackendConverter
import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontend2IrConverter import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontend2IrConverter
import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontendFacade import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontendFacade
@@ -83,7 +84,7 @@ open class AbstractIrBytecodeTextTest : AbstractBytecodeTextTestBase<ClassicFron
get() = ::JvmIrBackendFacade get() = ::JvmIrBackendFacade
} }
open class AbstractFirBytecodeTextTestBase(val useLightTree: Boolean) : AbstractBytecodeTextTestBase<FirOutputArtifact, IrBackendInput>( open class AbstractFirBytecodeTextTestBase(val parser: FirParser) : AbstractBytecodeTextTestBase<FirOutputArtifact, IrBackendInput>(
targetBackend = TargetBackend.JVM_IR, targetBackend = TargetBackend.JVM_IR,
targetFrontend = FrontendKinds.FIR targetFrontend = FrontendKinds.FIR
) { ) {
@@ -102,15 +103,13 @@ open class AbstractFirBytecodeTextTestBase(val useLightTree: Boolean) : Abstract
defaultDirectives { defaultDirectives {
// See KT-44152 // See KT-44152
-USE_PSI_CLASS_FILES_READING -USE_PSI_CLASS_FILES_READING
if (useLightTree) { builder.configureFirParser(parser)
+FirDiagnosticsDirectives.USE_LIGHT_TREE
}
} }
} }
} }
} }
open class AbstractFirBytecodeTextTest : AbstractFirBytecodeTextTestBase(useLightTree = true) open class AbstractFirLightTreeBytecodeTextTest : AbstractFirBytecodeTextTestBase(FirParser.LightTree)
@FirPsiCodegenTest @FirPsiCodegenTest
open class AbstractFirPsiBytecodeTextTest : AbstractFirBytecodeTextTestBase(useLightTree = false) open class AbstractFirPsiBytecodeTextTest : AbstractFirBytecodeTextTestBase(FirParser.Psi)
@@ -20,8 +20,9 @@ import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
import org.jetbrains.kotlin.test.builders.configureIrHandlersStep import org.jetbrains.kotlin.test.builders.configureIrHandlersStep
import org.jetbrains.kotlin.test.directives.CodegenTestDirectives.IGNORE_BACKEND_K2_MULTI_MODULE import org.jetbrains.kotlin.test.directives.CodegenTestDirectives.IGNORE_BACKEND_K2_MULTI_MODULE
import org.jetbrains.kotlin.test.directives.CodegenTestDirectives.IGNORE_BACKEND_MULTI_MODULE import org.jetbrains.kotlin.test.directives.CodegenTestDirectives.IGNORE_BACKEND_MULTI_MODULE
import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives import org.jetbrains.kotlin.test.FirParser
import org.jetbrains.kotlin.test.directives.JvmEnvironmentConfigurationDirectives.SERIALIZE_IR import org.jetbrains.kotlin.test.directives.JvmEnvironmentConfigurationDirectives.SERIALIZE_IR
import org.jetbrains.kotlin.test.directives.configureFirParser
import org.jetbrains.kotlin.test.directives.model.ValueDirective import org.jetbrains.kotlin.test.directives.model.ValueDirective
import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontend2ClassicBackendConverter import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontend2ClassicBackendConverter
import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontend2IrConverter import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontend2IrConverter
@@ -103,7 +104,7 @@ open class AbstractIrSerializeCompileKotlinAgainstInlineKotlinTest : AbstractIrC
} }
} }
open class AbstractFirSerializeCompileKotlinAgainstInlineKotlinTestBase(val useLightTree: Boolean) : open class AbstractFirSerializeCompileKotlinAgainstInlineKotlinTestBase(val parser: FirParser) :
AbstractCompileKotlinAgainstInlineKotlinTestBase<FirOutputArtifact, IrBackendInput>(FrontendKinds.FIR, TargetBackend.JVM_IR_SERIALIZE) { AbstractCompileKotlinAgainstInlineKotlinTestBase<FirOutputArtifact, IrBackendInput>(FrontendKinds.FIR, TargetBackend.JVM_IR_SERIALIZE) {
override val frontendFacade: Constructor<FrontendFacade<FirOutputArtifact>> override val frontendFacade: Constructor<FrontendFacade<FirOutputArtifact>>
@@ -120,15 +121,13 @@ open class AbstractFirSerializeCompileKotlinAgainstInlineKotlinTestBase(val useL
override fun configure(builder: TestConfigurationBuilder) { override fun configure(builder: TestConfigurationBuilder) {
super.configure(builder) super.configure(builder)
builder.configureForSerialization() builder.configureForSerialization()
if (useLightTree) { builder.configureFirParser(parser)
builder.defaultDirectives { +FirDiagnosticsDirectives.USE_LIGHT_TREE }
}
} }
} }
open class AbstractFirSerializeCompileKotlinAgainstInlineKotlinTest : open class AbstractFirLightTreeSerializeCompileKotlinAgainstInlineKotlinTest :
AbstractFirSerializeCompileKotlinAgainstInlineKotlinTestBase(useLightTree = true) AbstractFirSerializeCompileKotlinAgainstInlineKotlinTestBase(FirParser.LightTree)
@FirPsiCodegenTest @FirPsiCodegenTest
open class AbstractFirPsiSerializeCompileKotlinAgainstInlineKotlinTest : open class AbstractFirPsiSerializeCompileKotlinAgainstInlineKotlinTest :
AbstractFirSerializeCompileKotlinAgainstInlineKotlinTestBase(useLightTree = false) AbstractFirSerializeCompileKotlinAgainstInlineKotlinTestBase(FirParser.Psi)
@@ -13,8 +13,9 @@ import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
import org.jetbrains.kotlin.test.builders.configureFirHandlersStep import org.jetbrains.kotlin.test.builders.configureFirHandlersStep
import org.jetbrains.kotlin.test.directives.JvmEnvironmentConfigurationDirectives.USE_PSI_CLASS_FILES_READING import org.jetbrains.kotlin.test.directives.JvmEnvironmentConfigurationDirectives.USE_PSI_CLASS_FILES_READING
import org.jetbrains.kotlin.test.directives.ConfigurationDirectives.WITH_STDLIB import org.jetbrains.kotlin.test.directives.ConfigurationDirectives.WITH_STDLIB
import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives.USE_LIGHT_TREE import org.jetbrains.kotlin.test.FirParser
import org.jetbrains.kotlin.test.directives.LanguageSettingsDirectives import org.jetbrains.kotlin.test.directives.LanguageSettingsDirectives
import org.jetbrains.kotlin.test.directives.configureFirParser
import org.jetbrains.kotlin.test.frontend.fir.Fir2IrResultsConverter import org.jetbrains.kotlin.test.frontend.fir.Fir2IrResultsConverter
import org.jetbrains.kotlin.test.frontend.fir.FirFrontendFacade import org.jetbrains.kotlin.test.frontend.fir.FirFrontendFacade
import org.jetbrains.kotlin.test.frontend.fir.FirMetaInfoDiffSuppressor import org.jetbrains.kotlin.test.frontend.fir.FirMetaInfoDiffSuppressor
@@ -26,7 +27,7 @@ import org.jetbrains.kotlin.test.frontend.fir.handlers.FirScopeDumpHandler
import org.jetbrains.kotlin.test.model.* import org.jetbrains.kotlin.test.model.*
abstract class AbstractFirBlackBoxCodegenTestBase( abstract class AbstractFirBlackBoxCodegenTestBase(
val useLightTree: Boolean val parser: FirParser
) : AbstractJvmBlackBoxCodegenTestBase<FirOutputArtifact, IrBackendInput>( ) : AbstractJvmBlackBoxCodegenTestBase<FirOutputArtifact, IrBackendInput>(
FrontendKinds.FIR, FrontendKinds.FIR,
TargetBackend.JVM_IR TargetBackend.JVM_IR
@@ -43,12 +44,10 @@ abstract class AbstractFirBlackBoxCodegenTestBase(
override fun configure(builder: TestConfigurationBuilder) { override fun configure(builder: TestConfigurationBuilder) {
super.configure(builder) super.configure(builder)
with(builder) { with(builder) {
configureFirParser(parser)
defaultDirectives { defaultDirectives {
// See KT-44152 // See KT-44152
-USE_PSI_CLASS_FILES_READING -USE_PSI_CLASS_FILES_READING
if (useLightTree) {
+USE_LIGHT_TREE
}
} }
forTestsMatching("*WithStdLib/*") { forTestsMatching("*WithStdLib/*") {
@@ -84,7 +83,7 @@ abstract class AbstractFirBlackBoxCodegenTestBase(
} }
} }
open class AbstractFirBlackBoxCodegenTest : AbstractFirBlackBoxCodegenTestBase(useLightTree = true) open class AbstractFirLightTreeBlackBoxCodegenTest : AbstractFirBlackBoxCodegenTestBase(FirParser.LightTree)
@FirPsiCodegenTest @FirPsiCodegenTest
open class AbstractFirPsiBlackBoxCodegenTest : AbstractFirBlackBoxCodegenTestBase(useLightTree = false) open class AbstractFirPsiBlackBoxCodegenTest : AbstractFirBlackBoxCodegenTestBase(FirParser.Psi)
@@ -12,7 +12,8 @@ import org.jetbrains.kotlin.test.backend.classic.ClassicJvmBackendFacade
import org.jetbrains.kotlin.test.backend.ir.IrBackendInput import org.jetbrains.kotlin.test.backend.ir.IrBackendInput
import org.jetbrains.kotlin.test.backend.ir.JvmIrBackendFacade import org.jetbrains.kotlin.test.backend.ir.JvmIrBackendFacade
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives import org.jetbrains.kotlin.test.FirParser
import org.jetbrains.kotlin.test.directives.configureFirParser
import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontend2ClassicBackendConverter import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontend2ClassicBackendConverter
import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontend2IrConverter import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontend2IrConverter
import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontendFacade import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontendFacade
@@ -61,7 +62,7 @@ open class AbstractLocalVariableTest : AbstractLocalVariableTestBase<ClassicFron
} }
} }
open class AbstractFirLocalVariableTestBase(val useLightTree: Boolean) : AbstractLocalVariableTestBase<FirOutputArtifact, IrBackendInput>( open class AbstractFirLocalVariableTestBase(val parser: FirParser) : AbstractLocalVariableTestBase<FirOutputArtifact, IrBackendInput>(
FrontendKinds.FIR, FrontendKinds.FIR,
TargetBackend.JVM_IR TargetBackend.JVM_IR
) { ) {
@@ -77,13 +78,11 @@ open class AbstractFirLocalVariableTestBase(val useLightTree: Boolean) : Abstrac
override fun configure(builder: TestConfigurationBuilder) { override fun configure(builder: TestConfigurationBuilder) {
super.configure(builder) super.configure(builder)
builder.configureDumpHandlersForCodegenTest() builder.configureDumpHandlersForCodegenTest()
if (useLightTree) { builder.configureFirParser(parser)
builder.defaultDirectives { +FirDiagnosticsDirectives.USE_LIGHT_TREE }
}
} }
} }
open class AbstractFirLocalVariableTest : AbstractFirLocalVariableTestBase(useLightTree = true) open class AbstractFirLightTreeLocalVariableTest : AbstractFirLocalVariableTestBase(FirParser.LightTree)
@FirPsiCodegenTest @FirPsiCodegenTest
open class AbstractFirPsiLocalVariableTest : AbstractFirLocalVariableTestBase(useLightTree = false) open class AbstractFirPsiLocalVariableTest : AbstractFirLocalVariableTestBase(FirParser.Psi)
@@ -12,7 +12,8 @@ import org.jetbrains.kotlin.test.backend.classic.ClassicJvmBackendFacade
import org.jetbrains.kotlin.test.backend.ir.IrBackendInput import org.jetbrains.kotlin.test.backend.ir.IrBackendInput
import org.jetbrains.kotlin.test.backend.ir.JvmIrBackendFacade import org.jetbrains.kotlin.test.backend.ir.JvmIrBackendFacade
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives import org.jetbrains.kotlin.test.FirParser
import org.jetbrains.kotlin.test.directives.configureFirParser
import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontend2ClassicBackendConverter import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontend2ClassicBackendConverter
import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontend2IrConverter import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontend2IrConverter
import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontendFacade import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontendFacade
@@ -61,7 +62,7 @@ open class AbstractSteppingTest : AbstractSteppingTestBase<ClassicFrontendOutput
} }
} }
open class AbstractFirSteppingTestBase(val useLightTree: Boolean) : AbstractSteppingTestBase<FirOutputArtifact, IrBackendInput>( open class AbstractFirSteppingTestBase(val parser: FirParser) : AbstractSteppingTestBase<FirOutputArtifact, IrBackendInput>(
FrontendKinds.FIR, FrontendKinds.FIR,
TargetBackend.JVM_IR TargetBackend.JVM_IR
) { ) {
@@ -77,13 +78,11 @@ open class AbstractFirSteppingTestBase(val useLightTree: Boolean) : AbstractStep
override fun configure(builder: TestConfigurationBuilder) { override fun configure(builder: TestConfigurationBuilder) {
super.configure(builder) super.configure(builder)
builder.configureDumpHandlersForCodegenTest() builder.configureDumpHandlersForCodegenTest()
if (useLightTree) { builder.configureFirParser(parser)
builder.defaultDirectives { +FirDiagnosticsDirectives.USE_LIGHT_TREE }
}
} }
} }
open class AbstractFirSteppingTest : AbstractFirSteppingTestBase(useLightTree = true) open class AbstractFirLightTreeSteppingTest : AbstractFirSteppingTestBase(FirParser.LightTree)
@FirPsiCodegenTest @FirPsiCodegenTest
open class AbstractFirPsiSteppingTest : AbstractFirSteppingTestBase(useLightTree = false) open class AbstractFirPsiSteppingTest : AbstractFirSteppingTestBase(FirParser.Psi)
@@ -18,8 +18,9 @@ import org.jetbrains.kotlin.test.builders.firHandlersStep
import org.jetbrains.kotlin.test.builders.irHandlersStep import org.jetbrains.kotlin.test.builders.irHandlersStep
import org.jetbrains.kotlin.test.directives.CodegenTestDirectives.DUMP_IR import org.jetbrains.kotlin.test.directives.CodegenTestDirectives.DUMP_IR
import org.jetbrains.kotlin.test.directives.CodegenTestDirectives.DUMP_KT_IR import org.jetbrains.kotlin.test.directives.CodegenTestDirectives.DUMP_KT_IR
import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives import org.jetbrains.kotlin.test.FirParser
import org.jetbrains.kotlin.test.directives.LanguageSettingsDirectives import org.jetbrains.kotlin.test.directives.LanguageSettingsDirectives
import org.jetbrains.kotlin.test.directives.configureFirParser
import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontend2IrConverter import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontend2IrConverter
import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontendFacade import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontendFacade
import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontendOutputArtifact import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontendOutputArtifact
@@ -116,7 +117,7 @@ open class AbstractIrTextTest : AbstractIrTextTestBase<ClassicFrontendOutputArti
} }
} }
open class AbstractFir2IrTextTestBase(val useLightTree: Boolean) : AbstractIrTextTestBase<FirOutputArtifact>() { open class AbstractFirIrTextTestBase(val parser: FirParser) : AbstractIrTextTestBase<FirOutputArtifact>() {
override val frontend: FrontendKind<*> override val frontend: FrontendKind<*>
get() = FrontendKinds.FIR get() = FrontendKinds.FIR
override val frontendFacade: Constructor<FrontendFacade<FirOutputArtifact>> override val frontendFacade: Constructor<FrontendFacade<FirOutputArtifact>>
@@ -127,12 +128,7 @@ open class AbstractFir2IrTextTestBase(val useLightTree: Boolean) : AbstractIrTex
override fun configure(builder: TestConfigurationBuilder) { override fun configure(builder: TestConfigurationBuilder) {
super.configure(builder) super.configure(builder)
with(builder) { with(builder) {
if (useLightTree) { configureFirParser(parser)
defaultDirectives {
+FirDiagnosticsDirectives.USE_LIGHT_TREE
}
}
useAfterAnalysisCheckers( useAfterAnalysisCheckers(
::FirIrDumpIdenticalChecker, ::FirIrDumpIdenticalChecker,
::BlackBoxCodegenSuppressor ::BlackBoxCodegenSuppressor
@@ -147,12 +143,12 @@ open class AbstractFir2IrTextTestBase(val useLightTree: Boolean) : AbstractIrTex
} }
} }
open class AbstractFir2IrTextTest : AbstractFir2IrTextTestBase(useLightTree = true) open class AbstractFirLightTreeIrTextTest : AbstractFirIrTextTestBase(FirParser.LightTree)
@FirPsiCodegenTest @FirPsiCodegenTest
open class AbstractFirPsi2IrTextTest : AbstractFir2IrTextTestBase(useLightTree = false) open class AbstractFirPsiIrTextTest : AbstractFirIrTextTestBase(FirParser.Psi)
open class AbstractFir2IrJsTextTestBase(useLightTree: Boolean) : AbstractFir2IrTextTestBase(useLightTree) { open class AbstractFirIrJsTextTestBase(parser: FirParser) : AbstractFirIrTextTestBase(parser) {
override fun TestConfigurationBuilder.applyConfigurators() { override fun TestConfigurationBuilder.applyConfigurators() {
useConfigurators( useConfigurators(
::CommonEnvironmentConfigurator, ::CommonEnvironmentConfigurator,
@@ -175,4 +171,4 @@ open class AbstractFir2IrJsTextTestBase(useLightTree: Boolean) : AbstractFir2IrT
} }
} }
open class AbstractFir2IrJsTextTest : AbstractFir2IrJsTextTestBase(useLightTree = true) open class AbstractFirLightTreeIrJsTextTest : AbstractFirIrJsTextTestBase(FirParser.LightTree)
@@ -9,12 +9,14 @@ import org.jetbrains.kotlin.config.AnalysisFlag
import org.jetbrains.kotlin.config.AnalysisFlags import org.jetbrains.kotlin.config.AnalysisFlags
import org.jetbrains.kotlin.config.LanguageVersion import org.jetbrains.kotlin.config.LanguageVersion
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
import org.jetbrains.kotlin.test.FirParser
import org.jetbrains.kotlin.test.TargetBackend import org.jetbrains.kotlin.test.TargetBackend
import org.jetbrains.kotlin.test.backend.BlackBoxCodegenSuppressor import org.jetbrains.kotlin.test.backend.BlackBoxCodegenSuppressor
import org.jetbrains.kotlin.test.backend.handlers.IrInterpreterBackendHandler import org.jetbrains.kotlin.test.backend.handlers.IrInterpreterBackendHandler
import org.jetbrains.kotlin.test.builders.* import org.jetbrains.kotlin.test.builders.*
import org.jetbrains.kotlin.test.directives.JvmEnvironmentConfigurationDirectives import org.jetbrains.kotlin.test.directives.JvmEnvironmentConfigurationDirectives
import org.jetbrains.kotlin.test.directives.LanguageSettingsDirectives import org.jetbrains.kotlin.test.directives.LanguageSettingsDirectives
import org.jetbrains.kotlin.test.directives.configureFirParser
import org.jetbrains.kotlin.test.directives.model.RegisteredDirectives import org.jetbrains.kotlin.test.directives.model.RegisteredDirectives
import org.jetbrains.kotlin.test.model.BinaryKind import org.jetbrains.kotlin.test.model.BinaryKind
import org.jetbrains.kotlin.test.model.DependencyKind import org.jetbrains.kotlin.test.model.DependencyKind
@@ -22,6 +24,7 @@ import org.jetbrains.kotlin.test.model.FrontendKind
import org.jetbrains.kotlin.test.model.FrontendKinds import org.jetbrains.kotlin.test.model.FrontendKinds
import org.jetbrains.kotlin.test.preprocessors.IrInterpreterImplicitKotlinImports import org.jetbrains.kotlin.test.preprocessors.IrInterpreterImplicitKotlinImports
import org.jetbrains.kotlin.test.runners.AbstractKotlinCompilerWithTargetBackendTest import org.jetbrains.kotlin.test.runners.AbstractKotlinCompilerWithTargetBackendTest
import org.jetbrains.kotlin.test.runners.codegen.FirPsiCodegenTest
import org.jetbrains.kotlin.test.services.EnvironmentConfigurator import org.jetbrains.kotlin.test.services.EnvironmentConfigurator
import org.jetbrains.kotlin.test.services.TestServices import org.jetbrains.kotlin.test.services.TestServices
import org.jetbrains.kotlin.test.services.configuration.CommonEnvironmentConfigurator import org.jetbrains.kotlin.test.services.configuration.CommonEnvironmentConfigurator
@@ -81,7 +84,15 @@ open class AbstractJvmIrInterpreterTest(frontendKind: FrontendKind<*>) : Abstrac
} }
} }
open class AbstractJvmIrInterpreterAfterFir2IrTest : AbstractJvmIrInterpreterTest(FrontendKinds.FIR) abstract class AbstractJvmIrInterpreterAfterFir2IrTestBase(val parser: FirParser) : AbstractJvmIrInterpreterTest(FrontendKinds.FIR) {
override fun configure(builder: TestConfigurationBuilder) {
super.configure(builder)
builder.configureFirParser(parser)
}
}
open class AbstractJvmIrInterpreterAfterFirPsi2IrTest : AbstractJvmIrInterpreterAfterFir2IrTestBase(FirParser.Psi)
open class AbstractJvmIrInterpreterAfterPsi2IrTest : AbstractJvmIrInterpreterTest(FrontendKinds.ClassicFrontend) open class AbstractJvmIrInterpreterAfterPsi2IrTest : AbstractJvmIrInterpreterTest(FrontendKinds.ClassicFrontend)
class IrInterpreterEnvironmentConfigurator(testServices: TestServices) : EnvironmentConfigurator(testServices) { class IrInterpreterEnvironmentConfigurator(testServices: TestServices) : EnvironmentConfigurator(testServices) {
@@ -45,6 +45,7 @@ import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.resolve.AnalyzingUtils import org.jetbrains.kotlin.resolve.AnalyzingUtils
import org.jetbrains.kotlin.resolve.BindingTrace import org.jetbrains.kotlin.resolve.BindingTrace
import org.jetbrains.kotlin.resolve.lazy.JvmResolveUtil import org.jetbrains.kotlin.resolve.lazy.JvmResolveUtil
import org.jetbrains.kotlin.test.FirParser
import org.jetbrains.kotlin.util.DummyLogger import org.jetbrains.kotlin.util.DummyLogger
import org.jetbrains.kotlin.util.Logger import org.jetbrains.kotlin.util.Logger
import java.io.File import java.io.File
@@ -124,6 +125,7 @@ object GenerationUtils {
files, files,
emptyList(), emptyList(),
IrGenerationExtension.getInstances(project), IrGenerationExtension.getInstances(project),
FirParser.Psi,
generateSignatures = false generateSignatures = false
) )
val fir2IrExtensions = JvmFir2IrExtensions(configuration, JvmIrDeserializerImpl(), JvmIrMangler) val fir2IrExtensions = JvmFir2IrExtensions(configuration, JvmIrDeserializerImpl(), JvmIrMangler)
@@ -25,6 +25,7 @@ import org.jetbrains.kotlin.ir.backend.jvm.serialization.JvmIrMangler
import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl
import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.sourceFiles.LightTreeFile import org.jetbrains.kotlin.sourceFiles.LightTreeFile
import org.jetbrains.kotlin.test.FirParser
abstract class AbstractFirAnalyzerFacade { abstract class AbstractFirAnalyzerFacade {
abstract val scopeSession: ScopeSession abstract val scopeSession: ScopeSession
@@ -45,7 +46,7 @@ class FirAnalyzerFacade(
val ktFiles: Collection<KtFile> = emptyList(), // may be empty if light tree mode enabled val ktFiles: Collection<KtFile> = emptyList(), // may be empty if light tree mode enabled
val lightTreeFiles: Collection<LightTreeFile> = emptyList(), // may be empty if light tree mode disabled val lightTreeFiles: Collection<LightTreeFile> = emptyList(), // may be empty if light tree mode disabled
val irGeneratorExtensions: Collection<IrGenerationExtension>, val irGeneratorExtensions: Collection<IrGenerationExtension>,
val useLightTree: Boolean = false, val parser: FirParser,
val enablePluginPhases: Boolean = false, val enablePluginPhases: Boolean = false,
val generateSignatures: Boolean = false val generateSignatures: Boolean = false
) : AbstractFirAnalyzerFacade() { ) : AbstractFirAnalyzerFacade() {
@@ -59,18 +60,21 @@ class FirAnalyzerFacade(
private fun buildRawFir() { private fun buildRawFir() {
if (firFiles != null) return if (firFiles != null) return
val firProvider = (session.firProvider as FirProviderImpl) val firProvider = (session.firProvider as FirProviderImpl)
firFiles = if (useLightTree) { firFiles = when (parser) {
val builder = LightTree2Fir(session, firProvider.kotlinScopeProvider) FirParser.LightTree -> {
lightTreeFiles.map { val builder = LightTree2Fir(session, firProvider.kotlinScopeProvider)
builder.buildFirFile(it.lightTree, it.sourceFile, it.linesMapping).also { firFile -> lightTreeFiles.map {
firProvider.recordFile(firFile) builder.buildFirFile(it.lightTree, it.sourceFile, it.linesMapping).also { firFile ->
firProvider.recordFile(firFile)
}
} }
} }
} else { FirParser.Psi -> {
val builder = RawFirBuilder(session, firProvider.kotlinScopeProvider) val builder = RawFirBuilder(session, firProvider.kotlinScopeProvider)
ktFiles.map { ktFiles.map {
builder.buildFirFile(it).also { firFile -> builder.buildFirFile(it).also { firFile ->
firProvider.recordFile(firFile) firProvider.recordFile(firFile)
}
} }
} }
} }
@@ -10,11 +10,8 @@ import org.jetbrains.kotlin.generators.util.TestGeneratorUtil
import org.jetbrains.kotlin.test.TargetBackend import org.jetbrains.kotlin.test.TargetBackend
import org.jetbrains.kotlin.test.runners.* import org.jetbrains.kotlin.test.runners.*
import org.jetbrains.kotlin.test.runners.codegen.* import org.jetbrains.kotlin.test.runners.codegen.*
import org.jetbrains.kotlin.test.runners.ir.AbstractFir2IrTextTest import org.jetbrains.kotlin.test.runners.ir.*
import org.jetbrains.kotlin.test.runners.ir.AbstractIrTextTest import org.jetbrains.kotlin.test.runners.ir.interpreter.*
import org.jetbrains.kotlin.test.runners.ir.AbstractFirPsi2IrTextTest
import org.jetbrains.kotlin.test.runners.ir.interpreter.AbstractJvmIrInterpreterAfterFir2IrTest
import org.jetbrains.kotlin.test.runners.ir.interpreter.AbstractJvmIrInterpreterAfterPsi2IrTest
import org.jetbrains.kotlin.test.utils.CUSTOM_TEST_DATA_EXTENSION_PATTERN import org.jetbrains.kotlin.test.utils.CUSTOM_TEST_DATA_EXTENSION_PATTERN
import org.jetbrains.kotlin.visualizer.fir.AbstractFirVisualizerTest import org.jetbrains.kotlin.visualizer.fir.AbstractFirVisualizerTest
import org.jetbrains.kotlin.visualizer.psi.AbstractPsiVisualizerTest import org.jetbrains.kotlin.visualizer.psi.AbstractPsiVisualizerTest
@@ -179,7 +176,7 @@ fun generateJUnit5CompilerTests(args: Array<String>) {
model("codegen/asmLike") model("codegen/asmLike")
} }
testClass<AbstractJvmIrInterpreterAfterFir2IrTest> { testClass<AbstractJvmIrInterpreterAfterFirPsi2IrTest> {
model("ir/interpreter", excludeDirs = listOf("helpers")) model("ir/interpreter", excludeDirs = listOf("helpers"))
} }
@@ -191,57 +188,57 @@ fun generateJUnit5CompilerTests(args: Array<String>) {
// ---------------------------------------------- FIR tests ---------------------------------------------- // ---------------------------------------------- FIR tests ----------------------------------------------
testGroup(testsRoot = "compiler/fir/analysis-tests/tests-gen", testDataRoot = "compiler/testData") { testGroup(testsRoot = "compiler/fir/analysis-tests/tests-gen", testDataRoot = "compiler/testData") {
testClass<AbstractFirDiagnosticTest>(suiteTestClassName = "FirOldFrontendDiagnosticsTestGenerated") { testClass<AbstractFirPsiDiagnosticTest>(suiteTestClassName = "FirPsiOldFrontendDiagnosticsTestGenerated") {
model("diagnostics/tests", pattern = "^(.*)\\.kts?$", excludedPattern = excludedCustomTestdataPattern) model("diagnostics/tests", pattern = "^(.*)\\.kts?$", excludedPattern = excludedCustomTestdataPattern)
model("diagnostics/testsWithStdLib", excludedPattern = excludedCustomTestdataPattern) model("diagnostics/testsWithStdLib", excludedPattern = excludedCustomTestdataPattern)
} }
testClass<AbstractFirDiagnosticsWithLightTreeTest>( testClass<AbstractFirLightTreeDiagnosticsTest>(
suiteTestClassName = "FirOldFrontendDiagnosticsWithLightTreeTestGenerated" suiteTestClassName = "FirLightTreeOldFrontendDiagnosticsTestGenerated"
) { ) {
model("diagnostics/tests", excludedPattern = excludedCustomTestdataPattern) model("diagnostics/tests", excludedPattern = excludedCustomTestdataPattern)
model("diagnostics/testsWithStdLib", excludedPattern = excludedCustomTestdataPattern) model("diagnostics/testsWithStdLib", excludedPattern = excludedCustomTestdataPattern)
} }
testClass<AbstractFirForeignAnnotationsSourceJavaTest>( testClass<AbstractFirPsiForeignAnnotationsSourceJavaTest>(
suiteTestClassName = "FirOldFrontendForeignAnnotationsSourceJavaTestGenerated" suiteTestClassName = "FirPsiOldFrontendForeignAnnotationsSourceJavaTestGenerated"
) { ) {
model("diagnostics/foreignAnnotationsTests/tests", excludedPattern = excludedCustomTestdataPattern) model("diagnostics/foreignAnnotationsTests/tests", excludedPattern = excludedCustomTestdataPattern)
model("diagnostics/foreignAnnotationsTests/java8Tests", excludedPattern = excludedCustomTestdataPattern) model("diagnostics/foreignAnnotationsTests/java8Tests", excludedPattern = excludedCustomTestdataPattern)
model("diagnostics/foreignAnnotationsTests/java11Tests", excludedPattern = excludedCustomTestdataPattern) model("diagnostics/foreignAnnotationsTests/java11Tests", excludedPattern = excludedCustomTestdataPattern)
} }
testClass<AbstractFirForeignAnnotationsCompiledJavaTest>( testClass<AbstractFirPsiForeignAnnotationsCompiledJavaTest>(
suiteTestClassName = "FirOldFrontendForeignAnnotationsCompiledJavaTestGenerated" suiteTestClassName = "FirPsiOldFrontendForeignAnnotationsCompiledJavaTestGenerated"
) { ) {
model("diagnostics/foreignAnnotationsTests/tests", excludedPattern = excludedCustomTestdataPattern) model("diagnostics/foreignAnnotationsTests/tests", excludedPattern = excludedCustomTestdataPattern)
model("diagnostics/foreignAnnotationsTests/java8Tests", excludedPattern = excludedCustomTestdataPattern) model("diagnostics/foreignAnnotationsTests/java8Tests", excludedPattern = excludedCustomTestdataPattern)
model("diagnostics/foreignAnnotationsTests/java11Tests", excludedPattern = excludedCustomTestdataPattern) model("diagnostics/foreignAnnotationsTests/java11Tests", excludedPattern = excludedCustomTestdataPattern)
} }
testClass<AbstractFirForeignAnnotationsCompiledJavaWithPsiClassReadingTest>( testClass<AbstractFirPsiForeignAnnotationsCompiledJavaWithPsiClassReadingTest>(
suiteTestClassName = "FirOldFrontendForeignAnnotationsCompiledJavaWithPsiClassReadingTestGenerated" suiteTestClassName = "FirPsiOldFrontendForeignAnnotationsCompiledJavaWithPsiClassReadingTestGenerated"
) { ) {
model("diagnostics/foreignAnnotationsTests/tests", excludedPattern = excludedCustomTestdataPattern) model("diagnostics/foreignAnnotationsTests/tests", excludedPattern = excludedCustomTestdataPattern)
model("diagnostics/foreignAnnotationsTests/java8Tests", excludedPattern = excludedCustomTestdataPattern) model("diagnostics/foreignAnnotationsTests/java8Tests", excludedPattern = excludedCustomTestdataPattern)
model("diagnostics/foreignAnnotationsTests/java11Tests", excludedPattern = excludedCustomTestdataPattern) model("diagnostics/foreignAnnotationsTests/java11Tests", excludedPattern = excludedCustomTestdataPattern)
} }
testClass<AbstractFirNativeDiagnosticsTest>( testClass<AbstractFirPsiNativeDiagnosticsTest>(
suiteTestClassName = "FirOldFrontendNativeDiagnosticsTestGenerated" suiteTestClassName = "FirPsiOldFrontendNativeDiagnosticsTestGenerated"
) { ) {
model("diagnostics/nativeTests", excludedPattern = excludedCustomTestdataPattern) model("diagnostics/nativeTests", excludedPattern = excludedCustomTestdataPattern)
} }
testClass<AbstractFirNativeDiagnosticsWithLightTreeTest>( testClass<AbstractFirLightTreeNativeDiagnosticsTest>(
suiteTestClassName = "FirOldFrontendNativeDiagnosticsWithLightTreeTestGenerated" suiteTestClassName = "FirLightTreeOldFrontendNativeDiagnosticsTestGenerated"
) { ) {
model("diagnostics/nativeTests", excludedPattern = excludedCustomTestdataPattern) model("diagnostics/nativeTests", excludedPattern = excludedCustomTestdataPattern)
} }
} }
testGroup(testsRoot = "compiler/fir/fir2ir/tests-gen", testDataRoot = "compiler/testData") { testGroup(testsRoot = "compiler/fir/fir2ir/tests-gen", testDataRoot = "compiler/testData") {
testClass<AbstractFirBlackBoxCodegenTest> { testClass<AbstractFirLightTreeBlackBoxCodegenTest> {
model("codegen/box") model("codegen/box")
} }
@@ -249,7 +246,7 @@ fun generateJUnit5CompilerTests(args: Array<String>) {
model("codegen/box") model("codegen/box")
} }
testClass<AbstractFirBlackBoxCodegenTest>("FirBlackBoxModernJdkCodegenTestGenerated") { testClass<AbstractFirLightTreeBlackBoxCodegenTest>("FirLightTreeBlackBoxModernJdkCodegenTestGenerated") {
model("codegen/boxModernJdk") model("codegen/boxModernJdk")
} }
@@ -257,7 +254,7 @@ fun generateJUnit5CompilerTests(args: Array<String>) {
model("codegen/boxModernJdk") model("codegen/boxModernJdk")
} }
testClass<AbstractFirBlackBoxInlineCodegenTest> { testClass<AbstractFirLightTreeBlackBoxInlineCodegenTest> {
model("codegen/boxInline") model("codegen/boxInline")
} }
@@ -265,7 +262,7 @@ fun generateJUnit5CompilerTests(args: Array<String>) {
model("codegen/boxInline") model("codegen/boxInline")
} }
testClass<AbstractFirSteppingTest> { testClass<AbstractFirLightTreeSteppingTest> {
model("debug/stepping") model("debug/stepping")
} }
@@ -273,7 +270,7 @@ fun generateJUnit5CompilerTests(args: Array<String>) {
model("debug/stepping") model("debug/stepping")
} }
testClass<AbstractFirLocalVariableTest> { testClass<AbstractFirLightTreeLocalVariableTest> {
model("debug/localVariables") model("debug/localVariables")
} }
@@ -281,15 +278,15 @@ fun generateJUnit5CompilerTests(args: Array<String>) {
model("debug/localVariables") model("debug/localVariables")
} }
testClass<AbstractFirDiagnosticsTestWithJvmIrBackend> { testClass<AbstractFirPsiDiagnosticsTestWithJvmIrBackend> {
model("diagnostics/firTestWithJvmBackend") model("diagnostics/firTestWithJvmBackend")
} }
testClass<AbstractFirDiagnosticsTestWithJvmIrBackend>(suiteTestClassName = "FirOldDiagnosticsTestWithJvmIrBackendGenerated") { testClass<AbstractFirPsiDiagnosticsTestWithJvmIrBackend>(suiteTestClassName = "FirPsiOldDiagnosticsTestWithJvmIrBackendGenerated") {
model("diagnostics/testsWithJvmBackend", excludedPattern = excludedCustomTestdataPattern) model("diagnostics/testsWithJvmBackend", excludedPattern = excludedCustomTestdataPattern)
} }
testClass<AbstractFirSerializeCompileKotlinAgainstInlineKotlinTest> { testClass<AbstractFirLightTreeSerializeCompileKotlinAgainstInlineKotlinTest> {
model("codegen/boxInline") model("codegen/boxInline")
} }
@@ -299,8 +296,8 @@ fun generateJUnit5CompilerTests(args: Array<String>) {
} }
testGroup(testsRoot = "compiler/fir/fir2ir/tests-gen", testDataRoot = "compiler/fir/fir2ir/testData") { testGroup(testsRoot = "compiler/fir/fir2ir/tests-gen", testDataRoot = "compiler/fir/fir2ir/testData") {
testClass<AbstractFirBlackBoxCodegenTest>( testClass<AbstractFirLightTreeBlackBoxCodegenTest>(
suiteTestClassName = "FirSpecificBlackBoxCodegenTestGenerated" suiteTestClassName = "FirLightTreeSpecificBlackBoxCodegenTestGenerated"
) { ) {
model("codegen/box") model("codegen/box")
model("codegen/boxWithStdLib") model("codegen/boxWithStdLib")
@@ -313,53 +310,53 @@ fun generateJUnit5CompilerTests(args: Array<String>) {
model("codegen/boxWithStdLib") model("codegen/boxWithStdLib")
} }
testClass<AbstractFir2IrTextTest>( testClass<AbstractFirLightTreeIrTextTest>(
suiteTestClassName = "Fir2IrSpecificTextTestGenerated" suiteTestClassName = "FirLightTreeIrSpecificTextTestGenerated"
) { ) {
model("ir/irText") model("ir/irText")
} }
testClass<AbstractFirPsi2IrTextTest>( testClass<AbstractFirPsiIrTextTest>(
suiteTestClassName = "LightTreeFir2IrSpecificTextTestGenerated" suiteTestClassName = "FirPsiIrSpecificTextTestGenerated"
) { ) {
model("ir/irText") model("ir/irText")
} }
testClass<AbstractFirBytecodeListingTest>( testClass<AbstractFirLightTreeBytecodeListingTest>(
suiteTestClassName = "Fir2IrSpecificBytecodeListingTestGenerated" suiteTestClassName = "FirLightTreeSpecificBytecodeListingTestGenerated"
) { ) {
model("codegen/bytecodeListing") model("codegen/bytecodeListing")
} }
testClass<AbstractFirPsiBytecodeListingTest>( testClass<AbstractFirPsiBytecodeListingTest>(
suiteTestClassName = "Fir2IrSpecificBytecodeListingPsiTestGenerated" suiteTestClassName = "FirPsiSpecificBytecodeListingTestGenerated"
) { ) {
model("codegen/bytecodeListing") model("codegen/bytecodeListing")
} }
} }
testGroup("compiler/fir/analysis-tests/tests-gen", "compiler/fir/analysis-tests/testData") { testGroup("compiler/fir/analysis-tests/tests-gen", "compiler/fir/analysis-tests/testData") {
testClass<AbstractFirDiagnosticTest> { testClass<AbstractFirPsiDiagnosticTest> {
model("resolve", pattern = TestGeneratorUtil.KT_WITHOUT_DOTS_IN_NAME) model("resolve", pattern = TestGeneratorUtil.KT_WITHOUT_DOTS_IN_NAME)
model("resolveWithStdlib", pattern = TestGeneratorUtil.KT_WITHOUT_DOTS_IN_NAME) model("resolveWithStdlib", pattern = TestGeneratorUtil.KT_WITHOUT_DOTS_IN_NAME)
} }
testClass<AbstractFirDiagnosticsWithLightTreeTest> { testClass<AbstractFirLightTreeDiagnosticsTest> {
model("resolve", pattern = TestGeneratorUtil.KT_WITHOUT_DOTS_IN_NAME) model("resolve", pattern = TestGeneratorUtil.KT_WITHOUT_DOTS_IN_NAME)
model("resolveWithStdlib", pattern = TestGeneratorUtil.KT_WITHOUT_DOTS_IN_NAME) model("resolveWithStdlib", pattern = TestGeneratorUtil.KT_WITHOUT_DOTS_IN_NAME)
} }
} }
testGroup(testsRoot = "compiler/fir/fir2ir/tests-gen", testDataRoot = "compiler/testData") { testGroup(testsRoot = "compiler/fir/fir2ir/tests-gen", testDataRoot = "compiler/testData") {
testClass<AbstractFir2IrTextTest> { testClass<AbstractFirLightTreeIrTextTest> {
model("ir/irText") model("ir/irText")
} }
testClass<AbstractFirPsi2IrTextTest> { testClass<AbstractFirPsiIrTextTest> {
model("ir/irText") model("ir/irText")
} }
testClass<AbstractFirBytecodeTextTest> { testClass<AbstractFirLightTreeBytecodeTextTest> {
model("codegen/bytecodeText") model("codegen/bytecodeText")
} }
@@ -1,5 +1,5 @@
/* /*
* Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors. * 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. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/ */
@@ -1,5 +1,5 @@
/* /*
* Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors. * 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. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/ */
@@ -1,5 +1,5 @@
/* /*
* Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors. * 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. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/ */
@@ -15,7 +15,7 @@ import org.jetbrains.kotlin.spec.utils.GeneralConfiguration.SPEC_TEST_PATH
import org.jetbrains.kotlin.spec.utils.GeneralConfiguration.TESTS_MAP_FILENAME import org.jetbrains.kotlin.spec.utils.GeneralConfiguration.TESTS_MAP_FILENAME
import org.jetbrains.kotlin.spec.utils.SectionsJsonMapGenerator import org.jetbrains.kotlin.spec.utils.SectionsJsonMapGenerator
import org.jetbrains.kotlin.spec.utils.TestsJsonMapGenerator import org.jetbrains.kotlin.spec.utils.TestsJsonMapGenerator
import org.jetbrains.kotlin.test.runners.AbstractFirDiagnosticTestSpec import org.jetbrains.kotlin.test.runners.AbstractFirPsiDiagnosticTestSpec
import org.jetbrains.kotlin.test.utils.CUSTOM_TEST_DATA_EXTENSION_PATTERN import org.jetbrains.kotlin.test.utils.CUSTOM_TEST_DATA_EXTENSION_PATTERN
import java.io.File import java.io.File
import java.nio.file.Files import java.nio.file.Files
@@ -65,7 +65,7 @@ fun generateTests() {
generateTestGroupSuiteWithJUnit5 { generateTestGroupSuiteWithJUnit5 {
testGroup(testsRoot = "compiler/fir/analysis-tests/tests-gen", testDataRoot = SPEC_TESTDATA_PATH) { testGroup(testsRoot = "compiler/fir/analysis-tests/tests-gen", testDataRoot = SPEC_TESTDATA_PATH) {
testClass<AbstractFirDiagnosticTestSpec> { testClass<AbstractFirPsiDiagnosticTestSpec> {
model( model(
"diagnostics", "diagnostics",
excludeDirs = listOf("helpers") + detectDirsWithTestsMapFileOnly("diagnostics"), excludeDirs = listOf("helpers") + detectDirsWithTestsMapFileOnly("diagnostics"),
@@ -14,12 +14,12 @@ import org.jetbrains.kotlin.android.synthetic.test.AbstractAndroidBoxTest
import org.jetbrains.kotlin.android.synthetic.test.AbstractAndroidBytecodeShapeTest import org.jetbrains.kotlin.android.synthetic.test.AbstractAndroidBytecodeShapeTest
import org.jetbrains.kotlin.android.synthetic.test.AbstractAndroidIrBoxTest import org.jetbrains.kotlin.android.synthetic.test.AbstractAndroidIrBoxTest
import org.jetbrains.kotlin.android.synthetic.test.AbstractAndroidSyntheticPropertyDescriptorTest import org.jetbrains.kotlin.android.synthetic.test.AbstractAndroidSyntheticPropertyDescriptorTest
import org.jetbrains.kotlin.assignment.plugin.AbstractFirBlackBoxCodegenTestForAssignmentPlugin
import org.jetbrains.kotlin.assignment.plugin.AbstractFirAssignmentPluginDiagnosticTest
import org.jetbrains.kotlin.assignment.plugin.AbstractIrBlackBoxCodegenTestAssignmentPlugin import org.jetbrains.kotlin.assignment.plugin.AbstractIrBlackBoxCodegenTestAssignmentPlugin
import org.jetbrains.kotlin.assignment.plugin.AbstractAssignmentPluginDiagnosticTest import org.jetbrains.kotlin.assignment.plugin.AbstractAssignmentPluginDiagnosticTest
import org.jetbrains.kotlin.fir.plugin.runners.AbstractFirPluginBlackBoxCodegenTest import org.jetbrains.kotlin.assignment.plugin.AbstractFirLightTreeBlackBoxCodegenTestForAssignmentPlugin
import org.jetbrains.kotlin.fir.plugin.runners.AbstractFirPluginDiagnosticTest import org.jetbrains.kotlin.assignment.plugin.AbstractFirPsiAssignmentPluginDiagnosticTest
import org.jetbrains.kotlin.fir.plugin.runners.AbstractFirLightTreePluginBlackBoxCodegenTest
import org.jetbrains.kotlin.fir.plugin.runners.AbstractFirPsiPluginDiagnosticTest
import org.jetbrains.kotlin.generators.generateTestGroupSuiteWithJUnit5 import org.jetbrains.kotlin.generators.generateTestGroupSuiteWithJUnit5
import org.jetbrains.kotlin.generators.impl.generateTestGroupSuite import org.jetbrains.kotlin.generators.impl.generateTestGroupSuite
import org.jetbrains.kotlin.generators.model.annotation import org.jetbrains.kotlin.generators.model.annotation
@@ -226,7 +226,7 @@ fun main(args: Array<String>) {
model("box") model("box")
} }
testClass<AbstractParcelizeFirBoxTest> { testClass<AbstractParcelizeFirLightTreeBoxTest> {
model("box") model("box")
} }
@@ -242,17 +242,17 @@ fun main(args: Array<String>) {
model("diagnostics", excludedPattern = excludedFirTestdataPattern) model("diagnostics", excludedPattern = excludedFirTestdataPattern)
} }
testClass<AbstractFirParcelizeDiagnosticTest> { testClass<AbstractFirPsiParcelizeDiagnosticTest> {
model("diagnostics", excludedPattern = excludedFirTestdataPattern) model("diagnostics", excludedPattern = excludedFirTestdataPattern)
} }
} }
testGroup("plugins/fir-plugin-prototype/tests-gen", "plugins/fir-plugin-prototype/testData") { testGroup("plugins/fir-plugin-prototype/tests-gen", "plugins/fir-plugin-prototype/testData") {
testClass<AbstractFirPluginDiagnosticTest> { testClass<AbstractFirPsiPluginDiagnosticTest> {
model("diagnostics") model("diagnostics")
} }
testClass<AbstractFirPluginBlackBoxCodegenTest> { testClass<AbstractFirLightTreePluginBlackBoxCodegenTest> {
model("box") model("box")
} }
} }
@@ -284,13 +284,13 @@ fun main(args: Array<String>) {
testClass<AbstractIrBytecodeListingTestForAllOpen> { testClass<AbstractIrBytecodeListingTestForAllOpen> {
model("bytecodeListing", excludedPattern = excludedFirTestdataPattern) model("bytecodeListing", excludedPattern = excludedFirTestdataPattern)
} }
testClass<AbstractFirBytecodeListingTestForAllOpen> { testClass<AbstractFirPsiBytecodeListingTestForAllOpen> {
model("bytecodeListing", excludedPattern = excludedFirTestdataPattern) model("bytecodeListing", excludedPattern = excludedFirTestdataPattern)
} }
testClass<AbstractFirDiagnosticTestForAllOpen>() { testClass<AbstractFirLightTreeDiagnosticTestForAllOpen> {
model("diagnostics", excludedPattern = excludedFirTestdataPattern) model("diagnostics", excludedPattern = excludedFirTestdataPattern)
} }
testClass<AbstractFirDiagnosticsWithLightTreeTestForAllOpen>() { testClass<AbstractFirPsiDiagnosticTestForAllOpen> {
model("diagnostics", excludedPattern = excludedFirTestdataPattern) model("diagnostics", excludedPattern = excludedFirTestdataPattern)
} }
} }
@@ -299,7 +299,7 @@ fun main(args: Array<String>) {
testClass<AbstractDiagnosticsTestForNoArg> { testClass<AbstractDiagnosticsTestForNoArg> {
model("diagnostics", excludedPattern = excludedFirTestdataPattern) model("diagnostics", excludedPattern = excludedFirTestdataPattern)
} }
testClass<AbstractFirDiagnosticsTestForNoArg> { testClass<AbstractFirPsiDiagnosticsTestForNoArg> {
model("diagnostics", excludedPattern = excludedFirTestdataPattern) model("diagnostics", excludedPattern = excludedFirTestdataPattern)
} }
testClass<AbstractBytecodeListingTestForNoArg> { testClass<AbstractBytecodeListingTestForNoArg> {
@@ -308,7 +308,7 @@ fun main(args: Array<String>) {
testClass<AbstractIrBytecodeListingTestForNoArg> { testClass<AbstractIrBytecodeListingTestForNoArg> {
model("bytecodeListing", excludedPattern = excludedFirTestdataPattern) model("bytecodeListing", excludedPattern = excludedFirTestdataPattern)
} }
testClass<AbstractFirBytecodeListingTestForNoArg> { testClass<AbstractFirLightTreeBytecodeListingTestForNoArg> {
model("bytecodeListing", excludedPattern = excludedFirTestdataPattern) model("bytecodeListing", excludedPattern = excludedFirTestdataPattern)
} }
testClass<AbstractBlackBoxCodegenTestForNoArg> { testClass<AbstractBlackBoxCodegenTestForNoArg> {
@@ -317,7 +317,7 @@ fun main(args: Array<String>) {
testClass<AbstractIrBlackBoxCodegenTestForNoArg> { testClass<AbstractIrBlackBoxCodegenTestForNoArg> {
model("box") model("box")
} }
testClass<AbstractFirBlackBoxCodegenTestForNoArg> { testClass<AbstractFirLightTreeBlackBoxCodegenTestForNoArg> {
model("box") model("box")
} }
} }
@@ -329,13 +329,13 @@ fun main(args: Array<String>) {
testClass<AbstractIrBlackBoxCodegenTestForLombok> { testClass<AbstractIrBlackBoxCodegenTestForLombok> {
model("box") model("box")
} }
testClass<AbstractFirBlackBoxCodegenTestForLombok> { testClass<AbstractFirLightTreeBlackBoxCodegenTestForLombok> {
model("box") model("box")
} }
testClass<AbstractDiagnosticTestForLombok> { testClass<AbstractDiagnosticTestForLombok> {
model("diagnostics", excludedPattern = excludedFirTestdataPattern) model("diagnostics", excludedPattern = excludedFirTestdataPattern)
} }
testClass<AbstractFirDiagnosticTestForLombok> { testClass<AbstractFirPsiDiagnosticTestForLombok> {
model("diagnostics", excludedPattern = excludedFirTestdataPattern) model("diagnostics", excludedPattern = excludedFirTestdataPattern)
} }
} }
@@ -344,13 +344,13 @@ fun main(args: Array<String>) {
testClass<AbstractSamWithReceiverTest> { testClass<AbstractSamWithReceiverTest> {
model("diagnostics", excludedPattern = excludedFirTestdataPattern) model("diagnostics", excludedPattern = excludedFirTestdataPattern)
} }
testClass<AbstractFirSamWithReceiverTest> { testClass<AbstractFirPsiSamWithReceiverDiagnosticTest> {
model("diagnostics", excludedPattern = excludedFirTestdataPattern) model("diagnostics", excludedPattern = excludedFirTestdataPattern)
} }
testClass<AbstractIrBlackBoxCodegenTestForSamWithReceiver> { testClass<AbstractIrBlackBoxCodegenTestForSamWithReceiver> {
model("codegen", excludedPattern = excludedFirTestdataPattern) model("codegen", excludedPattern = excludedFirTestdataPattern)
} }
testClass<AbstractFirBlackBoxCodegenTestForSamWithReceiver> { testClass<AbstractFirLightTreeBlackBoxCodegenTestForSamWithReceiver> {
model("codegen", excludedPattern = excludedFirTestdataPattern) model("codegen", excludedPattern = excludedFirTestdataPattern)
} }
} }
@@ -388,13 +388,13 @@ fun main(args: Array<String>) {
testClass<AbstractAssignmentPluginDiagnosticTest> { testClass<AbstractAssignmentPluginDiagnosticTest> {
model("diagnostics", excludedPattern = excludedFirTestdataPattern) model("diagnostics", excludedPattern = excludedFirTestdataPattern)
} }
testClass<AbstractFirAssignmentPluginDiagnosticTest> { testClass<AbstractFirPsiAssignmentPluginDiagnosticTest> {
model("diagnostics", excludedPattern = excludedFirTestdataPattern) model("diagnostics", excludedPattern = excludedFirTestdataPattern)
} }
testClass<AbstractIrBlackBoxCodegenTestAssignmentPlugin> { testClass<AbstractIrBlackBoxCodegenTestAssignmentPlugin> {
model("codegen", excludedPattern = excludedFirTestdataPattern) model("codegen", excludedPattern = excludedFirTestdataPattern)
} }
testClass<AbstractFirBlackBoxCodegenTestForAssignmentPlugin> { testClass<AbstractFirLightTreeBlackBoxCodegenTestForAssignmentPlugin> {
model("codegen", excludedPattern = excludedFirTestdataPattern) model("codegen", excludedPattern = excludedFirTestdataPattern)
} }
} }
@@ -15,7 +15,7 @@ import org.jetbrains.kotlin.js.test.ir.*
import org.jetbrains.kotlin.js.testOld.AbstractDceTest import org.jetbrains.kotlin.js.testOld.AbstractDceTest
import org.jetbrains.kotlin.js.testOld.compatibility.binary.AbstractJsKlibBinaryCompatibilityTest import org.jetbrains.kotlin.js.testOld.compatibility.binary.AbstractJsKlibBinaryCompatibilityTest
import org.jetbrains.kotlin.test.TargetBackend import org.jetbrains.kotlin.test.TargetBackend
import org.jetbrains.kotlin.test.runners.ir.AbstractFir2IrJsTextTest import org.jetbrains.kotlin.test.runners.ir.AbstractFirLightTreeIrJsTextTest
fun main(args: Array<String>) { fun main(args: Array<String>) {
System.setProperty("java.awt.headless", "true") System.setProperty("java.awt.headless", "true")
@@ -170,12 +170,12 @@ fun main(args: Array<String>) {
model("debug/localVariables") model("debug/localVariables")
} }
testClass<AbstractFirJsDiagnosticTest>(suiteTestClassName = "FirJsOldFrontendDiagnosticsTestGenerated") { testClass<AbstractFirPsiJsDiagnosticTest>(suiteTestClassName = "FirPsiJsOldFrontendDiagnosticsTestGenerated") {
model("diagnostics/testsWithJsStdLib", pattern = "^([^_](.+))\\.kt$", excludedPattern = excludedFirTestdataPattern) model("diagnostics/testsWithJsStdLib", pattern = "^([^_](.+))\\.kt$", excludedPattern = excludedFirTestdataPattern)
} }
testClass<AbstractFir2IrJsTextTest>( testClass<AbstractFirLightTreeIrJsTextTest>(
suiteTestClassName = "Fir2IrJsTextTestGenerated" suiteTestClassName = "FirLightTreeJsIrTextTestGenerated"
) { ) {
model("ir/irJsText") model("ir/irJsText")
} }
@@ -7,10 +7,12 @@ package org.jetbrains.kotlin.js.test.fir
import org.jetbrains.kotlin.js.test.JsAdditionalSourceProvider import org.jetbrains.kotlin.js.test.JsAdditionalSourceProvider
import org.jetbrains.kotlin.platform.js.JsPlatforms import org.jetbrains.kotlin.platform.js.JsPlatforms
import org.jetbrains.kotlin.test.FirParser
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
import org.jetbrains.kotlin.test.builders.firHandlersStep import org.jetbrains.kotlin.test.builders.firHandlersStep
import org.jetbrains.kotlin.test.directives.ConfigurationDirectives import org.jetbrains.kotlin.test.directives.ConfigurationDirectives
import org.jetbrains.kotlin.test.directives.DiagnosticsDirectives import org.jetbrains.kotlin.test.directives.DiagnosticsDirectives
import org.jetbrains.kotlin.test.directives.configureFirParser
import org.jetbrains.kotlin.test.frontend.fir.FirFrontendFacade import org.jetbrains.kotlin.test.frontend.fir.FirFrontendFacade
import org.jetbrains.kotlin.test.frontend.fir.handlers.* import org.jetbrains.kotlin.test.frontend.fir.handlers.*
import org.jetbrains.kotlin.test.model.DependencyKind import org.jetbrains.kotlin.test.model.DependencyKind
@@ -22,7 +24,7 @@ import org.jetbrains.kotlin.test.services.configuration.CommonEnvironmentConfigu
import org.jetbrains.kotlin.test.services.configuration.JsEnvironmentConfigurator import org.jetbrains.kotlin.test.services.configuration.JsEnvironmentConfigurator
import org.jetbrains.kotlin.test.services.sourceProviders.CoroutineHelpersSourceFilesProvider import org.jetbrains.kotlin.test.services.sourceProviders.CoroutineHelpersSourceFilesProvider
abstract class AbstractFirJsDiagnosticTest : AbstractKotlinCompilerTest() { abstract class AbstractFirJsDiagnosticTestBase(val parser: FirParser) : AbstractKotlinCompilerTest() {
override fun TestConfigurationBuilder.configuration() { override fun TestConfigurationBuilder.configuration() {
globalDefaults { globalDefaults {
frontend = FrontendKinds.FIR frontend = FrontendKinds.FIR
@@ -35,6 +37,8 @@ abstract class AbstractFirJsDiagnosticTest : AbstractKotlinCompilerTest() {
DiagnosticsDirectives.DIAGNOSTICS with listOf("-warnings", "-infos") DiagnosticsDirectives.DIAGNOSTICS with listOf("-warnings", "-infos")
} }
configureFirParser(parser)
enableMetaInfoHandler() enableMetaInfoHandler()
configurationForClassicAndFirTestsAlongside() configurationForClassicAndFirTestsAlongside()
@@ -64,3 +68,5 @@ abstract class AbstractFirJsDiagnosticTest : AbstractKotlinCompilerTest() {
} }
} }
} }
abstract class AbstractFirPsiJsDiagnosticTest : AbstractFirJsDiagnosticTestBase(FirParser.Psi)
@@ -7,10 +7,12 @@ import org.jetbrains.kotlin.js.test.converters.incremental.RecompileModuleJsIrBa
import org.jetbrains.kotlin.js.test.handlers.JsIrRecompiledArtifactsIdentityHandler import org.jetbrains.kotlin.js.test.handlers.JsIrRecompiledArtifactsIdentityHandler
import org.jetbrains.kotlin.parsing.parseBoolean import org.jetbrains.kotlin.parsing.parseBoolean
import org.jetbrains.kotlin.test.Constructor import org.jetbrains.kotlin.test.Constructor
import org.jetbrains.kotlin.test.FirParser
import org.jetbrains.kotlin.test.TargetBackend import org.jetbrains.kotlin.test.TargetBackend
import org.jetbrains.kotlin.test.backend.ir.IrBackendInput import org.jetbrains.kotlin.test.backend.ir.IrBackendInput
import org.jetbrains.kotlin.test.builders.* import org.jetbrains.kotlin.test.builders.*
import org.jetbrains.kotlin.test.directives.DiagnosticsDirectives import org.jetbrains.kotlin.test.directives.DiagnosticsDirectives
import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives
import org.jetbrains.kotlin.test.directives.JsEnvironmentConfigurationDirectives import org.jetbrains.kotlin.test.directives.JsEnvironmentConfigurationDirectives
import org.jetbrains.kotlin.test.directives.LanguageSettingsDirectives import org.jetbrains.kotlin.test.directives.LanguageSettingsDirectives
import org.jetbrains.kotlin.test.frontend.fir.Fir2IrJsResultsConverter import org.jetbrains.kotlin.test.frontend.fir.Fir2IrJsResultsConverter
@@ -59,6 +61,7 @@ open class AbstractFirJsTest(
+LanguageSettingsDirectives.ALLOW_KOTLIN_PACKAGE +LanguageSettingsDirectives.ALLOW_KOTLIN_PACKAGE
-JsEnvironmentConfigurationDirectives.GENERATE_NODE_JS_RUNNER -JsEnvironmentConfigurationDirectives.GENERATE_NODE_JS_RUNNER
DiagnosticsDirectives.DIAGNOSTICS with listOf("-infos") DiagnosticsDirectives.DIAGNOSTICS with listOf("-infos")
FirDiagnosticsDirectives.FIR_PARSER with FirParser.Psi
} }
firHandlersStep { firHandlersStep {
@@ -19,7 +19,7 @@ import java.util.regex.Pattern;
@SuppressWarnings("all") @SuppressWarnings("all")
@TestMetadata("compiler/testData/diagnostics/testsWithJsStdLib") @TestMetadata("compiler/testData/diagnostics/testsWithJsStdLib")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
public class FirJsOldFrontendDiagnosticsTestGenerated extends AbstractFirJsDiagnosticTest { public class FirPsiJsOldFrontendDiagnosticsTestGenerated extends AbstractFirPsiJsDiagnosticTest {
@Test @Test
public void testAllFilesPresentInTestsWithJsStdLib() throws Exception { public void testAllFilesPresentInTestsWithJsStdLib() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/testsWithJsStdLib"), Pattern.compile("^([^_](.+))\\.kt$"), Pattern.compile("^(.+)\\.fir\\.kts?$"), true); KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/testsWithJsStdLib"), Pattern.compile("^([^_](.+))\\.kt$"), Pattern.compile("^(.+)\\.fir\\.kts?$"), true);
@@ -19,7 +19,7 @@ import java.util.regex.Pattern;
@SuppressWarnings("all") @SuppressWarnings("all")
@TestMetadata("compiler/testData/ir/irJsText") @TestMetadata("compiler/testData/ir/irJsText")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
public class Fir2IrJsTextTestGenerated extends AbstractFir2IrJsTextTest { public class FirLightTreeJsIrTextTestGenerated extends AbstractFirLightTreeIrJsTextTest {
@Test @Test
public void testAllFilesPresentInIrJsText() throws Exception { public void testAllFilesPresentInIrJsText() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/ir/irJsText"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true); KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/ir/irJsText"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
@@ -17,12 +17,14 @@
package org.jetbrains.kotlin.allopen package org.jetbrains.kotlin.allopen
import org.jetbrains.kotlin.test.Constructor import org.jetbrains.kotlin.test.Constructor
import org.jetbrains.kotlin.test.FirParser
import org.jetbrains.kotlin.test.TargetBackend import org.jetbrains.kotlin.test.TargetBackend
import org.jetbrains.kotlin.test.backend.classic.ClassicBackendInput import org.jetbrains.kotlin.test.backend.classic.ClassicBackendInput
import org.jetbrains.kotlin.test.backend.classic.ClassicJvmBackendFacade import org.jetbrains.kotlin.test.backend.classic.ClassicJvmBackendFacade
import org.jetbrains.kotlin.test.backend.ir.IrBackendInput import org.jetbrains.kotlin.test.backend.ir.IrBackendInput
import org.jetbrains.kotlin.test.backend.ir.JvmIrBackendFacade import org.jetbrains.kotlin.test.backend.ir.JvmIrBackendFacade
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
import org.jetbrains.kotlin.test.directives.configureFirParser
import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontend2ClassicBackendConverter import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontend2ClassicBackendConverter
import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontend2IrConverter import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontend2IrConverter
import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontendFacade import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontendFacade
@@ -69,7 +71,7 @@ open class AbstractIrBytecodeListingTestForAllOpen :
get() = ::JvmIrBackendFacade get() = ::JvmIrBackendFacade
} }
open class AbstractFirBytecodeListingTestForAllOpen : open class AbstractFirPsiBytecodeListingTestForAllOpen :
AbstractBytecodeListingTestForAllOpenBase<FirOutputArtifact, IrBackendInput>( AbstractBytecodeListingTestForAllOpenBase<FirOutputArtifact, IrBackendInput>(
TargetBackend.JVM_IR, FrontendKinds.FIR TargetBackend.JVM_IR, FrontendKinds.FIR
) { ) {
@@ -79,4 +81,9 @@ open class AbstractFirBytecodeListingTestForAllOpen :
get() = ::Fir2IrResultsConverter get() = ::Fir2IrResultsConverter
override val backendFacade: Constructor<BackendFacade<IrBackendInput, BinaryArtifacts.Jvm>> override val backendFacade: Constructor<BackendFacade<IrBackendInput, BinaryArtifacts.Jvm>>
get() = ::JvmIrBackendFacade get() = ::JvmIrBackendFacade
override fun configure(builder: TestConfigurationBuilder) {
super.configure(builder)
builder.configureFirParser(FirParser.Psi)
}
} }
@@ -17,11 +17,11 @@
package org.jetbrains.kotlin.allopen package org.jetbrains.kotlin.allopen
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives import org.jetbrains.kotlin.test.FirParser
import org.jetbrains.kotlin.test.runners.AbstractFirDiagnosticTest import org.jetbrains.kotlin.test.runners.AbstractFirDiagnosticTestBase
import org.jetbrains.kotlin.test.runners.configurationForClassicAndFirTestsAlongside import org.jetbrains.kotlin.test.runners.configurationForClassicAndFirTestsAlongside
abstract class AbstractFirDiagnosticTestForAllOpen : AbstractFirDiagnosticTest() { abstract class AbstractFirDiagnosticTestForAllOpenBase(parser: FirParser) : AbstractFirDiagnosticTestBase(parser) {
override fun configure(builder: TestConfigurationBuilder) { override fun configure(builder: TestConfigurationBuilder) {
super.configure(builder) super.configure(builder)
@@ -32,14 +32,5 @@ abstract class AbstractFirDiagnosticTestForAllOpen : AbstractFirDiagnosticTest()
} }
} }
abstract class AbstractFirDiagnosticsWithLightTreeTestForAllOpen : AbstractFirDiagnosticTestForAllOpen() { abstract class AbstractFirPsiDiagnosticTestForAllOpen : AbstractFirDiagnosticTestForAllOpenBase(FirParser.Psi)
override fun configure(builder: TestConfigurationBuilder) { abstract class AbstractFirLightTreeDiagnosticTestForAllOpen : AbstractFirDiagnosticTestForAllOpenBase(FirParser.LightTree)
super.configure(builder)
with(builder) {
defaultDirectives {
+FirDiagnosticsDirectives.USE_LIGHT_TREE
}
}
}
}
@@ -18,7 +18,7 @@ import java.util.regex.Pattern;
@SuppressWarnings("all") @SuppressWarnings("all")
@TestMetadata("plugins/allopen/testData/diagnostics") @TestMetadata("plugins/allopen/testData/diagnostics")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
public class FirDiagnosticsWithLightTreeTestForAllOpenGenerated extends AbstractFirDiagnosticsWithLightTreeTestForAllOpen { public class FirLightTreeDiagnosticTestForAllOpenGenerated extends AbstractFirLightTreeDiagnosticTestForAllOpen {
@Test @Test
public void testAllFilesPresentInDiagnostics() throws Exception { public void testAllFilesPresentInDiagnostics() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("plugins/allopen/testData/diagnostics"), Pattern.compile("^(.+)\\.kt$"), Pattern.compile("^(.+)\\.fir\\.kts?$"), true); KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("plugins/allopen/testData/diagnostics"), Pattern.compile("^(.+)\\.kt$"), Pattern.compile("^(.+)\\.fir\\.kts?$"), true);
@@ -19,7 +19,7 @@ import java.util.regex.Pattern;
@SuppressWarnings("all") @SuppressWarnings("all")
@TestMetadata("plugins/allopen/testData/bytecodeListing") @TestMetadata("plugins/allopen/testData/bytecodeListing")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
public class FirBytecodeListingTestForAllOpenGenerated extends AbstractFirBytecodeListingTestForAllOpen { public class FirPsiBytecodeListingTestForAllOpenGenerated extends AbstractFirPsiBytecodeListingTestForAllOpen {
@Test @Test
public void testAllFilesPresentInBytecodeListing() throws Exception { public void testAllFilesPresentInBytecodeListing() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("plugins/allopen/testData/bytecodeListing"), Pattern.compile("^(.+)\\.kt$"), Pattern.compile("^(.+)\\.fir\\.kts?$"), TargetBackend.JVM_IR, true); KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("plugins/allopen/testData/bytecodeListing"), Pattern.compile("^(.+)\\.kt$"), Pattern.compile("^(.+)\\.fir\\.kts?$"), TargetBackend.JVM_IR, true);
@@ -18,7 +18,7 @@ import java.util.regex.Pattern;
@SuppressWarnings("all") @SuppressWarnings("all")
@TestMetadata("plugins/allopen/testData/diagnostics") @TestMetadata("plugins/allopen/testData/diagnostics")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
public class FirDiagnosticTestForAllOpenGenerated extends AbstractFirDiagnosticTestForAllOpen { public class FirPsiDiagnosticTestForAllOpenGenerated extends AbstractFirPsiDiagnosticTestForAllOpen {
@Test @Test
public void testAllFilesPresentInDiagnostics() throws Exception { public void testAllFilesPresentInDiagnostics() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("plugins/allopen/testData/diagnostics"), Pattern.compile("^(.+)\\.kt$"), Pattern.compile("^(.+)\\.fir\\.kts?$"), true); KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("plugins/allopen/testData/diagnostics"), Pattern.compile("^(.+)\\.kt$"), Pattern.compile("^(.+)\\.fir\\.kts?$"), true);
@@ -16,8 +16,8 @@ import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
import org.jetbrains.kotlin.test.directives.DiagnosticsDirectives.RENDER_DIAGNOSTICS_FULL_TEXT import org.jetbrains.kotlin.test.directives.DiagnosticsDirectives.RENDER_DIAGNOSTICS_FULL_TEXT
import org.jetbrains.kotlin.test.model.TestModule import org.jetbrains.kotlin.test.model.TestModule
import org.jetbrains.kotlin.test.runners.AbstractDiagnosticTest import org.jetbrains.kotlin.test.runners.AbstractDiagnosticTest
import org.jetbrains.kotlin.test.runners.AbstractFirDiagnosticTest import org.jetbrains.kotlin.test.runners.AbstractFirPsiDiagnosticTest
import org.jetbrains.kotlin.test.runners.codegen.AbstractFirBlackBoxCodegenTest import org.jetbrains.kotlin.test.runners.codegen.AbstractFirLightTreeBlackBoxCodegenTest
import org.jetbrains.kotlin.test.runners.codegen.AbstractIrBlackBoxCodegenTest import org.jetbrains.kotlin.test.runners.codegen.AbstractIrBlackBoxCodegenTest
import org.jetbrains.kotlin.test.runners.configurationForClassicAndFirTestsAlongside import org.jetbrains.kotlin.test.runners.configurationForClassicAndFirTestsAlongside
import org.jetbrains.kotlin.test.services.EnvironmentConfigurator import org.jetbrains.kotlin.test.services.EnvironmentConfigurator
@@ -33,7 +33,7 @@ abstract class AbstractAssignmentPluginDiagnosticTest : AbstractDiagnosticTest()
} }
} }
abstract class AbstractFirAssignmentPluginDiagnosticTest : AbstractFirDiagnosticTest() { abstract class AbstractFirPsiAssignmentPluginDiagnosticTest : AbstractFirPsiDiagnosticTest() {
override fun configure(builder: TestConfigurationBuilder) { override fun configure(builder: TestConfigurationBuilder) {
super.configure(builder) super.configure(builder)
builder.configurePlugin() builder.configurePlugin()
@@ -51,7 +51,7 @@ open class AbstractIrBlackBoxCodegenTestAssignmentPlugin : AbstractIrBlackBoxCod
} }
} }
open class AbstractFirBlackBoxCodegenTestForAssignmentPlugin : AbstractFirBlackBoxCodegenTest() { open class AbstractFirLightTreeBlackBoxCodegenTestForAssignmentPlugin : AbstractFirLightTreeBlackBoxCodegenTest() {
override fun configure(builder: TestConfigurationBuilder) { override fun configure(builder: TestConfigurationBuilder) {
super.configure(builder) super.configure(builder)
builder.configurePlugin() builder.configurePlugin()
@@ -19,7 +19,7 @@ import java.util.regex.Pattern;
@SuppressWarnings("all") @SuppressWarnings("all")
@TestMetadata("plugins/assign-plugin/testData/codegen") @TestMetadata("plugins/assign-plugin/testData/codegen")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
public class FirBlackBoxCodegenTestForAssignmentPluginGenerated extends AbstractFirBlackBoxCodegenTestForAssignmentPlugin { public class FirLightTreeBlackBoxCodegenTestForAssignmentPluginGenerated extends AbstractFirLightTreeBlackBoxCodegenTestForAssignmentPlugin {
@Test @Test
public void testAllFilesPresentInCodegen() throws Exception { public void testAllFilesPresentInCodegen() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("plugins/assign-plugin/testData/codegen"), Pattern.compile("^(.+)\\.kt$"), Pattern.compile("^(.+)\\.fir\\.kts?$"), TargetBackend.JVM_IR, true); KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("plugins/assign-plugin/testData/codegen"), Pattern.compile("^(.+)\\.kt$"), Pattern.compile("^(.+)\\.fir\\.kts?$"), TargetBackend.JVM_IR, true);
@@ -18,7 +18,7 @@ import java.util.regex.Pattern;
@SuppressWarnings("all") @SuppressWarnings("all")
@TestMetadata("plugins/assign-plugin/testData/diagnostics") @TestMetadata("plugins/assign-plugin/testData/diagnostics")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
public class FirAssignmentPluginDiagnosticTestGenerated extends AbstractFirAssignmentPluginDiagnosticTest { public class FirPsiAssignmentPluginDiagnosticTestGenerated extends AbstractFirPsiAssignmentPluginDiagnosticTest {
@Test @Test
public void testAllFilesPresentInDiagnostics() throws Exception { public void testAllFilesPresentInDiagnostics() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("plugins/assign-plugin/testData/diagnostics"), Pattern.compile("^(.+)\\.kt$"), Pattern.compile("^(.+)\\.fir\\.kts?$"), true); KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("plugins/assign-plugin/testData/diagnostics"), Pattern.compile("^(.+)\\.kt$"), Pattern.compile("^(.+)\\.fir\\.kts?$"), true);
@@ -19,7 +19,7 @@ import java.util.regex.Pattern;
@SuppressWarnings("all") @SuppressWarnings("all")
@TestMetadata("plugins/fir-plugin-prototype/testData/box") @TestMetadata("plugins/fir-plugin-prototype/testData/box")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
public class FirPluginBlackBoxCodegenTestGenerated extends AbstractFirPluginBlackBoxCodegenTest { public class FirLightTreePluginBlackBoxCodegenTestGenerated extends AbstractFirLightTreePluginBlackBoxCodegenTest {
@Test @Test
public void testAllFilesPresentInBox() throws Exception { public void testAllFilesPresentInBox() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("plugins/fir-plugin-prototype/testData/box"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true); KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("plugins/fir-plugin-prototype/testData/box"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
@@ -18,7 +18,7 @@ import java.util.regex.Pattern;
@SuppressWarnings("all") @SuppressWarnings("all")
@TestMetadata("plugins/fir-plugin-prototype/testData/diagnostics") @TestMetadata("plugins/fir-plugin-prototype/testData/diagnostics")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
public class FirPluginDiagnosticTestGenerated extends AbstractFirPluginDiagnosticTest { public class FirPsiPluginDiagnosticTestGenerated extends AbstractFirPsiPluginDiagnosticTest {
@Test @Test
public void testAllFilesPresentInDiagnostics() throws Exception { public void testAllFilesPresentInDiagnostics() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("plugins/fir-plugin-prototype/testData/diagnostics"), Pattern.compile("^(.+)\\.kt$"), null, true); KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("plugins/fir-plugin-prototype/testData/diagnostics"), Pattern.compile("^(.+)\\.kt$"), null, true);
@@ -10,18 +10,18 @@ import org.jetbrains.kotlin.fir.plugin.services.PluginAnnotationsProvider
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives.ENABLE_PLUGIN_PHASES import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives.ENABLE_PLUGIN_PHASES
import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives.FIR_DUMP import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives.FIR_DUMP
import org.jetbrains.kotlin.test.runners.AbstractFirDiagnosticTest import org.jetbrains.kotlin.test.runners.AbstractFirPsiDiagnosticTest
import org.jetbrains.kotlin.test.runners.codegen.AbstractFirBlackBoxCodegenTest import org.jetbrains.kotlin.test.runners.codegen.AbstractFirLightTreeBlackBoxCodegenTest
import org.jetbrains.kotlin.test.runners.enableLazyResolvePhaseChecking import org.jetbrains.kotlin.test.runners.enableLazyResolvePhaseChecking
open class AbstractFirPluginBlackBoxCodegenTest : AbstractFirBlackBoxCodegenTest() { open class AbstractFirLightTreePluginBlackBoxCodegenTest : AbstractFirLightTreeBlackBoxCodegenTest() {
override fun configure(builder: TestConfigurationBuilder) { override fun configure(builder: TestConfigurationBuilder) {
super.configure(builder) super.configure(builder)
builder.commonFirWithPluginFrontendConfiguration() builder.commonFirWithPluginFrontendConfiguration()
} }
} }
abstract class AbstractFirPluginDiagnosticTest : AbstractFirDiagnosticTest() { abstract class AbstractFirPsiPluginDiagnosticTest : AbstractFirPsiDiagnosticTest() {
override fun configure(builder: TestConfigurationBuilder) { override fun configure(builder: TestConfigurationBuilder) {
super.configure(builder) super.configure(builder)
builder.commonFirWithPluginFrontendConfiguration() builder.commonFirWithPluginFrontendConfiguration()
@@ -19,7 +19,7 @@ import java.util.regex.Pattern;
@SuppressWarnings("all") @SuppressWarnings("all")
@TestMetadata("plugins/kotlinx-serialization/testData/codegen") @TestMetadata("plugins/kotlinx-serialization/testData/codegen")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
public class SerializationFir2IrAsmLikeInstructionsListingTestGenerated extends AbstractSerializationFir2IrAsmLikeInstructionsListingTest { public class SerializationFirLightTreeAsmLikeInstructionsListingTestGenerated extends AbstractSerializationFirLightTreeAsmLikeInstructionsListingTest {
@Test @Test
public void testAllFilesPresentInCodegen() throws Exception { public void testAllFilesPresentInCodegen() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("plugins/kotlinx-serialization/testData/codegen"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true); KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("plugins/kotlinx-serialization/testData/codegen"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
@@ -17,7 +17,7 @@ import java.util.regex.Pattern;
/** This class is generated by {@link org.jetbrains.kotlinx.serialization.TestGeneratorKt}. DO NOT MODIFY MANUALLY */ /** This class is generated by {@link org.jetbrains.kotlinx.serialization.TestGeneratorKt}. DO NOT MODIFY MANUALLY */
@SuppressWarnings("all") @SuppressWarnings("all")
public class SerializationFirBlackBoxTestGenerated extends AbstractSerializationFirBlackBoxTest { public class SerializationFirLightTreeBlackBoxTestGenerated extends AbstractSerializationFirLightTreeBlackBoxTest {
@Nested @Nested
@TestMetadata("plugins/kotlinx-serialization/testData/boxIr") @TestMetadata("plugins/kotlinx-serialization/testData/boxIr")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
@@ -16,7 +16,7 @@ import java.util.regex.Pattern;
/** This class is generated by {@link org.jetbrains.kotlinx.serialization.TestGeneratorKt}. DO NOT MODIFY MANUALLY */ /** This class is generated by {@link org.jetbrains.kotlinx.serialization.TestGeneratorKt}. DO NOT MODIFY MANUALLY */
@SuppressWarnings("all") @SuppressWarnings("all")
public class SerializationFirDiagnosticTestGenerated extends AbstractSerializationFirDiagnosticTest { public class SerializationFirPsiDiagnosticTestGenerated extends AbstractSerializationFirPsiDiagnosticTest {
@Nested @Nested
@TestMetadata("plugins/kotlinx-serialization/testData/diagnostics") @TestMetadata("plugins/kotlinx-serialization/testData/diagnostics")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
@@ -23,7 +23,7 @@ fun main(args: Array<String>) {
model("diagnostics", excludedPattern = excludedFirTestdataPattern) model("diagnostics", excludedPattern = excludedFirTestdataPattern)
} }
testClass<AbstractSerializationFirDiagnosticTest> { testClass<AbstractSerializationFirPsiDiagnosticTest> {
model("diagnostics", excludedPattern = excludedFirTestdataPattern) model("diagnostics", excludedPattern = excludedFirTestdataPattern)
model("firMembers") model("firMembers")
} }
@@ -38,7 +38,7 @@ fun main(args: Array<String>) {
model("codegen") model("codegen")
} }
testClass<AbstractSerializationFir2IrAsmLikeInstructionsListingTest> { testClass<AbstractSerializationFirLightTreeAsmLikeInstructionsListingTest> {
model("codegen") model("codegen")
} }
@@ -48,7 +48,7 @@ fun main(args: Array<String>) {
model("boxIr") model("boxIr")
} }
testClass<AbstractSerializationFirBlackBoxTest> { testClass<AbstractSerializationFirLightTreeBlackBoxTest> {
model("boxIr") model("boxIr")
model("firMembers") model("firMembers")
} }
@@ -8,7 +8,7 @@ package org.jetbrains.kotlinx.serialization.runners
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
import org.jetbrains.kotlin.test.directives.AsmLikeInstructionListingDirectives import org.jetbrains.kotlin.test.directives.AsmLikeInstructionListingDirectives
import org.jetbrains.kotlin.test.runners.codegen.AbstractAsmLikeInstructionListingTest import org.jetbrains.kotlin.test.runners.codegen.AbstractAsmLikeInstructionListingTest
import org.jetbrains.kotlin.test.runners.codegen.AbstractFirAsmLikeInstructionListingTest import org.jetbrains.kotlin.test.runners.codegen.AbstractFirLightTreeAsmLikeInstructionListingTest
import org.jetbrains.kotlin.test.runners.codegen.AbstractIrAsmLikeInstructionListingTest import org.jetbrains.kotlin.test.runners.codegen.AbstractIrAsmLikeInstructionListingTest
import org.jetbrains.kotlinx.serialization.configureForKotlinxSerialization import org.jetbrains.kotlinx.serialization.configureForKotlinxSerialization
@@ -28,7 +28,7 @@ open class AbstractSerializationIrAsmLikeInstructionsListingTest : AbstractIrAsm
} }
} }
open class AbstractSerializationFir2IrAsmLikeInstructionsListingTest : AbstractFirAsmLikeInstructionListingTest() { open class AbstractSerializationFirLightTreeAsmLikeInstructionsListingTest : AbstractFirLightTreeAsmLikeInstructionListingTest() {
override fun configure(builder: TestConfigurationBuilder) { override fun configure(builder: TestConfigurationBuilder) {
super.configure(builder) super.configure(builder)
builder.defaultDirectives { builder.defaultDirectives {
@@ -6,8 +6,7 @@
package org.jetbrains.kotlinx.serialization.runners package org.jetbrains.kotlinx.serialization.runners
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives.FIR_DUMP import org.jetbrains.kotlin.test.runners.codegen.AbstractFirLightTreeBlackBoxCodegenTest
import org.jetbrains.kotlin.test.runners.codegen.AbstractFirBlackBoxCodegenTest
import org.jetbrains.kotlin.test.runners.codegen.AbstractIrBlackBoxCodegenTest import org.jetbrains.kotlin.test.runners.codegen.AbstractIrBlackBoxCodegenTest
import org.jetbrains.kotlinx.serialization.configureForKotlinxSerialization import org.jetbrains.kotlinx.serialization.configureForKotlinxSerialization
@@ -25,7 +24,7 @@ open class AbstractSerializationWithoutRuntimeIrBoxTest : AbstractIrBlackBoxCode
} }
} }
open class AbstractSerializationFirBlackBoxTest : AbstractFirBlackBoxCodegenTest() { open class AbstractSerializationFirLightTreeBlackBoxTest : AbstractFirLightTreeBlackBoxCodegenTest() {
override fun configure(builder: TestConfigurationBuilder) { override fun configure(builder: TestConfigurationBuilder) {
super.configure(builder) super.configure(builder)
builder.configureForKotlinxSerialization() builder.configureForKotlinxSerialization()
@@ -9,7 +9,7 @@ import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
import org.jetbrains.kotlin.test.directives.DiagnosticsDirectives.DIAGNOSTICS import org.jetbrains.kotlin.test.directives.DiagnosticsDirectives.DIAGNOSTICS
import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives.FIR_DUMP import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives.FIR_DUMP
import org.jetbrains.kotlin.test.runners.AbstractDiagnosticTest import org.jetbrains.kotlin.test.runners.AbstractDiagnosticTest
import org.jetbrains.kotlin.test.runners.AbstractFirDiagnosticTest import org.jetbrains.kotlin.test.runners.AbstractFirPsiDiagnosticTest
import org.jetbrains.kotlin.test.runners.configurationForClassicAndFirTestsAlongside import org.jetbrains.kotlin.test.runners.configurationForClassicAndFirTestsAlongside
import org.jetbrains.kotlinx.serialization.configureForKotlinxSerialization import org.jetbrains.kotlinx.serialization.configureForKotlinxSerialization
@@ -23,7 +23,7 @@ abstract class AbstractSerializationPluginDiagnosticTest : AbstractDiagnosticTes
} }
} }
abstract class AbstractSerializationFirDiagnosticTest : AbstractFirDiagnosticTest() { abstract class AbstractSerializationFirPsiDiagnosticTest : AbstractFirPsiDiagnosticTest() {
override fun configure(builder: TestConfigurationBuilder) { override fun configure(builder: TestConfigurationBuilder) {
super.configure(builder) super.configure(builder)
with(builder) { with(builder) {
@@ -19,7 +19,7 @@ import java.util.regex.Pattern;
@SuppressWarnings("all") @SuppressWarnings("all")
@TestMetadata("plugins/lombok/testData/box") @TestMetadata("plugins/lombok/testData/box")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
public class FirBlackBoxCodegenTestForLombokGenerated extends AbstractFirBlackBoxCodegenTestForLombok { public class FirLightTreeBlackBoxCodegenTestForLombokGenerated extends AbstractFirLightTreeBlackBoxCodegenTestForLombok {
@Test @Test
@TestMetadata("accessorsStripPrefix.kt") @TestMetadata("accessorsStripPrefix.kt")
public void testAccessorsStripPrefix() throws Exception { public void testAccessorsStripPrefix() throws Exception {
@@ -18,7 +18,7 @@ import java.util.regex.Pattern;
@SuppressWarnings("all") @SuppressWarnings("all")
@TestMetadata("plugins/lombok/testData/diagnostics") @TestMetadata("plugins/lombok/testData/diagnostics")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
public class FirDiagnosticTestForLombokGenerated extends AbstractFirDiagnosticTestForLombok { public class FirPsiDiagnosticTestForLombokGenerated extends AbstractFirPsiDiagnosticTestForLombok {
@Test @Test
@TestMetadata("accessorsStripPrefixCombined.kt") @TestMetadata("accessorsStripPrefixCombined.kt")
public void testAccessorsStripPrefixCombined() throws Exception { public void testAccessorsStripPrefixCombined() throws Exception {
@@ -7,9 +7,9 @@ package org.jetbrains.kotlin.lombok
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
import org.jetbrains.kotlin.test.runners.AbstractDiagnosticTest import org.jetbrains.kotlin.test.runners.AbstractDiagnosticTest
import org.jetbrains.kotlin.test.runners.AbstractFirDiagnosticTest import org.jetbrains.kotlin.test.runners.AbstractFirPsiDiagnosticTest
import org.jetbrains.kotlin.test.runners.codegen.AbstractBlackBoxCodegenTest import org.jetbrains.kotlin.test.runners.codegen.AbstractBlackBoxCodegenTest
import org.jetbrains.kotlin.test.runners.codegen.AbstractFirBlackBoxCodegenTest import org.jetbrains.kotlin.test.runners.codegen.AbstractFirLightTreeBlackBoxCodegenTest
import org.jetbrains.kotlin.test.runners.codegen.AbstractIrBlackBoxCodegenTest import org.jetbrains.kotlin.test.runners.codegen.AbstractIrBlackBoxCodegenTest
import org.jetbrains.kotlin.test.runners.configurationForClassicAndFirTestsAlongside import org.jetbrains.kotlin.test.runners.configurationForClassicAndFirTestsAlongside
@@ -29,7 +29,7 @@ open class AbstractIrBlackBoxCodegenTestForLombok : AbstractIrBlackBoxCodegenTes
} }
} }
open class AbstractFirBlackBoxCodegenTestForLombok : AbstractFirBlackBoxCodegenTest() { open class AbstractFirLightTreeBlackBoxCodegenTestForLombok : AbstractFirLightTreeBlackBoxCodegenTest() {
override fun configure(builder: TestConfigurationBuilder) { override fun configure(builder: TestConfigurationBuilder) {
super.configure(builder) super.configure(builder)
builder.enableLombok() builder.enableLombok()
@@ -45,7 +45,7 @@ open class AbstractDiagnosticTestForLombok : AbstractDiagnosticTest() {
} }
} }
open class AbstractFirDiagnosticTestForLombok : AbstractFirDiagnosticTest() { open class AbstractFirPsiDiagnosticTestForLombok : AbstractFirPsiDiagnosticTest() {
override fun configure(builder: TestConfigurationBuilder) { override fun configure(builder: TestConfigurationBuilder) {
super.configure(builder) super.configure(builder)
builder.configurationForClassicAndFirTestsAlongside() builder.configurationForClassicAndFirTestsAlongside()
@@ -12,7 +12,7 @@ import org.jetbrains.kotlin.test.directives.model.DirectivesContainer
import org.jetbrains.kotlin.test.directives.model.SimpleDirectivesContainer import org.jetbrains.kotlin.test.directives.model.SimpleDirectivesContainer
import org.jetbrains.kotlin.test.model.TestModule import org.jetbrains.kotlin.test.model.TestModule
import org.jetbrains.kotlin.test.runners.AbstractDiagnosticTest import org.jetbrains.kotlin.test.runners.AbstractDiagnosticTest
import org.jetbrains.kotlin.test.runners.AbstractFirDiagnosticTest import org.jetbrains.kotlin.test.runners.AbstractFirPsiDiagnosticTest
import org.jetbrains.kotlin.test.runners.codegen.* import org.jetbrains.kotlin.test.runners.codegen.*
import org.jetbrains.kotlin.test.runners.configurationForClassicAndFirTestsAlongside import org.jetbrains.kotlin.test.runners.configurationForClassicAndFirTestsAlongside
import org.jetbrains.kotlin.test.services.EnvironmentConfigurator import org.jetbrains.kotlin.test.services.EnvironmentConfigurator
@@ -34,7 +34,7 @@ open class AbstractIrBlackBoxCodegenTestForNoArg : AbstractIrBlackBoxCodegenTest
} }
} }
open class AbstractFirBlackBoxCodegenTestForNoArg : AbstractFirBlackBoxCodegenTest() { open class AbstractFirLightTreeBlackBoxCodegenTestForNoArg : AbstractFirLightTreeBlackBoxCodegenTest() {
override fun configure(builder: TestConfigurationBuilder) { override fun configure(builder: TestConfigurationBuilder) {
super.configure(builder) super.configure(builder)
builder.enableNoArg() builder.enableNoArg()
@@ -57,7 +57,7 @@ open class AbstractIrBytecodeListingTestForNoArg : AbstractIrBytecodeListingTest
} }
} }
open class AbstractFirBytecodeListingTestForNoArg : AbstractFirBytecodeListingTest() { open class AbstractFirLightTreeBytecodeListingTestForNoArg : AbstractFirLightTreeBytecodeListingTest() {
override fun configure(builder: TestConfigurationBuilder) { override fun configure(builder: TestConfigurationBuilder) {
super.configure(builder) super.configure(builder)
builder.enableNoArg() builder.enableNoArg()
@@ -73,7 +73,7 @@ abstract class AbstractDiagnosticsTestForNoArg : AbstractDiagnosticTest() {
} }
} }
abstract class AbstractFirDiagnosticsTestForNoArg : AbstractFirDiagnosticTest() { abstract class AbstractFirPsiDiagnosticsTestForNoArg : AbstractFirPsiDiagnosticTest() {
override fun configure(builder: TestConfigurationBuilder) { override fun configure(builder: TestConfigurationBuilder) {
super.configure(builder) super.configure(builder)
builder.configurationForClassicAndFirTestsAlongside() builder.configurationForClassicAndFirTestsAlongside()
@@ -19,7 +19,7 @@ import java.util.regex.Pattern;
@SuppressWarnings("all") @SuppressWarnings("all")
@TestMetadata("plugins/noarg/testData/box") @TestMetadata("plugins/noarg/testData/box")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
public class FirBlackBoxCodegenTestForNoArgGenerated extends AbstractFirBlackBoxCodegenTestForNoArg { public class FirLightTreeBlackBoxCodegenTestForNoArgGenerated extends AbstractFirLightTreeBlackBoxCodegenTestForNoArg {
@Test @Test
public void testAllFilesPresentInBox() throws Exception { public void testAllFilesPresentInBox() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("plugins/noarg/testData/box"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true); KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("plugins/noarg/testData/box"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
@@ -19,7 +19,7 @@ import java.util.regex.Pattern;
@SuppressWarnings("all") @SuppressWarnings("all")
@TestMetadata("plugins/noarg/testData/bytecodeListing") @TestMetadata("plugins/noarg/testData/bytecodeListing")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
public class FirBytecodeListingTestForNoArgGenerated extends AbstractFirBytecodeListingTestForNoArg { public class FirLightTreeBytecodeListingTestForNoArgGenerated extends AbstractFirLightTreeBytecodeListingTestForNoArg {
@Test @Test
public void testAllFilesPresentInBytecodeListing() throws Exception { public void testAllFilesPresentInBytecodeListing() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("plugins/noarg/testData/bytecodeListing"), Pattern.compile("^(.+)\\.kt$"), Pattern.compile("^(.+)\\.fir\\.kts?$"), TargetBackend.JVM_IR, true); KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("plugins/noarg/testData/bytecodeListing"), Pattern.compile("^(.+)\\.kt$"), Pattern.compile("^(.+)\\.fir\\.kts?$"), TargetBackend.JVM_IR, true);
@@ -18,7 +18,7 @@ import java.util.regex.Pattern;
@SuppressWarnings("all") @SuppressWarnings("all")
@TestMetadata("plugins/noarg/testData/diagnostics") @TestMetadata("plugins/noarg/testData/diagnostics")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
public class FirDiagnosticsTestForNoArgGenerated extends AbstractFirDiagnosticsTestForNoArg { public class FirPsiDiagnosticsTestForNoArgGenerated extends AbstractFirPsiDiagnosticsTestForNoArg {
@Test @Test
public void testAllFilesPresentInDiagnostics() throws Exception { public void testAllFilesPresentInDiagnostics() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("plugins/noarg/testData/diagnostics"), Pattern.compile("^(.+)\\.kt$"), Pattern.compile("^(.+)\\.fir\\.kts?$"), true); KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("plugins/noarg/testData/diagnostics"), Pattern.compile("^(.+)\\.kt$"), Pattern.compile("^(.+)\\.fir\\.kts?$"), true);
@@ -18,7 +18,7 @@ import java.util.regex.Pattern;
@SuppressWarnings("all") @SuppressWarnings("all")
@TestMetadata("plugins/parcelize/parcelize-compiler/testData/diagnostics") @TestMetadata("plugins/parcelize/parcelize-compiler/testData/diagnostics")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
public class FirParcelizeDiagnosticTestGenerated extends AbstractFirParcelizeDiagnosticTest { public class FirPsiParcelizeDiagnosticTestGenerated extends AbstractFirPsiParcelizeDiagnosticTest {
@Test @Test
public void testAllFilesPresentInDiagnostics() throws Exception { public void testAllFilesPresentInDiagnostics() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("plugins/parcelize/parcelize-compiler/testData/diagnostics"), Pattern.compile("^(.+)\\.kt$"), Pattern.compile("^(.+)\\.fir\\.kts?$"), true); KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("plugins/parcelize/parcelize-compiler/testData/diagnostics"), Pattern.compile("^(.+)\\.kt$"), Pattern.compile("^(.+)\\.fir\\.kts?$"), true);
@@ -19,7 +19,7 @@ import java.util.regex.Pattern;
@SuppressWarnings("all") @SuppressWarnings("all")
@TestMetadata("plugins/parcelize/parcelize-compiler/testData/box") @TestMetadata("plugins/parcelize/parcelize-compiler/testData/box")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
public class ParcelizeFirBoxTestGenerated extends AbstractParcelizeFirBoxTest { public class ParcelizeFirLightTreeBoxTestGenerated extends AbstractParcelizeFirLightTreeBoxTest {
@Test @Test
public void testAllFilesPresentInBox() throws Exception { public void testAllFilesPresentInBox() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("plugins/parcelize/parcelize-compiler/testData/box"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true); KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("plugins/parcelize/parcelize-compiler/testData/box"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
@@ -6,6 +6,7 @@
package org.jetbrains.kotlin.parcelize.test.runners package org.jetbrains.kotlin.parcelize.test.runners
import org.jetbrains.kotlin.parcelize.test.services.ParcelizeEnvironmentConfigurator import org.jetbrains.kotlin.parcelize.test.services.ParcelizeEnvironmentConfigurator
import org.jetbrains.kotlin.test.FirParser
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives
import org.jetbrains.kotlin.test.frontend.fir.FirFailingTestSuppressor import org.jetbrains.kotlin.test.frontend.fir.FirFailingTestSuppressor
@@ -15,13 +16,14 @@ import org.jetbrains.kotlin.test.runners.baseFirDiagnosticTestConfiguration
import org.jetbrains.kotlin.test.runners.enableLazyResolvePhaseChecking import org.jetbrains.kotlin.test.runners.enableLazyResolvePhaseChecking
import org.jetbrains.kotlin.test.services.fir.FirOldFrontendMetaConfigurator import org.jetbrains.kotlin.test.services.fir.FirOldFrontendMetaConfigurator
abstract class AbstractFirParcelizeDiagnosticTest : AbstractKotlinCompilerTest() { abstract class AbstractFirParcelizeDiagnosticTestBase(val parser: FirParser) : AbstractKotlinCompilerTest() {
override fun TestConfigurationBuilder.configuration() { override fun TestConfigurationBuilder.configuration() {
baseFirDiagnosticTestConfiguration() baseFirDiagnosticTestConfiguration()
enableLazyResolvePhaseChecking() enableLazyResolvePhaseChecking()
defaultDirectives { defaultDirectives {
+FirDiagnosticsDirectives.ENABLE_PLUGIN_PHASES +FirDiagnosticsDirectives.ENABLE_PLUGIN_PHASES
FirDiagnosticsDirectives.FIR_PARSER with parser
} }
useConfigurators(::ParcelizeEnvironmentConfigurator) useConfigurators(::ParcelizeEnvironmentConfigurator)
@@ -34,3 +36,5 @@ abstract class AbstractFirParcelizeDiagnosticTest : AbstractKotlinCompilerTest()
useMetaTestConfigurators(::FirOldFrontendMetaConfigurator) useMetaTestConfigurators(::FirOldFrontendMetaConfigurator)
} }
} }
abstract class AbstractFirPsiParcelizeDiagnosticTest : AbstractFirParcelizeDiagnosticTestBase(FirParser.Psi)
@@ -10,6 +10,7 @@ import org.jetbrains.kotlin.parcelize.test.services.ParcelizeMainClassProvider
import org.jetbrains.kotlin.parcelize.test.services.ParcelizeRuntimeClasspathProvider import org.jetbrains.kotlin.parcelize.test.services.ParcelizeRuntimeClasspathProvider
import org.jetbrains.kotlin.parcelize.test.services.ParcelizeUtilSourcesProvider import org.jetbrains.kotlin.parcelize.test.services.ParcelizeUtilSourcesProvider
import org.jetbrains.kotlin.test.Constructor import org.jetbrains.kotlin.test.Constructor
import org.jetbrains.kotlin.test.FirParser
import org.jetbrains.kotlin.test.TargetBackend import org.jetbrains.kotlin.test.TargetBackend
import org.jetbrains.kotlin.test.backend.BlackBoxCodegenSuppressor import org.jetbrains.kotlin.test.backend.BlackBoxCodegenSuppressor
import org.jetbrains.kotlin.test.backend.classic.ClassicBackendInput import org.jetbrains.kotlin.test.backend.classic.ClassicBackendInput
@@ -23,6 +24,7 @@ import org.jetbrains.kotlin.test.builders.configureFirHandlersStep
import org.jetbrains.kotlin.test.builders.configureIrHandlersStep import org.jetbrains.kotlin.test.builders.configureIrHandlersStep
import org.jetbrains.kotlin.test.directives.CodegenTestDirectives.REQUIRES_SEPARATE_PROCESS import org.jetbrains.kotlin.test.directives.CodegenTestDirectives.REQUIRES_SEPARATE_PROCESS
import org.jetbrains.kotlin.test.directives.DiagnosticsDirectives.REPORT_ONLY_EXPLICITLY_DEFINED_DEBUG_INFO import org.jetbrains.kotlin.test.directives.DiagnosticsDirectives.REPORT_ONLY_EXPLICITLY_DEFINED_DEBUG_INFO
import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives
import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives.ENABLE_PLUGIN_PHASES import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives.ENABLE_PLUGIN_PHASES
import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontend2ClassicBackendConverter import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontend2ClassicBackendConverter
import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontend2IrConverter import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontend2IrConverter
@@ -116,7 +118,7 @@ open class AbstractParcelizeIrBoxTest : AbstractParcelizeBoxTestBase<ClassicFron
get() = ::JvmIrBackendFacade get() = ::JvmIrBackendFacade
} }
open class AbstractParcelizeFirBoxTest : AbstractParcelizeBoxTestBase<FirOutputArtifact, IrBackendInput>( abstract class AbstractParcelizeFirBoxTestBase(val parser: FirParser) : AbstractParcelizeBoxTestBase<FirOutputArtifact, IrBackendInput>(
FrontendKinds.FIR, FrontendKinds.FIR,
TargetBackend.JVM_IR TargetBackend.JVM_IR
) { ) {
@@ -133,7 +135,10 @@ open class AbstractParcelizeFirBoxTest : AbstractParcelizeBoxTestBase<FirOutputA
with(builder) { with(builder) {
defaultDirectives { defaultDirectives {
+ENABLE_PLUGIN_PHASES +ENABLE_PLUGIN_PHASES
FirDiagnosticsDirectives.FIR_PARSER with parser
} }
} }
} }
} }
open class AbstractParcelizeFirLightTreeBoxTest : AbstractParcelizeFirBoxTestBase(FirParser.LightTree)
@@ -13,8 +13,8 @@ import org.jetbrains.kotlin.samWithReceiver.k2.FirSamWithReceiverExtensionRegist
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
import org.jetbrains.kotlin.test.model.TestModule import org.jetbrains.kotlin.test.model.TestModule
import org.jetbrains.kotlin.test.runners.AbstractDiagnosticTest import org.jetbrains.kotlin.test.runners.AbstractDiagnosticTest
import org.jetbrains.kotlin.test.runners.AbstractFirDiagnosticTest import org.jetbrains.kotlin.test.runners.AbstractFirPsiDiagnosticTest
import org.jetbrains.kotlin.test.runners.codegen.AbstractFirBlackBoxCodegenTest import org.jetbrains.kotlin.test.runners.codegen.AbstractFirLightTreeBlackBoxCodegenTest
import org.jetbrains.kotlin.test.runners.codegen.AbstractIrBlackBoxCodegenTest import org.jetbrains.kotlin.test.runners.codegen.AbstractIrBlackBoxCodegenTest
import org.jetbrains.kotlin.test.runners.configurationForClassicAndFirTestsAlongside import org.jetbrains.kotlin.test.runners.configurationForClassicAndFirTestsAlongside
import org.jetbrains.kotlin.test.services.EnvironmentConfigurator import org.jetbrains.kotlin.test.services.EnvironmentConfigurator
@@ -31,7 +31,7 @@ abstract class AbstractSamWithReceiverTest : AbstractDiagnosticTest() {
} }
} }
abstract class AbstractFirSamWithReceiverTest : AbstractFirDiagnosticTest() { abstract class AbstractFirPsiSamWithReceiverDiagnosticTest : AbstractFirPsiDiagnosticTest() {
override fun configure(builder: TestConfigurationBuilder) { override fun configure(builder: TestConfigurationBuilder) {
super.configure(builder) super.configure(builder)
with(builder) { with(builder) {
@@ -50,7 +50,7 @@ open class AbstractIrBlackBoxCodegenTestForSamWithReceiver : AbstractIrBlackBoxC
} }
} }
open class AbstractFirBlackBoxCodegenTestForSamWithReceiver : AbstractFirBlackBoxCodegenTest() { open class AbstractFirLightTreeBlackBoxCodegenTestForSamWithReceiver : AbstractFirLightTreeBlackBoxCodegenTest() {
override fun configure(builder: TestConfigurationBuilder) { override fun configure(builder: TestConfigurationBuilder) {
super.configure(builder) super.configure(builder)
builder.configurePlugin() builder.configurePlugin()
@@ -19,7 +19,7 @@ import java.util.regex.Pattern;
@SuppressWarnings("all") @SuppressWarnings("all")
@TestMetadata("plugins/sam-with-receiver/testData/codegen") @TestMetadata("plugins/sam-with-receiver/testData/codegen")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
public class FirBlackBoxCodegenTestForSamWithReceiverGenerated extends AbstractFirBlackBoxCodegenTestForSamWithReceiver { public class FirLightTreeBlackBoxCodegenTestForSamWithReceiverGenerated extends AbstractFirLightTreeBlackBoxCodegenTestForSamWithReceiver {
@Test @Test
public void testAllFilesPresentInCodegen() throws Exception { public void testAllFilesPresentInCodegen() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("plugins/sam-with-receiver/testData/codegen"), Pattern.compile("^(.+)\\.kt$"), Pattern.compile("^(.+)\\.fir\\.kts?$"), TargetBackend.JVM_IR, true); KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("plugins/sam-with-receiver/testData/codegen"), Pattern.compile("^(.+)\\.kt$"), Pattern.compile("^(.+)\\.fir\\.kts?$"), TargetBackend.JVM_IR, true);
@@ -18,7 +18,7 @@ import java.util.regex.Pattern;
@SuppressWarnings("all") @SuppressWarnings("all")
@TestMetadata("plugins/sam-with-receiver/testData/diagnostics") @TestMetadata("plugins/sam-with-receiver/testData/diagnostics")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
public class FirSamWithReceiverTestGenerated extends AbstractFirSamWithReceiverTest { public class FirPsiSamWithReceiverDiagnosticTestGenerated extends AbstractFirPsiSamWithReceiverDiagnosticTest {
@Test @Test
public void testAllFilesPresentInDiagnostics() throws Exception { public void testAllFilesPresentInDiagnostics() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("plugins/sam-with-receiver/testData/diagnostics"), Pattern.compile("^(.+)\\.kt$"), Pattern.compile("^(.+)\\.fir\\.kts?$"), true); KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("plugins/sam-with-receiver/testData/diagnostics"), Pattern.compile("^(.+)\\.kt$"), Pattern.compile("^(.+)\\.fir\\.kts?$"), true);