[TEST] Migrate AbstractDiagnosticsTestWithJvmBackend to new test runners

This commit is contained in:
Dmitriy Novozhilov
2020-12-14 17:33:53 +03:00
parent 71ffaa2d97
commit e7f8486078
11 changed files with 546 additions and 345 deletions
@@ -3,581 +3,631 @@
* 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.
*/ */
package org.jetbrains.kotlin.checkers; package org.jetbrains.kotlin.test.runners;
import com.intellij.testFramework.TestDataPath; import com.intellij.testFramework.TestDataPath;
import org.jetbrains.kotlin.test.JUnit3RunnerWithInners;
import org.jetbrains.kotlin.test.KotlinTestUtils;
import org.jetbrains.kotlin.test.util.KtTestUtil; import org.jetbrains.kotlin.test.util.KtTestUtil;
import org.jetbrains.kotlin.test.TargetBackend; import org.jetbrains.kotlin.test.TargetBackend;
import org.jetbrains.kotlin.test.TestMetadata; import org.jetbrains.kotlin.test.TestMetadata;
import org.junit.runner.RunWith; import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
import java.io.File; import java.io.File;
import java.util.regex.Pattern; import java.util.regex.Pattern;
/** This class is generated by {@link org.jetbrains.kotlin.generators.tests.TestsPackage}. DO NOT MODIFY MANUALLY */ /** This class is generated by {@link GenerateNewCompilerTests.kt}. DO NOT MODIFY MANUALLY */
@SuppressWarnings("all") @SuppressWarnings("all")
@TestMetadata("compiler/testData/diagnostics/testsWithJvmBackend") @TestMetadata("compiler/testData/diagnostics/testsWithJvmBackend")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class)
public class DiagnosticsTestWithJvmIrBackendGenerated extends AbstractDiagnosticsTestWithJvmIrBackend { public class DiagnosticsTestWithJvmIrBackendGenerated extends AbstractDiagnosticsTestWithJvmIrBackend {
private void runTest(String testDataFilePath) throws Exception { @Test
KotlinTestUtils.runTest(this::doTest, TargetBackend.JVM_IR, testDataFilePath);
}
public void testAllFilesPresentInTestsWithJvmBackend() throws Exception { public void testAllFilesPresentInTestsWithJvmBackend() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/testsWithJvmBackend"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true); KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/testsWithJvmBackend"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
} }
@Test
@TestMetadata("indirectInlineCycle_ir.kt") @TestMetadata("indirectInlineCycle_ir.kt")
public void testIndirectInlineCycle_ir() throws Exception { public void testIndirectInlineCycle_ir() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/indirectInlineCycle_ir.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/indirectInlineCycle_ir.kt");
} }
@Test
@TestMetadata("inlineCycle_ir.kt") @TestMetadata("inlineCycle_ir.kt")
public void testInlineCycle_ir() throws Exception { public void testInlineCycle_ir() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/inlineCycle_ir.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/inlineCycle_ir.kt");
} }
@Test
@TestMetadata("multipleBigArityFunsImplemented_ir.kt") @TestMetadata("multipleBigArityFunsImplemented_ir.kt")
public void testMultipleBigArityFunsImplemented_ir() throws Exception { public void testMultipleBigArityFunsImplemented_ir() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/multipleBigArityFunsImplemented_ir.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/multipleBigArityFunsImplemented_ir.kt");
} }
@Test
@TestMetadata("suspendInlineCycle_ir.kt") @TestMetadata("suspendInlineCycle_ir.kt")
public void testSuspendInlineCycle_ir() throws Exception { public void testSuspendInlineCycle_ir() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/suspendInlineCycle_ir.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/suspendInlineCycle_ir.kt");
} }
@Nested
@TestMetadata("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature") @TestMetadata("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class) public class DuplicateJvmSignature extends AbstractDiagnosticsTestWithJvmIrBackend {
public static class DuplicateJvmSignature extends AbstractDiagnosticsTestWithJvmIrBackend { @Test
private void runTest(String testDataFilePath) throws Exception {
KotlinTestUtils.runTest(this::doTest, TargetBackend.JVM_IR, testDataFilePath);
}
public void testAllFilesPresentInDuplicateJvmSignature() throws Exception { public void testAllFilesPresentInDuplicateJvmSignature() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true); KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
} }
@Test
@TestMetadata("caseInProperties.kt") @TestMetadata("caseInProperties.kt")
public void testCaseInProperties() throws Exception { public void testCaseInProperties() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/caseInProperties.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/caseInProperties.kt");
} }
@Test
@TestMetadata("changingNullabilityOfOrdinaryClassIsBinaryCompatibleChange.kt") @TestMetadata("changingNullabilityOfOrdinaryClassIsBinaryCompatibleChange.kt")
public void testChangingNullabilityOfOrdinaryClassIsBinaryCompatibleChange() throws Exception { public void testChangingNullabilityOfOrdinaryClassIsBinaryCompatibleChange() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/changingNullabilityOfOrdinaryClassIsBinaryCompatibleChange.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/changingNullabilityOfOrdinaryClassIsBinaryCompatibleChange.kt");
} }
@Test
@TestMetadata("vararg.kt") @TestMetadata("vararg.kt")
public void testVararg() throws Exception { public void testVararg() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/vararg.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/vararg.kt");
} }
@Nested
@TestMetadata("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/accidentalOverrides") @TestMetadata("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/accidentalOverrides")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class) public class AccidentalOverrides extends AbstractDiagnosticsTestWithJvmIrBackend {
public static class AccidentalOverrides extends AbstractDiagnosticsTestWithJvmIrBackend { @Test
private void runTest(String testDataFilePath) throws Exception {
KotlinTestUtils.runTest(this::doTest, TargetBackend.JVM_IR, testDataFilePath);
}
@TestMetadata("accidentalOverrideFromGrandparent.kt") @TestMetadata("accidentalOverrideFromGrandparent.kt")
public void testAccidentalOverrideFromGrandparent() throws Exception { public void testAccidentalOverrideFromGrandparent() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/accidentalOverrides/accidentalOverrideFromGrandparent.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/accidentalOverrides/accidentalOverrideFromGrandparent.kt");
} }
@Test
public void testAllFilesPresentInAccidentalOverrides() throws Exception { public void testAllFilesPresentInAccidentalOverrides() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/accidentalOverrides"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true); KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/accidentalOverrides"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
} }
@Test
@TestMetadata("classFunctionOverriddenByProperty.kt") @TestMetadata("classFunctionOverriddenByProperty.kt")
public void testClassFunctionOverriddenByProperty() throws Exception { public void testClassFunctionOverriddenByProperty() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/accidentalOverrides/classFunctionOverriddenByProperty.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/accidentalOverrides/classFunctionOverriddenByProperty.kt");
} }
@Test
@TestMetadata("classFunctionOverriddenByPropertyInConstructor.kt") @TestMetadata("classFunctionOverriddenByPropertyInConstructor.kt")
public void testClassFunctionOverriddenByPropertyInConstructor() throws Exception { public void testClassFunctionOverriddenByPropertyInConstructor() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/accidentalOverrides/classFunctionOverriddenByPropertyInConstructor.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/accidentalOverrides/classFunctionOverriddenByPropertyInConstructor.kt");
} }
@Test
@TestMetadata("classFunctionOverriddenByPropertyNoGetter.kt") @TestMetadata("classFunctionOverriddenByPropertyNoGetter.kt")
public void testClassFunctionOverriddenByPropertyNoGetter() throws Exception { public void testClassFunctionOverriddenByPropertyNoGetter() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/accidentalOverrides/classFunctionOverriddenByPropertyNoGetter.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/accidentalOverrides/classFunctionOverriddenByPropertyNoGetter.kt");
} }
@Test
@TestMetadata("classPropertyOverriddenByFunction.kt") @TestMetadata("classPropertyOverriddenByFunction.kt")
public void testClassPropertyOverriddenByFunction() throws Exception { public void testClassPropertyOverriddenByFunction() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/accidentalOverrides/classPropertyOverriddenByFunction.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/accidentalOverrides/classPropertyOverriddenByFunction.kt");
} }
@Test
@TestMetadata("defaultFunction_ir.kt") @TestMetadata("defaultFunction_ir.kt")
public void testDefaultFunction_ir() throws Exception { public void testDefaultFunction_ir() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/accidentalOverrides/defaultFunction_ir.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/accidentalOverrides/defaultFunction_ir.kt");
} }
@Test
@TestMetadata("delegatedFunctionOverriddenByProperty_ir.kt") @TestMetadata("delegatedFunctionOverriddenByProperty_ir.kt")
public void testDelegatedFunctionOverriddenByProperty_ir() throws Exception { public void testDelegatedFunctionOverriddenByProperty_ir() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/accidentalOverrides/delegatedFunctionOverriddenByProperty_ir.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/accidentalOverrides/delegatedFunctionOverriddenByProperty_ir.kt");
} }
@Test
@TestMetadata("genericClassFunction.kt") @TestMetadata("genericClassFunction.kt")
public void testGenericClassFunction() throws Exception { public void testGenericClassFunction() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/accidentalOverrides/genericClassFunction.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/accidentalOverrides/genericClassFunction.kt");
} }
@Test
@TestMetadata("overridesNothing_ir.kt") @TestMetadata("overridesNothing_ir.kt")
public void testOverridesNothing_ir() throws Exception { public void testOverridesNothing_ir() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/accidentalOverrides/overridesNothing_ir.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/accidentalOverrides/overridesNothing_ir.kt");
} }
@Test
@TestMetadata("overridesNothing_old.kt") @TestMetadata("overridesNothing_old.kt")
public void testOverridesNothing_old() throws Exception { public void testOverridesNothing_old() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/accidentalOverrides/overridesNothing_old.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/accidentalOverrides/overridesNothing_old.kt");
} }
@Test
@TestMetadata("privateClassFunctionOverriddenByProperty.kt") @TestMetadata("privateClassFunctionOverriddenByProperty.kt")
public void testPrivateClassFunctionOverriddenByProperty() throws Exception { public void testPrivateClassFunctionOverriddenByProperty() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/accidentalOverrides/privateClassFunctionOverriddenByProperty.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/accidentalOverrides/privateClassFunctionOverriddenByProperty.kt");
} }
@Test
@TestMetadata("traitFunctionOverriddenByPropertyNoImpl.kt") @TestMetadata("traitFunctionOverriddenByPropertyNoImpl.kt")
public void testTraitFunctionOverriddenByPropertyNoImpl() throws Exception { public void testTraitFunctionOverriddenByPropertyNoImpl() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/accidentalOverrides/traitFunctionOverriddenByPropertyNoImpl.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/accidentalOverrides/traitFunctionOverriddenByPropertyNoImpl.kt");
} }
@Test
@TestMetadata("traitFunctionOverriddenByProperty_ir.kt") @TestMetadata("traitFunctionOverriddenByProperty_ir.kt")
public void testTraitFunctionOverriddenByProperty_ir() throws Exception { public void testTraitFunctionOverriddenByProperty_ir() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/accidentalOverrides/traitFunctionOverriddenByProperty_ir.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/accidentalOverrides/traitFunctionOverriddenByProperty_ir.kt");
} }
@Test
@TestMetadata("traitPropertyOverriddenByFunctionNoImpl.kt") @TestMetadata("traitPropertyOverriddenByFunctionNoImpl.kt")
public void testTraitPropertyOverriddenByFunctionNoImpl() throws Exception { public void testTraitPropertyOverriddenByFunctionNoImpl() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/accidentalOverrides/traitPropertyOverriddenByFunctionNoImpl.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/accidentalOverrides/traitPropertyOverriddenByFunctionNoImpl.kt");
} }
@Test
@TestMetadata("traitPropertyOverriddenByFunction_ir.kt") @TestMetadata("traitPropertyOverriddenByFunction_ir.kt")
public void testTraitPropertyOverriddenByFunction_ir() throws Exception { public void testTraitPropertyOverriddenByFunction_ir() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/accidentalOverrides/traitPropertyOverriddenByFunction_ir.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/accidentalOverrides/traitPropertyOverriddenByFunction_ir.kt");
} }
} }
@Nested
@TestMetadata("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/bridges") @TestMetadata("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/bridges")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class) public class Bridges extends AbstractDiagnosticsTestWithJvmIrBackend {
public static class Bridges extends AbstractDiagnosticsTestWithJvmIrBackend { @Test
private void runTest(String testDataFilePath) throws Exception {
KotlinTestUtils.runTest(this::doTest, TargetBackend.JVM_IR, testDataFilePath);
}
public void testAllFilesPresentInBridges() throws Exception { public void testAllFilesPresentInBridges() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/bridges"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true); KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/bridges"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
} }
@Test
@TestMetadata("class_ir.kt") @TestMetadata("class_ir.kt")
public void testClass_ir() throws Exception { public void testClass_ir() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/bridges/class_ir.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/bridges/class_ir.kt");
} }
@Test
@TestMetadata("fakeOverrideTrait_ir.kt") @TestMetadata("fakeOverrideTrait_ir.kt")
public void testFakeOverrideTrait_ir() throws Exception { public void testFakeOverrideTrait_ir() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/bridges/fakeOverrideTrait_ir.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/bridges/fakeOverrideTrait_ir.kt");
} }
@Test
@TestMetadata("trait_ir.kt") @TestMetadata("trait_ir.kt")
public void testTrait_ir() throws Exception { public void testTrait_ir() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/bridges/trait_ir.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/bridges/trait_ir.kt");
} }
} }
@Nested
@TestMetadata("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure") @TestMetadata("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class) public class Erasure extends AbstractDiagnosticsTestWithJvmIrBackend {
public static class Erasure extends AbstractDiagnosticsTestWithJvmIrBackend { @Test
private void runTest(String testDataFilePath) throws Exception {
KotlinTestUtils.runTest(this::doTest, TargetBackend.JVM_IR, testDataFilePath);
}
public void testAllFilesPresentInErasure() throws Exception { public void testAllFilesPresentInErasure() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true); KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
} }
@Test
@TestMetadata("clashFromInterfaceAndSuperClass_ir.kt") @TestMetadata("clashFromInterfaceAndSuperClass_ir.kt")
public void testClashFromInterfaceAndSuperClass_ir() throws Exception { public void testClashFromInterfaceAndSuperClass_ir() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure/clashFromInterfaceAndSuperClass_ir.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure/clashFromInterfaceAndSuperClass_ir.kt");
} }
@Test
@TestMetadata("collections.kt") @TestMetadata("collections.kt")
public void testCollections() throws Exception { public void testCollections() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure/collections.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure/collections.kt");
} }
@Test
@TestMetadata("delegateToTwoTraits.kt") @TestMetadata("delegateToTwoTraits.kt")
public void testDelegateToTwoTraits() throws Exception { public void testDelegateToTwoTraits() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure/delegateToTwoTraits.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure/delegateToTwoTraits.kt");
} }
@Test
@TestMetadata("delegationAndOwnMethod.kt") @TestMetadata("delegationAndOwnMethod.kt")
public void testDelegationAndOwnMethod() throws Exception { public void testDelegationAndOwnMethod() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure/delegationAndOwnMethod.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure/delegationAndOwnMethod.kt");
} }
@Test
@TestMetadata("delegationToTraitImplAndOwnMethod.kt") @TestMetadata("delegationToTraitImplAndOwnMethod.kt")
public void testDelegationToTraitImplAndOwnMethod() throws Exception { public void testDelegationToTraitImplAndOwnMethod() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure/delegationToTraitImplAndOwnMethod.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure/delegationToTraitImplAndOwnMethod.kt");
} }
@Test
@TestMetadata("extensionProperties.kt") @TestMetadata("extensionProperties.kt")
public void testExtensionProperties() throws Exception { public void testExtensionProperties() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure/extensionProperties.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure/extensionProperties.kt");
} }
@Test
@TestMetadata("genericType.kt") @TestMetadata("genericType.kt")
public void testGenericType() throws Exception { public void testGenericType() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure/genericType.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure/genericType.kt");
} }
@Test
@TestMetadata("inheritFromTwoTraits_ir.kt") @TestMetadata("inheritFromTwoTraits_ir.kt")
public void testInheritFromTwoTraits_ir() throws Exception { public void testInheritFromTwoTraits_ir() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure/inheritFromTwoTraits_ir.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure/inheritFromTwoTraits_ir.kt");
} }
@Test
@TestMetadata("kotlinAndJavaCollections.kt") @TestMetadata("kotlinAndJavaCollections.kt")
public void testKotlinAndJavaCollections() throws Exception { public void testKotlinAndJavaCollections() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure/kotlinAndJavaCollections.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure/kotlinAndJavaCollections.kt");
} }
@Test
@TestMetadata("nullableType.kt") @TestMetadata("nullableType.kt")
public void testNullableType() throws Exception { public void testNullableType() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure/nullableType.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure/nullableType.kt");
} }
@Test
@TestMetadata("superTraitAndDelegationToTraitImpl_ir.kt") @TestMetadata("superTraitAndDelegationToTraitImpl_ir.kt")
public void testSuperTraitAndDelegationToTraitImpl_ir() throws Exception { public void testSuperTraitAndDelegationToTraitImpl_ir() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure/superTraitAndDelegationToTraitImpl_ir.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure/superTraitAndDelegationToTraitImpl_ir.kt");
} }
@Test
@TestMetadata("twoTraitsAndOwnFunction_ir.kt") @TestMetadata("twoTraitsAndOwnFunction_ir.kt")
public void testTwoTraitsAndOwnFunction_ir() throws Exception { public void testTwoTraitsAndOwnFunction_ir() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure/twoTraitsAndOwnFunction_ir.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure/twoTraitsAndOwnFunction_ir.kt");
} }
@Test
@TestMetadata("typeMappedToJava.kt") @TestMetadata("typeMappedToJava.kt")
public void testTypeMappedToJava() throws Exception { public void testTypeMappedToJava() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure/typeMappedToJava.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure/typeMappedToJava.kt");
} }
@Test
@TestMetadata("typeParameter.kt") @TestMetadata("typeParameter.kt")
public void testTypeParameter() throws Exception { public void testTypeParameter() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure/typeParameter.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure/typeParameter.kt");
} }
@Test
@TestMetadata("typeParameterWithBound.kt") @TestMetadata("typeParameterWithBound.kt")
public void testTypeParameterWithBound() throws Exception { public void testTypeParameterWithBound() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure/typeParameterWithBound.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure/typeParameterWithBound.kt");
} }
@Test
@TestMetadata("typeParameterWithTwoBounds.kt") @TestMetadata("typeParameterWithTwoBounds.kt")
public void testTypeParameterWithTwoBounds() throws Exception { public void testTypeParameterWithTwoBounds() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure/typeParameterWithTwoBounds.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure/typeParameterWithTwoBounds.kt");
} }
@Test
@TestMetadata("typeParameterWithTwoBoundsInWhere.kt") @TestMetadata("typeParameterWithTwoBoundsInWhere.kt")
public void testTypeParameterWithTwoBoundsInWhere() throws Exception { public void testTypeParameterWithTwoBoundsInWhere() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure/typeParameterWithTwoBoundsInWhere.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure/typeParameterWithTwoBoundsInWhere.kt");
} }
} }
@Nested
@TestMetadata("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/finalMembersFromBuiltIns") @TestMetadata("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/finalMembersFromBuiltIns")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class) public class FinalMembersFromBuiltIns extends AbstractDiagnosticsTestWithJvmIrBackend {
public static class FinalMembersFromBuiltIns extends AbstractDiagnosticsTestWithJvmIrBackend { @Test
private void runTest(String testDataFilePath) throws Exception {
KotlinTestUtils.runTest(this::doTest, TargetBackend.JVM_IR, testDataFilePath);
}
public void testAllFilesPresentInFinalMembersFromBuiltIns() throws Exception { public void testAllFilesPresentInFinalMembersFromBuiltIns() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/finalMembersFromBuiltIns"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true); KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/finalMembersFromBuiltIns"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
} }
@Test
@TestMetadata("enumMembers.kt") @TestMetadata("enumMembers.kt")
public void testEnumMembers() throws Exception { public void testEnumMembers() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/finalMembersFromBuiltIns/enumMembers.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/finalMembersFromBuiltIns/enumMembers.kt");
} }
@Test
@TestMetadata("waitNotifyGetClass_ir.kt") @TestMetadata("waitNotifyGetClass_ir.kt")
public void testWaitNotifyGetClass_ir() throws Exception { public void testWaitNotifyGetClass_ir() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/finalMembersFromBuiltIns/waitNotifyGetClass_ir.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/finalMembersFromBuiltIns/waitNotifyGetClass_ir.kt");
} }
} }
@Nested
@TestMetadata("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/functionAndProperty") @TestMetadata("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/functionAndProperty")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class) public class FunctionAndProperty extends AbstractDiagnosticsTestWithJvmIrBackend {
public static class FunctionAndProperty extends AbstractDiagnosticsTestWithJvmIrBackend { @Test
private void runTest(String testDataFilePath) throws Exception {
KotlinTestUtils.runTest(this::doTest, TargetBackend.JVM_IR, testDataFilePath);
}
public void testAllFilesPresentInFunctionAndProperty() throws Exception { public void testAllFilesPresentInFunctionAndProperty() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/functionAndProperty"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true); KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/functionAndProperty"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
} }
@Test
@TestMetadata("class.kt") @TestMetadata("class.kt")
public void testClass() throws Exception { public void testClass() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/functionAndProperty/class.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/functionAndProperty/class.kt");
} }
@Test
@TestMetadata("classObject.kt") @TestMetadata("classObject.kt")
public void testClassObject() throws Exception { public void testClassObject() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/functionAndProperty/classObject.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/functionAndProperty/classObject.kt");
} }
@Test
@TestMetadata("classPropertyInConstructor.kt") @TestMetadata("classPropertyInConstructor.kt")
public void testClassPropertyInConstructor() throws Exception { public void testClassPropertyInConstructor() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/functionAndProperty/classPropertyInConstructor.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/functionAndProperty/classPropertyInConstructor.kt");
} }
@Test
@TestMetadata("extensionFunctionAndNormalFunction.kt") @TestMetadata("extensionFunctionAndNormalFunction.kt")
public void testExtensionFunctionAndNormalFunction() throws Exception { public void testExtensionFunctionAndNormalFunction() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/functionAndProperty/extensionFunctionAndNormalFunction.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/functionAndProperty/extensionFunctionAndNormalFunction.kt");
} }
@Test
@TestMetadata("extensionPropertyAndFunction.kt") @TestMetadata("extensionPropertyAndFunction.kt")
public void testExtensionPropertyAndFunction() throws Exception { public void testExtensionPropertyAndFunction() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/functionAndProperty/extensionPropertyAndFunction.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/functionAndProperty/extensionPropertyAndFunction.kt");
} }
@Test
@TestMetadata("functionAndSetter.kt") @TestMetadata("functionAndSetter.kt")
public void testFunctionAndSetter() throws Exception { public void testFunctionAndSetter() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/functionAndProperty/functionAndSetter.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/functionAndProperty/functionAndSetter.kt");
} }
@Test
@TestMetadata("functionAndVar.kt") @TestMetadata("functionAndVar.kt")
public void testFunctionAndVar() throws Exception { public void testFunctionAndVar() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/functionAndProperty/functionAndVar.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/functionAndProperty/functionAndVar.kt");
} }
@Test
@TestMetadata("localClass.kt") @TestMetadata("localClass.kt")
public void testLocalClass() throws Exception { public void testLocalClass() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/functionAndProperty/localClass.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/functionAndProperty/localClass.kt");
} }
@Test
@TestMetadata("localClassInClass.kt") @TestMetadata("localClassInClass.kt")
public void testLocalClassInClass() throws Exception { public void testLocalClassInClass() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/functionAndProperty/localClassInClass.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/functionAndProperty/localClassInClass.kt");
} }
@Test
@TestMetadata("nestedClass.kt") @TestMetadata("nestedClass.kt")
public void testNestedClass() throws Exception { public void testNestedClass() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/functionAndProperty/nestedClass.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/functionAndProperty/nestedClass.kt");
} }
@Test
@TestMetadata("object.kt") @TestMetadata("object.kt")
public void testObject() throws Exception { public void testObject() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/functionAndProperty/object.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/functionAndProperty/object.kt");
} }
@Test
@TestMetadata("objectExpression.kt") @TestMetadata("objectExpression.kt")
public void testObjectExpression() throws Exception { public void testObjectExpression() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/functionAndProperty/objectExpression.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/functionAndProperty/objectExpression.kt");
} }
@Test
@TestMetadata("objectExpressionInConstructor.kt") @TestMetadata("objectExpressionInConstructor.kt")
public void testObjectExpressionInConstructor() throws Exception { public void testObjectExpressionInConstructor() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/functionAndProperty/objectExpressionInConstructor.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/functionAndProperty/objectExpressionInConstructor.kt");
} }
@Test
@TestMetadata("privateClassPropertyNoClash.kt") @TestMetadata("privateClassPropertyNoClash.kt")
public void testPrivateClassPropertyNoClash() throws Exception { public void testPrivateClassPropertyNoClash() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/functionAndProperty/privateClassPropertyNoClash.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/functionAndProperty/privateClassPropertyNoClash.kt");
} }
@Test
@TestMetadata("topLevel.kt") @TestMetadata("topLevel.kt")
public void testTopLevel() throws Exception { public void testTopLevel() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/functionAndProperty/topLevel.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/functionAndProperty/topLevel.kt");
} }
@Test
@TestMetadata("topLevelDifferentFiles.kt") @TestMetadata("topLevelDifferentFiles.kt")
public void testTopLevelDifferentFiles() throws Exception { public void testTopLevelDifferentFiles() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/functionAndProperty/topLevelDifferentFiles.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/functionAndProperty/topLevelDifferentFiles.kt");
} }
@Test
@TestMetadata("topLevelGetter.kt") @TestMetadata("topLevelGetter.kt")
public void testTopLevelGetter() throws Exception { public void testTopLevelGetter() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/functionAndProperty/topLevelGetter.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/functionAndProperty/topLevelGetter.kt");
} }
@Test
@TestMetadata("trait_ir.kt") @TestMetadata("trait_ir.kt")
public void testTrait_ir() throws Exception { public void testTrait_ir() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/functionAndProperty/trait_ir.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/functionAndProperty/trait_ir.kt");
} }
} }
@Nested
@TestMetadata("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/specialNames") @TestMetadata("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/specialNames")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class) public class SpecialNames extends AbstractDiagnosticsTestWithJvmIrBackend {
public static class SpecialNames extends AbstractDiagnosticsTestWithJvmIrBackend { @Test
private void runTest(String testDataFilePath) throws Exception {
KotlinTestUtils.runTest(this::doTest, TargetBackend.JVM_IR, testDataFilePath);
}
public void testAllFilesPresentInSpecialNames() throws Exception { public void testAllFilesPresentInSpecialNames() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/specialNames"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true); KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/specialNames"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
} }
@Test
@TestMetadata("classObjectCopiedField.kt") @TestMetadata("classObjectCopiedField.kt")
public void testClassObjectCopiedField() throws Exception { public void testClassObjectCopiedField() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/specialNames/classObjectCopiedField.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/specialNames/classObjectCopiedField.kt");
} }
@Test
@TestMetadata("classObjectCopiedFieldObject_ir.kt") @TestMetadata("classObjectCopiedFieldObject_ir.kt")
public void testClassObjectCopiedFieldObject_ir() throws Exception { public void testClassObjectCopiedFieldObject_ir() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/specialNames/classObjectCopiedFieldObject_ir.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/specialNames/classObjectCopiedFieldObject_ir.kt");
} }
@Test
@TestMetadata("classObject_ir.kt") @TestMetadata("classObject_ir.kt")
public void testClassObject_ir() throws Exception { public void testClassObject_ir() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/specialNames/classObject_ir.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/specialNames/classObject_ir.kt");
} }
@Test
@TestMetadata("dataClassCopy.kt") @TestMetadata("dataClassCopy.kt")
public void testDataClassCopy() throws Exception { public void testDataClassCopy() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/specialNames/dataClassCopy.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/specialNames/dataClassCopy.kt");
} }
@Test
@TestMetadata("defaults_ir.kt") @TestMetadata("defaults_ir.kt")
public void testDefaults_ir() throws Exception { public void testDefaults_ir() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/specialNames/defaults_ir.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/specialNames/defaults_ir.kt");
} }
@Test
@TestMetadata("delegationBy_ir.kt") @TestMetadata("delegationBy_ir.kt")
public void testDelegationBy_ir() throws Exception { public void testDelegationBy_ir() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/specialNames/delegationBy_ir.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/specialNames/delegationBy_ir.kt");
} }
@Test
@TestMetadata("enum.kt") @TestMetadata("enum.kt")
public void testEnum() throws Exception { public void testEnum() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/specialNames/enum.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/specialNames/enum.kt");
} }
@Test
@TestMetadata("innerClassField_ir.kt") @TestMetadata("innerClassField_ir.kt")
public void testInnerClassField_ir() throws Exception { public void testInnerClassField_ir() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/specialNames/innerClassField_ir.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/specialNames/innerClassField_ir.kt");
} }
@Test
@TestMetadata("instance_ir.kt") @TestMetadata("instance_ir.kt")
public void testInstance_ir() throws Exception { public void testInstance_ir() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/specialNames/instance_ir.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/specialNames/instance_ir.kt");
} }
@Test
@TestMetadata("propertyMetadataCache_ir.kt") @TestMetadata("propertyMetadataCache_ir.kt")
public void testPropertyMetadataCache_ir() throws Exception { public void testPropertyMetadataCache_ir() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/specialNames/propertyMetadataCache_ir.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/specialNames/propertyMetadataCache_ir.kt");
} }
} }
@Nested
@TestMetadata("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/statics") @TestMetadata("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/statics")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class) public class Statics extends AbstractDiagnosticsTestWithJvmIrBackend {
public static class Statics extends AbstractDiagnosticsTestWithJvmIrBackend { @Test
private void runTest(String testDataFilePath) throws Exception {
KotlinTestUtils.runTest(this::doTest, TargetBackend.JVM_IR, testDataFilePath);
}
public void testAllFilesPresentInStatics() throws Exception { public void testAllFilesPresentInStatics() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/statics"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true); KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/statics"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
} }
@Test
@TestMetadata("jkjk.kt") @TestMetadata("jkjk.kt")
public void testJkjk() throws Exception { public void testJkjk() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/statics/jkjk.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/statics/jkjk.kt");
} }
@Test
@TestMetadata("kotlinClassExtendsJavaClass.kt") @TestMetadata("kotlinClassExtendsJavaClass.kt")
public void testKotlinClassExtendsJavaClass() throws Exception { public void testKotlinClassExtendsJavaClass() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/statics/kotlinClassExtendsJavaClass.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/statics/kotlinClassExtendsJavaClass.kt");
} }
@Test
@TestMetadata("kotlinClassExtendsJavaClassExtendsJavaClass.kt") @TestMetadata("kotlinClassExtendsJavaClassExtendsJavaClass.kt")
public void testKotlinClassExtendsJavaClassExtendsJavaClass() throws Exception { public void testKotlinClassExtendsJavaClassExtendsJavaClass() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/statics/kotlinClassExtendsJavaClassExtendsJavaClass.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/statics/kotlinClassExtendsJavaClassExtendsJavaClass.kt");
} }
@Test
@TestMetadata("kotlinClassImplementsJavaInterface.kt") @TestMetadata("kotlinClassImplementsJavaInterface.kt")
public void testKotlinClassImplementsJavaInterface() throws Exception { public void testKotlinClassImplementsJavaInterface() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/statics/kotlinClassImplementsJavaInterface.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/statics/kotlinClassImplementsJavaInterface.kt");
} }
@Test
@TestMetadata("kotlinClassImplementsJavaInterfaceExtendsJavaInteface.kt") @TestMetadata("kotlinClassImplementsJavaInterfaceExtendsJavaInteface.kt")
public void testKotlinClassImplementsJavaInterfaceExtendsJavaInteface() throws Exception { public void testKotlinClassImplementsJavaInterfaceExtendsJavaInteface() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/statics/kotlinClassImplementsJavaInterfaceExtendsJavaInteface.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/statics/kotlinClassImplementsJavaInterfaceExtendsJavaInteface.kt");
} }
@Test
@TestMetadata("kotlinMembersVsJavaNonVisibleStatics.kt") @TestMetadata("kotlinMembersVsJavaNonVisibleStatics.kt")
public void testKotlinMembersVsJavaNonVisibleStatics() throws Exception { public void testKotlinMembersVsJavaNonVisibleStatics() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/statics/kotlinMembersVsJavaNonVisibleStatics.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/statics/kotlinMembersVsJavaNonVisibleStatics.kt");
} }
} }
@Nested
@TestMetadata("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/synthesized") @TestMetadata("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/synthesized")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class) public class Synthesized extends AbstractDiagnosticsTestWithJvmIrBackend {
public static class Synthesized extends AbstractDiagnosticsTestWithJvmIrBackend { @Test
private void runTest(String testDataFilePath) throws Exception {
KotlinTestUtils.runTest(this::doTest, TargetBackend.JVM_IR, testDataFilePath);
}
public void testAllFilesPresentInSynthesized() throws Exception { public void testAllFilesPresentInSynthesized() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/synthesized"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true); KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/synthesized"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
} }
@Test
@TestMetadata("enumValuesValueOf.kt") @TestMetadata("enumValuesValueOf.kt")
public void testEnumValuesValueOf() throws Exception { public void testEnumValuesValueOf() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/synthesized/enumValuesValueOf.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/synthesized/enumValuesValueOf.kt");
} }
} }
@Nested
@TestMetadata("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/traitImpl") @TestMetadata("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/traitImpl")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class) public class TraitImpl extends AbstractDiagnosticsTestWithJvmIrBackend {
public static class TraitImpl extends AbstractDiagnosticsTestWithJvmIrBackend { @Test
private void runTest(String testDataFilePath) throws Exception {
KotlinTestUtils.runTest(this::doTest, TargetBackend.JVM_IR, testDataFilePath);
}
public void testAllFilesPresentInTraitImpl() throws Exception { public void testAllFilesPresentInTraitImpl() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/traitImpl"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true); KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/traitImpl"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
} }
@Test
@TestMetadata("defaultVsNonDefault_ir.kt") @TestMetadata("defaultVsNonDefault_ir.kt")
public void testDefaultVsNonDefault_ir() throws Exception { public void testDefaultVsNonDefault_ir() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/traitImpl/defaultVsNonDefault_ir.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/traitImpl/defaultVsNonDefault_ir.kt");
} }
@Test
@TestMetadata("kt43611.kt") @TestMetadata("kt43611.kt")
public void testKt43611() throws Exception { public void testKt43611() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/traitImpl/kt43611.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/traitImpl/kt43611.kt");
} }
@Test
@TestMetadata("oneTrait_ir.kt") @TestMetadata("oneTrait_ir.kt")
public void testOneTrait_ir() throws Exception { public void testOneTrait_ir() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/traitImpl/oneTrait_ir.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/traitImpl/oneTrait_ir.kt");
} }
@Test
@TestMetadata("traitFunctionOverriddenByPropertyInTrait_ir.kt") @TestMetadata("traitFunctionOverriddenByPropertyInTrait_ir.kt")
public void testTraitFunctionOverriddenByPropertyInTrait_ir() throws Exception { public void testTraitFunctionOverriddenByPropertyInTrait_ir() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/traitImpl/traitFunctionOverriddenByPropertyInTrait_ir.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/traitImpl/traitFunctionOverriddenByPropertyInTrait_ir.kt");
} }
@Test
@TestMetadata("traitPropertyOverriddenByFunctionInTrait_ir.kt") @TestMetadata("traitPropertyOverriddenByFunctionInTrait_ir.kt")
public void testTraitPropertyOverriddenByFunctionInTrait_ir() throws Exception { public void testTraitPropertyOverriddenByFunctionInTrait_ir() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/traitImpl/traitPropertyOverriddenByFunctionInTrait_ir.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/traitImpl/traitPropertyOverriddenByFunctionInTrait_ir.kt");
} }
@Test
@TestMetadata("twoTraits_ir.kt") @TestMetadata("twoTraits_ir.kt")
public void testTwoTraits_ir() throws Exception { public void testTwoTraits_ir() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/traitImpl/twoTraits_ir.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/traitImpl/twoTraits_ir.kt");
@@ -585,23 +635,22 @@ public class DiagnosticsTestWithJvmIrBackendGenerated extends AbstractDiagnostic
} }
} }
@Nested
@TestMetadata("compiler/testData/diagnostics/testsWithJvmBackend/valueClasses") @TestMetadata("compiler/testData/diagnostics/testsWithJvmBackend/valueClasses")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class) public class ValueClasses extends AbstractDiagnosticsTestWithJvmIrBackend {
public static class ValueClasses extends AbstractDiagnosticsTestWithJvmIrBackend { @Test
private void runTest(String testDataFilePath) throws Exception {
KotlinTestUtils.runTest(this::doTest, TargetBackend.JVM_IR, testDataFilePath);
}
public void testAllFilesPresentInValueClasses() throws Exception { public void testAllFilesPresentInValueClasses() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/testsWithJvmBackend/valueClasses"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true); KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/testsWithJvmBackend/valueClasses"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_IR, true);
} }
@Test
@TestMetadata("cloneable.kt") @TestMetadata("cloneable.kt")
public void testCloneable() throws Exception { public void testCloneable() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/valueClasses/cloneable.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/valueClasses/cloneable.kt");
} }
@Test
@TestMetadata("cloneable.fir.kt") @TestMetadata("cloneable.fir.kt")
public void testCloneable_fir() throws Exception { public void testCloneable_fir() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/valueClasses/cloneable.fir.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/valueClasses/cloneable.fir.kt");
@@ -3,571 +3,619 @@
* 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.
*/ */
package org.jetbrains.kotlin.checkers; package org.jetbrains.kotlin.test.runners;
import com.intellij.testFramework.TestDataPath; import com.intellij.testFramework.TestDataPath;
import org.jetbrains.kotlin.test.JUnit3RunnerWithInners;
import org.jetbrains.kotlin.test.KotlinTestUtils;
import org.jetbrains.kotlin.test.util.KtTestUtil; import org.jetbrains.kotlin.test.util.KtTestUtil;
import org.jetbrains.kotlin.test.TargetBackend; import org.jetbrains.kotlin.test.TargetBackend;
import org.jetbrains.kotlin.test.TestMetadata; import org.jetbrains.kotlin.test.TestMetadata;
import org.junit.runner.RunWith; import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
import java.io.File; import java.io.File;
import java.util.regex.Pattern; import java.util.regex.Pattern;
/** This class is generated by {@link org.jetbrains.kotlin.generators.tests.TestsPackage}. DO NOT MODIFY MANUALLY */ /** This class is generated by {@link GenerateNewCompilerTests.kt}. DO NOT MODIFY MANUALLY */
@SuppressWarnings("all") @SuppressWarnings("all")
@TestMetadata("compiler/testData/diagnostics/testsWithJvmBackend") @TestMetadata("compiler/testData/diagnostics/testsWithJvmBackend")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class)
public class DiagnosticsTestWithOldJvmBackendGenerated extends AbstractDiagnosticsTestWithOldJvmBackend { public class DiagnosticsTestWithOldJvmBackendGenerated extends AbstractDiagnosticsTestWithOldJvmBackend {
private void runTest(String testDataFilePath) throws Exception { @Test
KotlinTestUtils.runTest(this::doTest, TargetBackend.JVM_OLD, testDataFilePath);
}
public void testAllFilesPresentInTestsWithJvmBackend() throws Exception { public void testAllFilesPresentInTestsWithJvmBackend() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/testsWithJvmBackend"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_OLD, true); KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/testsWithJvmBackend"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_OLD, true);
} }
@Test
@TestMetadata("indirectInlineCycle.kt") @TestMetadata("indirectInlineCycle.kt")
public void testIndirectInlineCycle() throws Exception { public void testIndirectInlineCycle() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/indirectInlineCycle.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/indirectInlineCycle.kt");
} }
@Test
@TestMetadata("inlineCycle.kt") @TestMetadata("inlineCycle.kt")
public void testInlineCycle() throws Exception { public void testInlineCycle() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/inlineCycle.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/inlineCycle.kt");
} }
@Test
@TestMetadata("multipleBigArityFunsImplemented.kt") @TestMetadata("multipleBigArityFunsImplemented.kt")
public void testMultipleBigArityFunsImplemented() throws Exception { public void testMultipleBigArityFunsImplemented() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/multipleBigArityFunsImplemented.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/multipleBigArityFunsImplemented.kt");
} }
@Test
@TestMetadata("suspendInlineCycle.kt") @TestMetadata("suspendInlineCycle.kt")
public void testSuspendInlineCycle() throws Exception { public void testSuspendInlineCycle() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/suspendInlineCycle.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/suspendInlineCycle.kt");
} }
@Nested
@TestMetadata("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature") @TestMetadata("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class) public class DuplicateJvmSignature extends AbstractDiagnosticsTestWithOldJvmBackend {
public static class DuplicateJvmSignature extends AbstractDiagnosticsTestWithOldJvmBackend { @Test
private void runTest(String testDataFilePath) throws Exception {
KotlinTestUtils.runTest(this::doTest, TargetBackend.JVM_OLD, testDataFilePath);
}
public void testAllFilesPresentInDuplicateJvmSignature() throws Exception { public void testAllFilesPresentInDuplicateJvmSignature() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_OLD, true); KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_OLD, true);
} }
@Test
@TestMetadata("caseInProperties.kt") @TestMetadata("caseInProperties.kt")
public void testCaseInProperties() throws Exception { public void testCaseInProperties() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/caseInProperties.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/caseInProperties.kt");
} }
@Test
@TestMetadata("changingNullabilityOfOrdinaryClassIsBinaryCompatibleChange.kt") @TestMetadata("changingNullabilityOfOrdinaryClassIsBinaryCompatibleChange.kt")
public void testChangingNullabilityOfOrdinaryClassIsBinaryCompatibleChange() throws Exception { public void testChangingNullabilityOfOrdinaryClassIsBinaryCompatibleChange() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/changingNullabilityOfOrdinaryClassIsBinaryCompatibleChange.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/changingNullabilityOfOrdinaryClassIsBinaryCompatibleChange.kt");
} }
@Test
@TestMetadata("vararg.kt") @TestMetadata("vararg.kt")
public void testVararg() throws Exception { public void testVararg() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/vararg.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/vararg.kt");
} }
@Nested
@TestMetadata("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/accidentalOverrides") @TestMetadata("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/accidentalOverrides")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class) public class AccidentalOverrides extends AbstractDiagnosticsTestWithOldJvmBackend {
public static class AccidentalOverrides extends AbstractDiagnosticsTestWithOldJvmBackend { @Test
private void runTest(String testDataFilePath) throws Exception {
KotlinTestUtils.runTest(this::doTest, TargetBackend.JVM_OLD, testDataFilePath);
}
@TestMetadata("accidentalOverrideFromGrandparent.kt") @TestMetadata("accidentalOverrideFromGrandparent.kt")
public void testAccidentalOverrideFromGrandparent() throws Exception { public void testAccidentalOverrideFromGrandparent() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/accidentalOverrides/accidentalOverrideFromGrandparent.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/accidentalOverrides/accidentalOverrideFromGrandparent.kt");
} }
@Test
public void testAllFilesPresentInAccidentalOverrides() throws Exception { public void testAllFilesPresentInAccidentalOverrides() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/accidentalOverrides"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_OLD, true); KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/accidentalOverrides"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_OLD, true);
} }
@Test
@TestMetadata("classFunctionOverriddenByProperty.kt") @TestMetadata("classFunctionOverriddenByProperty.kt")
public void testClassFunctionOverriddenByProperty() throws Exception { public void testClassFunctionOverriddenByProperty() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/accidentalOverrides/classFunctionOverriddenByProperty.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/accidentalOverrides/classFunctionOverriddenByProperty.kt");
} }
@Test
@TestMetadata("classFunctionOverriddenByPropertyInConstructor.kt") @TestMetadata("classFunctionOverriddenByPropertyInConstructor.kt")
public void testClassFunctionOverriddenByPropertyInConstructor() throws Exception { public void testClassFunctionOverriddenByPropertyInConstructor() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/accidentalOverrides/classFunctionOverriddenByPropertyInConstructor.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/accidentalOverrides/classFunctionOverriddenByPropertyInConstructor.kt");
} }
@Test
@TestMetadata("classFunctionOverriddenByPropertyNoGetter.kt") @TestMetadata("classFunctionOverriddenByPropertyNoGetter.kt")
public void testClassFunctionOverriddenByPropertyNoGetter() throws Exception { public void testClassFunctionOverriddenByPropertyNoGetter() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/accidentalOverrides/classFunctionOverriddenByPropertyNoGetter.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/accidentalOverrides/classFunctionOverriddenByPropertyNoGetter.kt");
} }
@Test
@TestMetadata("classPropertyOverriddenByFunction.kt") @TestMetadata("classPropertyOverriddenByFunction.kt")
public void testClassPropertyOverriddenByFunction() throws Exception { public void testClassPropertyOverriddenByFunction() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/accidentalOverrides/classPropertyOverriddenByFunction.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/accidentalOverrides/classPropertyOverriddenByFunction.kt");
} }
@Test
@TestMetadata("defaultFunction_old.kt") @TestMetadata("defaultFunction_old.kt")
public void testDefaultFunction_old() throws Exception { public void testDefaultFunction_old() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/accidentalOverrides/defaultFunction_old.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/accidentalOverrides/defaultFunction_old.kt");
} }
@Test
@TestMetadata("delegatedFunctionOverriddenByProperty_old.kt") @TestMetadata("delegatedFunctionOverriddenByProperty_old.kt")
public void testDelegatedFunctionOverriddenByProperty_old() throws Exception { public void testDelegatedFunctionOverriddenByProperty_old() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/accidentalOverrides/delegatedFunctionOverriddenByProperty_old.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/accidentalOverrides/delegatedFunctionOverriddenByProperty_old.kt");
} }
@Test
@TestMetadata("genericClassFunction.kt") @TestMetadata("genericClassFunction.kt")
public void testGenericClassFunction() throws Exception { public void testGenericClassFunction() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/accidentalOverrides/genericClassFunction.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/accidentalOverrides/genericClassFunction.kt");
} }
@Test
@TestMetadata("privateClassFunctionOverriddenByProperty.kt") @TestMetadata("privateClassFunctionOverriddenByProperty.kt")
public void testPrivateClassFunctionOverriddenByProperty() throws Exception { public void testPrivateClassFunctionOverriddenByProperty() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/accidentalOverrides/privateClassFunctionOverriddenByProperty.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/accidentalOverrides/privateClassFunctionOverriddenByProperty.kt");
} }
@Test
@TestMetadata("traitFunctionOverriddenByPropertyNoImpl.kt") @TestMetadata("traitFunctionOverriddenByPropertyNoImpl.kt")
public void testTraitFunctionOverriddenByPropertyNoImpl() throws Exception { public void testTraitFunctionOverriddenByPropertyNoImpl() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/accidentalOverrides/traitFunctionOverriddenByPropertyNoImpl.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/accidentalOverrides/traitFunctionOverriddenByPropertyNoImpl.kt");
} }
@Test
@TestMetadata("traitFunctionOverriddenByProperty_old.kt") @TestMetadata("traitFunctionOverriddenByProperty_old.kt")
public void testTraitFunctionOverriddenByProperty_old() throws Exception { public void testTraitFunctionOverriddenByProperty_old() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/accidentalOverrides/traitFunctionOverriddenByProperty_old.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/accidentalOverrides/traitFunctionOverriddenByProperty_old.kt");
} }
@Test
@TestMetadata("traitPropertyOverriddenByFunctionNoImpl.kt") @TestMetadata("traitPropertyOverriddenByFunctionNoImpl.kt")
public void testTraitPropertyOverriddenByFunctionNoImpl() throws Exception { public void testTraitPropertyOverriddenByFunctionNoImpl() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/accidentalOverrides/traitPropertyOverriddenByFunctionNoImpl.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/accidentalOverrides/traitPropertyOverriddenByFunctionNoImpl.kt");
} }
@Test
@TestMetadata("traitPropertyOverriddenByFunction_old.kt") @TestMetadata("traitPropertyOverriddenByFunction_old.kt")
public void testTraitPropertyOverriddenByFunction_old() throws Exception { public void testTraitPropertyOverriddenByFunction_old() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/accidentalOverrides/traitPropertyOverriddenByFunction_old.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/accidentalOverrides/traitPropertyOverriddenByFunction_old.kt");
} }
} }
@Nested
@TestMetadata("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/bridges") @TestMetadata("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/bridges")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class) public class Bridges extends AbstractDiagnosticsTestWithOldJvmBackend {
public static class Bridges extends AbstractDiagnosticsTestWithOldJvmBackend { @Test
private void runTest(String testDataFilePath) throws Exception {
KotlinTestUtils.runTest(this::doTest, TargetBackend.JVM_OLD, testDataFilePath);
}
public void testAllFilesPresentInBridges() throws Exception { public void testAllFilesPresentInBridges() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/bridges"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_OLD, true); KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/bridges"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_OLD, true);
} }
@Test
@TestMetadata("class_old.kt") @TestMetadata("class_old.kt")
public void testClass_old() throws Exception { public void testClass_old() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/bridges/class_old.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/bridges/class_old.kt");
} }
@Test
@TestMetadata("fakeOverrideTrait_old.kt") @TestMetadata("fakeOverrideTrait_old.kt")
public void testFakeOverrideTrait_old() throws Exception { public void testFakeOverrideTrait_old() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/bridges/fakeOverrideTrait_old.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/bridges/fakeOverrideTrait_old.kt");
} }
@Test
@TestMetadata("trait_old.kt") @TestMetadata("trait_old.kt")
public void testTrait_old() throws Exception { public void testTrait_old() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/bridges/trait_old.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/bridges/trait_old.kt");
} }
} }
@Nested
@TestMetadata("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure") @TestMetadata("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class) public class Erasure extends AbstractDiagnosticsTestWithOldJvmBackend {
public static class Erasure extends AbstractDiagnosticsTestWithOldJvmBackend { @Test
private void runTest(String testDataFilePath) throws Exception {
KotlinTestUtils.runTest(this::doTest, TargetBackend.JVM_OLD, testDataFilePath);
}
public void testAllFilesPresentInErasure() throws Exception { public void testAllFilesPresentInErasure() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_OLD, true); KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_OLD, true);
} }
@Test
@TestMetadata("clashFromInterfaceAndSuperClass_old.kt") @TestMetadata("clashFromInterfaceAndSuperClass_old.kt")
public void testClashFromInterfaceAndSuperClass_old() throws Exception { public void testClashFromInterfaceAndSuperClass_old() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure/clashFromInterfaceAndSuperClass_old.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure/clashFromInterfaceAndSuperClass_old.kt");
} }
@Test
@TestMetadata("collections.kt") @TestMetadata("collections.kt")
public void testCollections() throws Exception { public void testCollections() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure/collections.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure/collections.kt");
} }
@Test
@TestMetadata("delegateToTwoTraits.kt") @TestMetadata("delegateToTwoTraits.kt")
public void testDelegateToTwoTraits() throws Exception { public void testDelegateToTwoTraits() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure/delegateToTwoTraits.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure/delegateToTwoTraits.kt");
} }
@Test
@TestMetadata("delegationAndOwnMethod.kt") @TestMetadata("delegationAndOwnMethod.kt")
public void testDelegationAndOwnMethod() throws Exception { public void testDelegationAndOwnMethod() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure/delegationAndOwnMethod.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure/delegationAndOwnMethod.kt");
} }
@Test
@TestMetadata("delegationToTraitImplAndOwnMethod.kt") @TestMetadata("delegationToTraitImplAndOwnMethod.kt")
public void testDelegationToTraitImplAndOwnMethod() throws Exception { public void testDelegationToTraitImplAndOwnMethod() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure/delegationToTraitImplAndOwnMethod.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure/delegationToTraitImplAndOwnMethod.kt");
} }
@Test
@TestMetadata("extensionProperties.kt") @TestMetadata("extensionProperties.kt")
public void testExtensionProperties() throws Exception { public void testExtensionProperties() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure/extensionProperties.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure/extensionProperties.kt");
} }
@Test
@TestMetadata("genericType.kt") @TestMetadata("genericType.kt")
public void testGenericType() throws Exception { public void testGenericType() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure/genericType.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure/genericType.kt");
} }
@Test
@TestMetadata("inheritFromTwoTraits_old.kt") @TestMetadata("inheritFromTwoTraits_old.kt")
public void testInheritFromTwoTraits_old() throws Exception { public void testInheritFromTwoTraits_old() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure/inheritFromTwoTraits_old.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure/inheritFromTwoTraits_old.kt");
} }
@Test
@TestMetadata("kotlinAndJavaCollections.kt") @TestMetadata("kotlinAndJavaCollections.kt")
public void testKotlinAndJavaCollections() throws Exception { public void testKotlinAndJavaCollections() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure/kotlinAndJavaCollections.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure/kotlinAndJavaCollections.kt");
} }
@Test
@TestMetadata("nullableType.kt") @TestMetadata("nullableType.kt")
public void testNullableType() throws Exception { public void testNullableType() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure/nullableType.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure/nullableType.kt");
} }
@Test
@TestMetadata("superTraitAndDelegationToTraitImpl_old.kt") @TestMetadata("superTraitAndDelegationToTraitImpl_old.kt")
public void testSuperTraitAndDelegationToTraitImpl_old() throws Exception { public void testSuperTraitAndDelegationToTraitImpl_old() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure/superTraitAndDelegationToTraitImpl_old.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure/superTraitAndDelegationToTraitImpl_old.kt");
} }
@Test
@TestMetadata("twoTraitsAndOwnFunction_old.kt") @TestMetadata("twoTraitsAndOwnFunction_old.kt")
public void testTwoTraitsAndOwnFunction_old() throws Exception { public void testTwoTraitsAndOwnFunction_old() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure/twoTraitsAndOwnFunction_old.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure/twoTraitsAndOwnFunction_old.kt");
} }
@Test
@TestMetadata("typeMappedToJava.kt") @TestMetadata("typeMappedToJava.kt")
public void testTypeMappedToJava() throws Exception { public void testTypeMappedToJava() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure/typeMappedToJava.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure/typeMappedToJava.kt");
} }
@Test
@TestMetadata("typeParameter.kt") @TestMetadata("typeParameter.kt")
public void testTypeParameter() throws Exception { public void testTypeParameter() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure/typeParameter.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure/typeParameter.kt");
} }
@Test
@TestMetadata("typeParameterWithBound.kt") @TestMetadata("typeParameterWithBound.kt")
public void testTypeParameterWithBound() throws Exception { public void testTypeParameterWithBound() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure/typeParameterWithBound.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure/typeParameterWithBound.kt");
} }
@Test
@TestMetadata("typeParameterWithTwoBounds.kt") @TestMetadata("typeParameterWithTwoBounds.kt")
public void testTypeParameterWithTwoBounds() throws Exception { public void testTypeParameterWithTwoBounds() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure/typeParameterWithTwoBounds.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure/typeParameterWithTwoBounds.kt");
} }
@Test
@TestMetadata("typeParameterWithTwoBoundsInWhere.kt") @TestMetadata("typeParameterWithTwoBoundsInWhere.kt")
public void testTypeParameterWithTwoBoundsInWhere() throws Exception { public void testTypeParameterWithTwoBoundsInWhere() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure/typeParameterWithTwoBoundsInWhere.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/erasure/typeParameterWithTwoBoundsInWhere.kt");
} }
} }
@Nested
@TestMetadata("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/finalMembersFromBuiltIns") @TestMetadata("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/finalMembersFromBuiltIns")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class) public class FinalMembersFromBuiltIns extends AbstractDiagnosticsTestWithOldJvmBackend {
public static class FinalMembersFromBuiltIns extends AbstractDiagnosticsTestWithOldJvmBackend { @Test
private void runTest(String testDataFilePath) throws Exception {
KotlinTestUtils.runTest(this::doTest, TargetBackend.JVM_OLD, testDataFilePath);
}
public void testAllFilesPresentInFinalMembersFromBuiltIns() throws Exception { public void testAllFilesPresentInFinalMembersFromBuiltIns() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/finalMembersFromBuiltIns"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_OLD, true); KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/finalMembersFromBuiltIns"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_OLD, true);
} }
@Test
@TestMetadata("enumMembers.kt") @TestMetadata("enumMembers.kt")
public void testEnumMembers() throws Exception { public void testEnumMembers() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/finalMembersFromBuiltIns/enumMembers.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/finalMembersFromBuiltIns/enumMembers.kt");
} }
@Test
@TestMetadata("waitNotifyGetClass_old.kt") @TestMetadata("waitNotifyGetClass_old.kt")
public void testWaitNotifyGetClass_old() throws Exception { public void testWaitNotifyGetClass_old() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/finalMembersFromBuiltIns/waitNotifyGetClass_old.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/finalMembersFromBuiltIns/waitNotifyGetClass_old.kt");
} }
} }
@Nested
@TestMetadata("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/functionAndProperty") @TestMetadata("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/functionAndProperty")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class) public class FunctionAndProperty extends AbstractDiagnosticsTestWithOldJvmBackend {
public static class FunctionAndProperty extends AbstractDiagnosticsTestWithOldJvmBackend { @Test
private void runTest(String testDataFilePath) throws Exception {
KotlinTestUtils.runTest(this::doTest, TargetBackend.JVM_OLD, testDataFilePath);
}
public void testAllFilesPresentInFunctionAndProperty() throws Exception { public void testAllFilesPresentInFunctionAndProperty() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/functionAndProperty"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_OLD, true); KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/functionAndProperty"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_OLD, true);
} }
@Test
@TestMetadata("class.kt") @TestMetadata("class.kt")
public void testClass() throws Exception { public void testClass() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/functionAndProperty/class.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/functionAndProperty/class.kt");
} }
@Test
@TestMetadata("classObject.kt") @TestMetadata("classObject.kt")
public void testClassObject() throws Exception { public void testClassObject() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/functionAndProperty/classObject.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/functionAndProperty/classObject.kt");
} }
@Test
@TestMetadata("classPropertyInConstructor.kt") @TestMetadata("classPropertyInConstructor.kt")
public void testClassPropertyInConstructor() throws Exception { public void testClassPropertyInConstructor() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/functionAndProperty/classPropertyInConstructor.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/functionAndProperty/classPropertyInConstructor.kt");
} }
@Test
@TestMetadata("extensionFunctionAndNormalFunction.kt") @TestMetadata("extensionFunctionAndNormalFunction.kt")
public void testExtensionFunctionAndNormalFunction() throws Exception { public void testExtensionFunctionAndNormalFunction() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/functionAndProperty/extensionFunctionAndNormalFunction.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/functionAndProperty/extensionFunctionAndNormalFunction.kt");
} }
@Test
@TestMetadata("extensionPropertyAndFunction.kt") @TestMetadata("extensionPropertyAndFunction.kt")
public void testExtensionPropertyAndFunction() throws Exception { public void testExtensionPropertyAndFunction() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/functionAndProperty/extensionPropertyAndFunction.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/functionAndProperty/extensionPropertyAndFunction.kt");
} }
@Test
@TestMetadata("functionAndSetter.kt") @TestMetadata("functionAndSetter.kt")
public void testFunctionAndSetter() throws Exception { public void testFunctionAndSetter() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/functionAndProperty/functionAndSetter.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/functionAndProperty/functionAndSetter.kt");
} }
@Test
@TestMetadata("functionAndVar.kt") @TestMetadata("functionAndVar.kt")
public void testFunctionAndVar() throws Exception { public void testFunctionAndVar() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/functionAndProperty/functionAndVar.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/functionAndProperty/functionAndVar.kt");
} }
@Test
@TestMetadata("localClass.kt") @TestMetadata("localClass.kt")
public void testLocalClass() throws Exception { public void testLocalClass() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/functionAndProperty/localClass.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/functionAndProperty/localClass.kt");
} }
@Test
@TestMetadata("localClassInClass.kt") @TestMetadata("localClassInClass.kt")
public void testLocalClassInClass() throws Exception { public void testLocalClassInClass() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/functionAndProperty/localClassInClass.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/functionAndProperty/localClassInClass.kt");
} }
@Test
@TestMetadata("nestedClass.kt") @TestMetadata("nestedClass.kt")
public void testNestedClass() throws Exception { public void testNestedClass() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/functionAndProperty/nestedClass.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/functionAndProperty/nestedClass.kt");
} }
@Test
@TestMetadata("object.kt") @TestMetadata("object.kt")
public void testObject() throws Exception { public void testObject() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/functionAndProperty/object.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/functionAndProperty/object.kt");
} }
@Test
@TestMetadata("objectExpression.kt") @TestMetadata("objectExpression.kt")
public void testObjectExpression() throws Exception { public void testObjectExpression() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/functionAndProperty/objectExpression.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/functionAndProperty/objectExpression.kt");
} }
@Test
@TestMetadata("objectExpressionInConstructor.kt") @TestMetadata("objectExpressionInConstructor.kt")
public void testObjectExpressionInConstructor() throws Exception { public void testObjectExpressionInConstructor() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/functionAndProperty/objectExpressionInConstructor.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/functionAndProperty/objectExpressionInConstructor.kt");
} }
@Test
@TestMetadata("privateClassPropertyNoClash.kt") @TestMetadata("privateClassPropertyNoClash.kt")
public void testPrivateClassPropertyNoClash() throws Exception { public void testPrivateClassPropertyNoClash() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/functionAndProperty/privateClassPropertyNoClash.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/functionAndProperty/privateClassPropertyNoClash.kt");
} }
@Test
@TestMetadata("topLevel.kt") @TestMetadata("topLevel.kt")
public void testTopLevel() throws Exception { public void testTopLevel() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/functionAndProperty/topLevel.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/functionAndProperty/topLevel.kt");
} }
@Test
@TestMetadata("topLevelDifferentFiles.kt") @TestMetadata("topLevelDifferentFiles.kt")
public void testTopLevelDifferentFiles() throws Exception { public void testTopLevelDifferentFiles() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/functionAndProperty/topLevelDifferentFiles.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/functionAndProperty/topLevelDifferentFiles.kt");
} }
@Test
@TestMetadata("topLevelGetter.kt") @TestMetadata("topLevelGetter.kt")
public void testTopLevelGetter() throws Exception { public void testTopLevelGetter() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/functionAndProperty/topLevelGetter.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/functionAndProperty/topLevelGetter.kt");
} }
@Test
@TestMetadata("trait_old.kt") @TestMetadata("trait_old.kt")
public void testTrait_old() throws Exception { public void testTrait_old() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/functionAndProperty/trait_old.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/functionAndProperty/trait_old.kt");
} }
} }
@Nested
@TestMetadata("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/specialNames") @TestMetadata("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/specialNames")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class) public class SpecialNames extends AbstractDiagnosticsTestWithOldJvmBackend {
public static class SpecialNames extends AbstractDiagnosticsTestWithOldJvmBackend { @Test
private void runTest(String testDataFilePath) throws Exception {
KotlinTestUtils.runTest(this::doTest, TargetBackend.JVM_OLD, testDataFilePath);
}
public void testAllFilesPresentInSpecialNames() throws Exception { public void testAllFilesPresentInSpecialNames() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/specialNames"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_OLD, true); KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/specialNames"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_OLD, true);
} }
@Test
@TestMetadata("classObjectCopiedField.kt") @TestMetadata("classObjectCopiedField.kt")
public void testClassObjectCopiedField() throws Exception { public void testClassObjectCopiedField() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/specialNames/classObjectCopiedField.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/specialNames/classObjectCopiedField.kt");
} }
@Test
@TestMetadata("classObjectCopiedFieldObject_old.kt") @TestMetadata("classObjectCopiedFieldObject_old.kt")
public void testClassObjectCopiedFieldObject_old() throws Exception { public void testClassObjectCopiedFieldObject_old() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/specialNames/classObjectCopiedFieldObject_old.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/specialNames/classObjectCopiedFieldObject_old.kt");
} }
@Test
@TestMetadata("classObject_old.kt") @TestMetadata("classObject_old.kt")
public void testClassObject_old() throws Exception { public void testClassObject_old() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/specialNames/classObject_old.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/specialNames/classObject_old.kt");
} }
@Test
@TestMetadata("dataClassCopy.kt") @TestMetadata("dataClassCopy.kt")
public void testDataClassCopy() throws Exception { public void testDataClassCopy() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/specialNames/dataClassCopy.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/specialNames/dataClassCopy.kt");
} }
@Test
@TestMetadata("defaults_old.kt") @TestMetadata("defaults_old.kt")
public void testDefaults_old() throws Exception { public void testDefaults_old() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/specialNames/defaults_old.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/specialNames/defaults_old.kt");
} }
@Test
@TestMetadata("delegationBy_old.kt") @TestMetadata("delegationBy_old.kt")
public void testDelegationBy_old() throws Exception { public void testDelegationBy_old() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/specialNames/delegationBy_old.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/specialNames/delegationBy_old.kt");
} }
@Test
@TestMetadata("enum.kt") @TestMetadata("enum.kt")
public void testEnum() throws Exception { public void testEnum() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/specialNames/enum.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/specialNames/enum.kt");
} }
@Test
@TestMetadata("innerClassField_old.kt") @TestMetadata("innerClassField_old.kt")
public void testInnerClassField_old() throws Exception { public void testInnerClassField_old() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/specialNames/innerClassField_old.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/specialNames/innerClassField_old.kt");
} }
@Test
@TestMetadata("instance_old.kt") @TestMetadata("instance_old.kt")
public void testInstance_old() throws Exception { public void testInstance_old() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/specialNames/instance_old.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/specialNames/instance_old.kt");
} }
@Test
@TestMetadata("propertyMetadataCache_old.kt") @TestMetadata("propertyMetadataCache_old.kt")
public void testPropertyMetadataCache_old() throws Exception { public void testPropertyMetadataCache_old() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/specialNames/propertyMetadataCache_old.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/specialNames/propertyMetadataCache_old.kt");
} }
} }
@Nested
@TestMetadata("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/statics") @TestMetadata("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/statics")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class) public class Statics extends AbstractDiagnosticsTestWithOldJvmBackend {
public static class Statics extends AbstractDiagnosticsTestWithOldJvmBackend { @Test
private void runTest(String testDataFilePath) throws Exception {
KotlinTestUtils.runTest(this::doTest, TargetBackend.JVM_OLD, testDataFilePath);
}
public void testAllFilesPresentInStatics() throws Exception { public void testAllFilesPresentInStatics() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/statics"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_OLD, true); KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/statics"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_OLD, true);
} }
@Test
@TestMetadata("jkjk.kt") @TestMetadata("jkjk.kt")
public void testJkjk() throws Exception { public void testJkjk() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/statics/jkjk.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/statics/jkjk.kt");
} }
@Test
@TestMetadata("kotlinClassExtendsJavaClass.kt") @TestMetadata("kotlinClassExtendsJavaClass.kt")
public void testKotlinClassExtendsJavaClass() throws Exception { public void testKotlinClassExtendsJavaClass() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/statics/kotlinClassExtendsJavaClass.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/statics/kotlinClassExtendsJavaClass.kt");
} }
@Test
@TestMetadata("kotlinClassExtendsJavaClassExtendsJavaClass.kt") @TestMetadata("kotlinClassExtendsJavaClassExtendsJavaClass.kt")
public void testKotlinClassExtendsJavaClassExtendsJavaClass() throws Exception { public void testKotlinClassExtendsJavaClassExtendsJavaClass() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/statics/kotlinClassExtendsJavaClassExtendsJavaClass.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/statics/kotlinClassExtendsJavaClassExtendsJavaClass.kt");
} }
@Test
@TestMetadata("kotlinClassImplementsJavaInterface.kt") @TestMetadata("kotlinClassImplementsJavaInterface.kt")
public void testKotlinClassImplementsJavaInterface() throws Exception { public void testKotlinClassImplementsJavaInterface() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/statics/kotlinClassImplementsJavaInterface.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/statics/kotlinClassImplementsJavaInterface.kt");
} }
@Test
@TestMetadata("kotlinClassImplementsJavaInterfaceExtendsJavaInteface.kt") @TestMetadata("kotlinClassImplementsJavaInterfaceExtendsJavaInteface.kt")
public void testKotlinClassImplementsJavaInterfaceExtendsJavaInteface() throws Exception { public void testKotlinClassImplementsJavaInterfaceExtendsJavaInteface() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/statics/kotlinClassImplementsJavaInterfaceExtendsJavaInteface.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/statics/kotlinClassImplementsJavaInterfaceExtendsJavaInteface.kt");
} }
@Test
@TestMetadata("kotlinMembersVsJavaNonVisibleStatics.kt") @TestMetadata("kotlinMembersVsJavaNonVisibleStatics.kt")
public void testKotlinMembersVsJavaNonVisibleStatics() throws Exception { public void testKotlinMembersVsJavaNonVisibleStatics() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/statics/kotlinMembersVsJavaNonVisibleStatics.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/statics/kotlinMembersVsJavaNonVisibleStatics.kt");
} }
} }
@Nested
@TestMetadata("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/synthesized") @TestMetadata("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/synthesized")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class) public class Synthesized extends AbstractDiagnosticsTestWithOldJvmBackend {
public static class Synthesized extends AbstractDiagnosticsTestWithOldJvmBackend { @Test
private void runTest(String testDataFilePath) throws Exception {
KotlinTestUtils.runTest(this::doTest, TargetBackend.JVM_OLD, testDataFilePath);
}
public void testAllFilesPresentInSynthesized() throws Exception { public void testAllFilesPresentInSynthesized() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/synthesized"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_OLD, true); KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/synthesized"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_OLD, true);
} }
@Test
@TestMetadata("enumValuesValueOf.kt") @TestMetadata("enumValuesValueOf.kt")
public void testEnumValuesValueOf() throws Exception { public void testEnumValuesValueOf() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/synthesized/enumValuesValueOf.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/synthesized/enumValuesValueOf.kt");
} }
} }
@Nested
@TestMetadata("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/traitImpl") @TestMetadata("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/traitImpl")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class) public class TraitImpl extends AbstractDiagnosticsTestWithOldJvmBackend {
public static class TraitImpl extends AbstractDiagnosticsTestWithOldJvmBackend { @Test
private void runTest(String testDataFilePath) throws Exception {
KotlinTestUtils.runTest(this::doTest, TargetBackend.JVM_OLD, testDataFilePath);
}
public void testAllFilesPresentInTraitImpl() throws Exception { public void testAllFilesPresentInTraitImpl() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/traitImpl"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_OLD, true); KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/traitImpl"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_OLD, true);
} }
@Test
@TestMetadata("defaultVsNonDefault_old.kt") @TestMetadata("defaultVsNonDefault_old.kt")
public void testDefaultVsNonDefault_old() throws Exception { public void testDefaultVsNonDefault_old() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/traitImpl/defaultVsNonDefault_old.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/traitImpl/defaultVsNonDefault_old.kt");
} }
@Test
@TestMetadata("kt43611.kt") @TestMetadata("kt43611.kt")
public void testKt43611() throws Exception { public void testKt43611() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/traitImpl/kt43611.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/traitImpl/kt43611.kt");
} }
@Test
@TestMetadata("oneTrait_old.kt") @TestMetadata("oneTrait_old.kt")
public void testOneTrait_old() throws Exception { public void testOneTrait_old() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/traitImpl/oneTrait_old.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/traitImpl/oneTrait_old.kt");
} }
@Test
@TestMetadata("traitFunctionOverriddenByPropertyInTrait_old.kt") @TestMetadata("traitFunctionOverriddenByPropertyInTrait_old.kt")
public void testTraitFunctionOverriddenByPropertyInTrait_old() throws Exception { public void testTraitFunctionOverriddenByPropertyInTrait_old() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/traitImpl/traitFunctionOverriddenByPropertyInTrait_old.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/traitImpl/traitFunctionOverriddenByPropertyInTrait_old.kt");
} }
@Test
@TestMetadata("traitPropertyOverriddenByFunctionInTrait_old.kt") @TestMetadata("traitPropertyOverriddenByFunctionInTrait_old.kt")
public void testTraitPropertyOverriddenByFunctionInTrait_old() throws Exception { public void testTraitPropertyOverriddenByFunctionInTrait_old() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/traitImpl/traitPropertyOverriddenByFunctionInTrait_old.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/traitImpl/traitPropertyOverriddenByFunctionInTrait_old.kt");
} }
@Test
@TestMetadata("twoTraits_old.kt") @TestMetadata("twoTraits_old.kt")
public void testTwoTraits_old() throws Exception { public void testTwoTraits_old() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/traitImpl/twoTraits_old.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/duplicateJvmSignature/traitImpl/twoTraits_old.kt");
@@ -575,23 +623,22 @@ public class DiagnosticsTestWithOldJvmBackendGenerated extends AbstractDiagnosti
} }
} }
@Nested
@TestMetadata("compiler/testData/diagnostics/testsWithJvmBackend/valueClasses") @TestMetadata("compiler/testData/diagnostics/testsWithJvmBackend/valueClasses")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class) public class ValueClasses extends AbstractDiagnosticsTestWithOldJvmBackend {
public static class ValueClasses extends AbstractDiagnosticsTestWithOldJvmBackend { @Test
private void runTest(String testDataFilePath) throws Exception {
KotlinTestUtils.runTest(this::doTest, TargetBackend.JVM_OLD, testDataFilePath);
}
public void testAllFilesPresentInValueClasses() throws Exception { public void testAllFilesPresentInValueClasses() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/testsWithJvmBackend/valueClasses"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_OLD, true); KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/testsWithJvmBackend/valueClasses"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JVM_OLD, true);
} }
@Test
@TestMetadata("cloneable.kt") @TestMetadata("cloneable.kt")
public void testCloneable() throws Exception { public void testCloneable() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/valueClasses/cloneable.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/valueClasses/cloneable.kt");
} }
@Test
@TestMetadata("cloneable.fir.kt") @TestMetadata("cloneable.fir.kt")
public void testCloneable_fir() throws Exception { public void testCloneable_fir() throws Exception {
runTest("compiler/testData/diagnostics/testsWithJvmBackend/valueClasses/cloneable.fir.kt"); runTest("compiler/testData/diagnostics/testsWithJvmBackend/valueClasses/cloneable.fir.kt");
@@ -0,0 +1,35 @@
/*
* Copyright 2010-2020 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.backend.handlers
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.test.frontend.classic.handlers.ClassicDiagnosticReporter
import org.jetbrains.kotlin.test.frontend.classic.handlers.withNewInferenceModeEnabled
import org.jetbrains.kotlin.test.model.BinaryArtifacts
import org.jetbrains.kotlin.test.model.FrontendKinds
import org.jetbrains.kotlin.test.model.TestModule
import org.jetbrains.kotlin.test.services.TestServices
import org.jetbrains.kotlin.test.services.dependencyProvider
class JvmBackendDiagnosticsHandler(testServices: TestServices) : JvmBinaryArtifactHandler(testServices) {
private val reporter = ClassicDiagnosticReporter(testServices)
override fun processModule(module: TestModule, info: BinaryArtifacts.Jvm) {
val testFileToKtFileMap = testServices.dependencyProvider.getArtifact(module, FrontendKinds.ClassicFrontend).ktFiles
val ktFileToTestFileMap = testFileToKtFileMap.entries.map { it.value to it.key }.toMap()
val generationState = info.classFileFactory.generationState
val diagnostics = generationState.collectedExtraJvmDiagnostics.all()
val configuration = reporter.createConfiguration(module)
val withNewInferenceModeEnabled = testServices.withNewInferenceModeEnabled()
for (diagnostic in diagnostics) {
val ktFile = diagnostic.psiFile as? KtFile ?: continue
val testFile = ktFileToTestFileMap[ktFile] ?: continue
reporter.reportDiagnostic(diagnostic, module, testFile, configuration, withNewInferenceModeEnabled)
}
}
override fun processAfterAllModules(someAssertionWasFailed: Boolean) {}
}
@@ -5,6 +5,7 @@
package org.jetbrains.kotlin.test.directives package org.jetbrains.kotlin.test.directives
import org.jetbrains.kotlin.test.backend.handlers.JvmBackendDiagnosticsHandler
import org.jetbrains.kotlin.test.directives.JvmEnvironmentConfigurationDirectives.USE_JAVAC import org.jetbrains.kotlin.test.directives.JvmEnvironmentConfigurationDirectives.USE_JAVAC
import org.jetbrains.kotlin.test.directives.model.SimpleDirectivesContainer import org.jetbrains.kotlin.test.directives.model.SimpleDirectivesContainer
@@ -46,4 +47,12 @@ object DiagnosticsDirectives : SimpleDirectivesContainer() {
Render debug info about dynamic calls Render debug info about dynamic calls
""".trimIndent() """.trimIndent()
) )
val REPORT_JVM_DIAGNOSTICS_ON_FRONTEND by directive(
description = """
Collect additional jvm specific diagnostics on frontend
Note that this directive is not needed if ${JvmBackendDiagnosticsHandler::class}
is enabled in test
""".trimIndent()
)
} }
@@ -0,0 +1,150 @@
/*
* Copyright 2010-2020 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.frontend.classic.handlers
import org.jetbrains.kotlin.checkers.utils.DiagnosticsRenderingConfiguration
import org.jetbrains.kotlin.codeMetaInfo.model.CodeMetaInfo
import org.jetbrains.kotlin.codeMetaInfo.model.DiagnosticCodeMetaInfo
import org.jetbrains.kotlin.codeMetaInfo.model.ParsedCodeMetaInfo
import org.jetbrains.kotlin.config.JVMConfigurationKeys
import org.jetbrains.kotlin.config.LanguageFeature
import org.jetbrains.kotlin.diagnostics.Diagnostic
import org.jetbrains.kotlin.platform.isCommon
import org.jetbrains.kotlin.platform.js.isJs
import org.jetbrains.kotlin.platform.jvm.isJvm
import org.jetbrains.kotlin.platform.konan.isNative
import org.jetbrains.kotlin.test.directives.DiagnosticsDirectives
import org.jetbrains.kotlin.test.model.TestFile
import org.jetbrains.kotlin.test.model.TestModule
import org.jetbrains.kotlin.test.services.*
class ClassicDiagnosticReporter(private val testServices: TestServices) {
private val globalMetadataInfoHandler: GlobalMetadataInfoHandler
get() = testServices.globalMetadataInfoHandler
fun createConfiguration(module: TestModule): DiagnosticsRenderingConfiguration {
return DiagnosticsRenderingConfiguration(
platform = null,
withNewInference = module.languageVersionSettings.supportsFeature(LanguageFeature.NewInference),
languageVersionSettings = module.languageVersionSettings,
skipDebugInfoDiagnostics = testServices.compilerConfigurationProvider.getCompilerConfiguration(module)
.getBoolean(JVMConfigurationKeys.IR)
)
}
fun reportDiagnostic(
diagnostic: Diagnostic,
module: TestModule,
file: TestFile,
configuration: DiagnosticsRenderingConfiguration,
withNewInferenceModeEnabled: Boolean
) {
globalMetadataInfoHandler.addMetadataInfosForFile(
file,
diagnostic.toMetaInfo(
module,
file,
configuration.withNewInference,
withNewInferenceModeEnabled
)
)
}
private fun Diagnostic.toMetaInfo(
module: TestModule,
file: TestFile,
newInferenceEnabled: Boolean,
withNewInferenceModeEnabled: Boolean
): List<DiagnosticCodeMetaInfo> = textRanges.map { range ->
val metaInfo = DiagnosticCodeMetaInfo(range, ClassicMetaInfoUtils.renderDiagnosticNoArgs, this)
if (withNewInferenceModeEnabled) {
metaInfo.attributes += if (newInferenceEnabled) OldNewInferenceMetaInfoProcessor.NI else OldNewInferenceMetaInfoProcessor.OI
}
if (file !in module.files) {
val targetPlatform = module.targetPlatform
metaInfo.attributes += when {
targetPlatform.isJvm() -> "JVM"
targetPlatform.isJs() -> "JS"
targetPlatform.isNative() -> "NATIVE"
targetPlatform.isCommon() -> "COMMON"
else -> error("Should not be here")
}
}
val existing = globalMetadataInfoHandler.getExistingMetaInfosForActualMetadata(file, metaInfo)
if (existing.any { it.description != null }) {
metaInfo.replaceRenderConfiguration(ClassicMetaInfoUtils.renderDiagnosticWithArgs)
}
metaInfo
}
}
class OldNewInferenceMetaInfoProcessor(testServices: TestServices) : AdditionalMetaInfoProcessor(testServices) {
companion object {
const val OI = "OI"
const val NI = "NI"
}
override fun processMetaInfos(module: TestModule, file: TestFile) {
/*
* Rules for OI/NI attribute:
* ┌──────────┬──────┬──────┬──────────┐
* │ │ OI │ NI │ nothing │ <- reported
* ├──────────┼──────┼──────┼──────────┤
* │ nothing │ both │ both │ nothing │
* │ OI │ OI │ both │ OI │
* │ NI │ both │ NI │ NI │
* │ both │ both │ both │ opposite │ <- OI if NI enabled in test and vice versa
* └──────────┴──────┴──────┴──────────┘
* ^ existed
*/
if (!testServices.withNewInferenceModeEnabled()) return
val newInferenceEnabled = module.languageVersionSettings.supportsFeature(LanguageFeature.NewInference)
val (currentFlag, otherFlag) = when (newInferenceEnabled) {
true -> NI to OI
false -> OI to NI
}
val matchedExistedInfos = mutableSetOf<ParsedCodeMetaInfo>()
val matchedReportedInfos = mutableSetOf<CodeMetaInfo>()
val allReportedInfos = globalMetadataInfoHandler.getReportedMetaInfosForFile(file)
for ((_, reportedInfos) in allReportedInfos.groupBy { Triple(it.start, it.end, it.tag) }) {
val existedInfos = globalMetadataInfoHandler.getExistingMetaInfosForActualMetadata(file, reportedInfos.first())
for ((reportedInfo, existedInfo) in reportedInfos.zip(existedInfos)) {
matchedExistedInfos += existedInfo
matchedReportedInfos += reportedInfo
if (currentFlag !in reportedInfo.attributes) continue
if (currentFlag in existedInfo.attributes) continue
reportedInfo.attributes.remove(currentFlag)
}
}
if (allReportedInfos.size != matchedReportedInfos.size) {
for (info in allReportedInfos) {
if (info !in matchedReportedInfos) {
info.attributes.remove(currentFlag)
}
}
}
val allExistedInfos = globalMetadataInfoHandler.getExistingMetaInfosForFile(file)
if (allExistedInfos.size == matchedExistedInfos.size) return
val newInfos = allExistedInfos.mapNotNull {
if (it in matchedExistedInfos) return@mapNotNull null
if (currentFlag in it.attributes) return@mapNotNull null
it.copy().apply {
if (otherFlag !in attributes) {
attributes += otherFlag
}
}
}
globalMetadataInfoHandler.addMetadataInfosForFile(file, newInfos)
}
}
fun TestServices.withNewInferenceModeEnabled(): Boolean {
return DiagnosticsDirectives.WITH_NEW_INFERENCE in moduleStructure.allDirectives
}
@@ -11,18 +11,10 @@ import org.jetbrains.kotlin.asJava.getJvmSignatureDiagnostics
import org.jetbrains.kotlin.checkers.diagnostics.SyntaxErrorDiagnostic import org.jetbrains.kotlin.checkers.diagnostics.SyntaxErrorDiagnostic
import org.jetbrains.kotlin.checkers.utils.CheckerTestUtil import org.jetbrains.kotlin.checkers.utils.CheckerTestUtil
import org.jetbrains.kotlin.checkers.utils.DiagnosticsRenderingConfiguration import org.jetbrains.kotlin.checkers.utils.DiagnosticsRenderingConfiguration
import org.jetbrains.kotlin.codeMetaInfo.model.CodeMetaInfo
import org.jetbrains.kotlin.codeMetaInfo.model.DiagnosticCodeMetaInfo
import org.jetbrains.kotlin.codeMetaInfo.model.ParsedCodeMetaInfo
import org.jetbrains.kotlin.config.JVMConfigurationKeys
import org.jetbrains.kotlin.config.LanguageFeature
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
import org.jetbrains.kotlin.diagnostics.Diagnostic import org.jetbrains.kotlin.diagnostics.Diagnostic
import org.jetbrains.kotlin.diagnostics.Errors import org.jetbrains.kotlin.diagnostics.Errors
import org.jetbrains.kotlin.platform.isCommon
import org.jetbrains.kotlin.platform.js.isJs
import org.jetbrains.kotlin.platform.jvm.isJvm import org.jetbrains.kotlin.platform.jvm.isJvm
import org.jetbrains.kotlin.platform.konan.isNative
import org.jetbrains.kotlin.psi.KtDeclaration import org.jetbrains.kotlin.psi.KtDeclaration
import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.resolve.AnalyzingUtils import org.jetbrains.kotlin.resolve.AnalyzingUtils
@@ -30,6 +22,7 @@ import org.jetbrains.kotlin.resolve.calls.smartcasts.DataFlowValueFactoryImpl
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.DiagnosticsDirectives.MARK_DYNAMIC_CALLS import org.jetbrains.kotlin.test.directives.DiagnosticsDirectives.MARK_DYNAMIC_CALLS
import org.jetbrains.kotlin.test.directives.DiagnosticsDirectives.REPORT_JVM_DIAGNOSTICS_ON_FRONTEND
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.frontend.classic.ClassicFrontendOutputArtifact import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontendOutputArtifact
@@ -51,6 +44,8 @@ class ClassicDiagnosticsHandler(testServices: TestServices) : ClassicFrontendAna
private val diagnosticsService: DiagnosticsService private val diagnosticsService: DiagnosticsService
get() = testServices.diagnosticsService get() = testServices.diagnosticsService
private val reporter = ClassicDiagnosticReporter(testServices)
@OptIn(ExperimentalStdlibApi::class) @OptIn(ExperimentalStdlibApi::class)
override fun processModule(module: TestModule, info: ClassicFrontendOutputArtifact) { override fun processModule(module: TestModule, info: ClassicFrontendOutputArtifact) {
var allDiagnostics = info.analysisResult.bindingContext.diagnostics + computeJvmSignatureDiagnostics(info) var allDiagnostics = info.analysisResult.bindingContext.diagnostics + computeJvmSignatureDiagnostics(info)
@@ -62,42 +57,18 @@ class ClassicDiagnosticsHandler(testServices: TestServices) : ClassicFrontendAna
} }
val diagnosticsPerFile = allDiagnostics.groupBy { it.psiFile } val diagnosticsPerFile = allDiagnostics.groupBy { it.psiFile }
val withNewInferenceModeEnabled = testServices.withNewInferenceModeEnabled() val withNewInferenceModeEnabled = testServices.withNewInferenceModeEnabled()
val configuration = reporter.createConfiguration(module)
val configuration = DiagnosticsRenderingConfiguration(
platform = null,
withNewInference = info.languageVersionSettings.supportsFeature(LanguageFeature.NewInference),
languageVersionSettings = info.languageVersionSettings,
skipDebugInfoDiagnostics = testServices.compilerConfigurationProvider.getCompilerConfiguration(module)
.getBoolean(JVMConfigurationKeys.IR)
)
for ((file, ktFile) in info.ktFiles) { for ((file, ktFile) in info.ktFiles) {
val diagnostics = diagnosticsPerFile[ktFile] ?: emptyList() val diagnostics = diagnosticsPerFile[ktFile] ?: emptyList()
for (diagnostic in diagnostics) { for (diagnostic in diagnostics) {
if (!diagnostic.isValid) continue if (!diagnostic.isValid) continue
if (!diagnosticsService.shouldRenderDiagnostic(module, diagnostic.factory.name)) continue if (!diagnosticsService.shouldRenderDiagnostic(module, diagnostic.factory.name)) continue
globalMetadataInfoHandler.addMetadataInfosForFile( reporter.reportDiagnostic(diagnostic, module, file, configuration, withNewInferenceModeEnabled)
file,
diagnostic.toMetaInfo(
module,
file,
configuration.withNewInference,
withNewInferenceModeEnabled
)
)
} }
for (errorElement in AnalyzingUtils.getSyntaxErrorRanges(ktFile)) { for (errorElement in AnalyzingUtils.getSyntaxErrorRanges(ktFile)) {
globalMetadataInfoHandler.addMetadataInfosForFile( reporter.reportDiagnostic(SyntaxErrorDiagnostic(errorElement), module, file, configuration, withNewInferenceModeEnabled)
file,
SyntaxErrorDiagnostic(errorElement).toMetaInfo(
module,
file,
configuration.withNewInference,
withNewInferenceModeEnabled
)
)
} }
processDebugInfoDiagnostics(configuration, module, file, ktFile, info, withNewInferenceModeEnabled) processDebugInfoDiagnostics(configuration, module, file, ktFile, info, withNewInferenceModeEnabled)
} }
@@ -105,6 +76,7 @@ class ClassicDiagnosticsHandler(testServices: TestServices) : ClassicFrontendAna
private fun computeJvmSignatureDiagnostics(info: ClassicFrontendOutputArtifact): Set<Diagnostic> { private fun computeJvmSignatureDiagnostics(info: ClassicFrontendOutputArtifact): Set<Diagnostic> {
if (testServices.moduleStructure.modules.any { !it.targetPlatform.isJvm() }) return emptySet() if (testServices.moduleStructure.modules.any { !it.targetPlatform.isJvm() }) return emptySet()
if (REPORT_JVM_DIAGNOSTICS_ON_FRONTEND !in testServices.moduleStructure.allDirectives) return emptySet()
val bindingContext = info.analysisResult.bindingContext val bindingContext = info.analysisResult.bindingContext
val project = info.project val project = info.project
val jvmSignatureDiagnostics = HashSet<Diagnostic>() val jvmSignatureDiagnostics = HashSet<Diagnostic>()
@@ -122,32 +94,6 @@ class ClassicDiagnosticsHandler(testServices: TestServices) : ClassicFrontendAna
return jvmSignatureDiagnostics return jvmSignatureDiagnostics
} }
private fun Diagnostic.toMetaInfo(
module: TestModule,
file: TestFile,
newInferenceEnabled: Boolean,
withNewInferenceModeEnabled: Boolean
): List<DiagnosticCodeMetaInfo> = textRanges.map { range ->
val metaInfo = DiagnosticCodeMetaInfo(range, ClassicMetaInfoUtils.renderDiagnosticNoArgs, this)
if (withNewInferenceModeEnabled) {
metaInfo.attributes += if (newInferenceEnabled) OldNewInferenceMetaInfoProcessor.NI else OldNewInferenceMetaInfoProcessor.OI
}
if (file !in module.files) {
val targetPlatform = module.targetPlatform
metaInfo.attributes += when {
targetPlatform.isJvm() -> "JVM"
targetPlatform.isJs() -> "JS"
targetPlatform.isNative() -> "NATIVE"
targetPlatform.isCommon() -> "COMMON"
else -> error("Should not be here")
}
}
val existing = globalMetadataInfoHandler.getExistingMetaInfosForActualMetadata(file, metaInfo)
if (existing.any { it.description != null }) {
metaInfo.replaceRenderConfiguration(ClassicMetaInfoUtils.renderDiagnosticWithArgs)
}
metaInfo
}
private fun processDebugInfoDiagnostics( private fun processDebugInfoDiagnostics(
configuration: DiagnosticsRenderingConfiguration, configuration: DiagnosticsRenderingConfiguration,
@@ -175,79 +121,9 @@ class ClassicDiagnosticsHandler(testServices: TestServices) : ClassicFrontendAna
) )
debugAnnotations.mapNotNull { debugAnnotation -> debugAnnotations.mapNotNull { debugAnnotation ->
if (!diagnosticsService.shouldRenderDiagnostic(module, debugAnnotation.diagnostic.factory.name)) return@mapNotNull null if (!diagnosticsService.shouldRenderDiagnostic(module, debugAnnotation.diagnostic.factory.name)) return@mapNotNull null
globalMetadataInfoHandler.addMetadataInfosForFile( reporter.reportDiagnostic(debugAnnotation.diagnostic, module, file, configuration, withNewInferenceModeEnabled)
file,
debugAnnotation.diagnostic.toMetaInfo(module, file, configuration.withNewInference, withNewInferenceModeEnabled)
)
} }
} }
override fun processAfterAllModules(someAssertionWasFailed: Boolean) {} override fun processAfterAllModules(someAssertionWasFailed: Boolean) {}
} }
class OldNewInferenceMetaInfoProcessor(testServices: TestServices) : AdditionalMetaInfoProcessor(testServices) {
companion object {
const val OI = "OI"
const val NI = "NI"
}
override fun processMetaInfos(module: TestModule, file: TestFile) {
/*
* Rules for OI/NI attribute:
* ┌──────────┬──────┬──────┬──────────┐
* │ │ OI │ NI │ nothing │ <- reported
* ├──────────┼──────┼──────┼──────────┤
* │ nothing │ both │ both │ nothing │
* │ OI │ OI │ both │ OI │
* │ NI │ both │ NI │ NI │
* │ both │ both │ both │ opposite │ <- OI if NI enabled in test and vice versa
* └──────────┴──────┴──────┴──────────┘
* ^ existed
*/
if (!testServices.withNewInferenceModeEnabled()) return
val newInferenceEnabled = module.languageVersionSettings.supportsFeature(LanguageFeature.NewInference)
val (currentFlag, otherFlag) = when (newInferenceEnabled) {
true -> NI to OI
false -> OI to NI
}
val matchedExistedInfos = mutableSetOf<ParsedCodeMetaInfo>()
val matchedReportedInfos = mutableSetOf<CodeMetaInfo>()
val allReportedInfos = globalMetadataInfoHandler.getReportedMetaInfosForFile(file)
for ((_, reportedInfos) in allReportedInfos.groupBy { Triple(it.start, it.end, it.tag) }) {
val existedInfos = globalMetadataInfoHandler.getExistingMetaInfosForActualMetadata(file, reportedInfos.first())
for ((reportedInfo, existedInfo) in reportedInfos.zip(existedInfos)) {
matchedExistedInfos += existedInfo
matchedReportedInfos += reportedInfo
if (currentFlag !in reportedInfo.attributes) continue
if (currentFlag in existedInfo.attributes) continue
reportedInfo.attributes.remove(currentFlag)
}
}
if (allReportedInfos.size != matchedReportedInfos.size) {
for (info in allReportedInfos) {
if (info !in matchedReportedInfos) {
info.attributes.remove(currentFlag)
}
}
}
val allExistedInfos = globalMetadataInfoHandler.getExistingMetaInfosForFile(file)
if (allExistedInfos.size == matchedExistedInfos.size) return
val newInfos = allExistedInfos.mapNotNull {
if (it in matchedExistedInfos) return@mapNotNull null
if (currentFlag in it.attributes) return@mapNotNull null
it.copy().apply {
if (otherFlag !in attributes) {
attributes += otherFlag
}
}
}
globalMetadataInfoHandler.addMetadataInfosForFile(file, newInfos)
}
}
private fun TestServices.withNewInferenceModeEnabled(): Boolean {
return DiagnosticsDirectives.WITH_NEW_INFERENCE in moduleStructure.allDirectives
}
@@ -6,6 +6,7 @@
package org.jetbrains.kotlin.test.generators package org.jetbrains.kotlin.test.generators
import org.jetbrains.kotlin.generators.util.TestGeneratorUtil import org.jetbrains.kotlin.generators.util.TestGeneratorUtil
import org.jetbrains.kotlin.test.TargetBackend
import org.jetbrains.kotlin.test.runners.* import org.jetbrains.kotlin.test.runners.*
fun main(args: Array<String>) { fun main(args: Array<String>) {
@@ -30,6 +31,14 @@ fun main(args: Array<String>) {
testClass<AbstractDiagnosticsTestWithJsStdLib> { testClass<AbstractDiagnosticsTestWithJsStdLib> {
model("diagnostics/testsWithJsStdLib") model("diagnostics/testsWithJsStdLib")
} }
testClass<AbstractDiagnosticsTestWithOldJvmBackend> {
model("diagnostics/testsWithJvmBackend", targetBackend = TargetBackend.JVM_OLD)
}
testClass<AbstractDiagnosticsTestWithJvmIrBackend> {
model("diagnostics/testsWithJvmBackend", targetBackend = TargetBackend.JVM_IR)
}
} }
testGroup("compiler/tests-common-new/tests-gen", "compiler/fir/analysis-tests/testData") { testGroup("compiler/tests-common-new/tests-gen", "compiler/fir/analysis-tests/testData") {
@@ -8,6 +8,8 @@ package org.jetbrains.kotlin.test.runners
import org.jetbrains.kotlin.config.ExplicitApiMode import org.jetbrains.kotlin.config.ExplicitApiMode
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
import org.jetbrains.kotlin.test.directives.DiagnosticsDirectives
import org.jetbrains.kotlin.test.directives.DiagnosticsDirectives.REPORT_JVM_DIAGNOSTICS_ON_FRONTEND
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_STDLIB import org.jetbrains.kotlin.test.directives.JvmEnvironmentConfigurationDirectives.WITH_STDLIB
import org.jetbrains.kotlin.test.directives.LanguageSettingsDirectives.EXPLICIT_API_MODE import org.jetbrains.kotlin.test.directives.LanguageSettingsDirectives.EXPLICIT_API_MODE
@@ -36,6 +38,7 @@ abstract class AbstractDiagnosticTest : AbstractKotlinCompilerTest() {
defaultDirectives { defaultDirectives {
+USE_PSI_CLASS_FILES_READING +USE_PSI_CLASS_FILES_READING
+REPORT_JVM_DIAGNOSTICS_ON_FRONTEND
} }
enableMetaInfoHandler() enableMetaInfoHandler()
@@ -0,0 +1,84 @@
/*
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.test.runners
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
import org.jetbrains.kotlin.test.backend.classic.ClassicJvmBackendFacade
import org.jetbrains.kotlin.test.backend.handlers.JvmBackendDiagnosticsHandler
import org.jetbrains.kotlin.test.backend.ir.JvmIrBackendFacade
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
import org.jetbrains.kotlin.test.directives.JvmEnvironmentConfigurationDirectives
import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontend2ClassicBackendConverter
import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontend2IrConverter
import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontendFacade
import org.jetbrains.kotlin.test.frontend.classic.handlers.ClassicDiagnosticsHandler
import org.jetbrains.kotlin.test.frontend.classic.handlers.DeclarationsDumpHandler
import org.jetbrains.kotlin.test.frontend.classic.handlers.OldNewInferenceMetaInfoProcessor
import org.jetbrains.kotlin.test.model.BackendKind
import org.jetbrains.kotlin.test.model.BackendKinds
import org.jetbrains.kotlin.test.model.DependencyKind
import org.jetbrains.kotlin.test.model.FrontendKinds
import org.jetbrains.kotlin.test.services.AdditionalDiagnosticsSourceFilesProvider
import org.jetbrains.kotlin.test.services.CoroutineHelpersSourceFilesProvider
import org.jetbrains.kotlin.test.services.configuration.JvmEnvironmentConfigurator
abstract class AbstractDiagnosticsTestWithJvmBackend : AbstractKotlinCompilerTest() {
abstract val targetBackendKind: BackendKind<*>
override fun TestConfigurationBuilder.configuration() {
globalDefaults {
frontend = FrontendKinds.ClassicFrontend
backend = targetBackendKind
targetPlatform = JvmPlatforms.defaultJvmPlatform
dependencyKind = DependencyKind.Binary
}
defaultDirectives {
+JvmEnvironmentConfigurationDirectives.USE_PSI_CLASS_FILES_READING
}
enableMetaInfoHandler()
useConfigurators(::JvmEnvironmentConfigurator)
useMetaInfoProcessors(::OldNewInferenceMetaInfoProcessor)
useAdditionalSourceProviders(
::AdditionalDiagnosticsSourceFilesProvider,
::CoroutineHelpersSourceFilesProvider,
)
useFrontendFacades(::ClassicFrontendFacade)
useFrontendHandlers(
::DeclarationsDumpHandler,
::ClassicDiagnosticsHandler,
)
useFrontend2BackendConverters(
::ClassicFrontend2ClassicBackendConverter,
::ClassicFrontend2IrConverter
)
useBackendFacades(
::ClassicJvmBackendFacade,
::JvmIrBackendFacade
)
useArtifactsHandlers(
::JvmBackendDiagnosticsHandler
)
}
}
abstract class AbstractDiagnosticsTestWithOldJvmBackend : AbstractDiagnosticsTestWithJvmBackend() {
override val targetBackendKind: BackendKind<*>
get() = BackendKinds.ClassicBackend
}
abstract class AbstractDiagnosticsTestWithJvmIrBackend : AbstractDiagnosticsTestWithJvmBackend() {
override val targetBackendKind: BackendKind<*>
get() = BackendKinds.IrBackend
}
@@ -1,53 +0,0 @@
/*
* Copyright 2010-2020 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.checkers
import org.jetbrains.kotlin.analyzer.AnalysisResult
import org.jetbrains.kotlin.codegen.ClassBuilderFactories
import org.jetbrains.kotlin.codegen.GenerationUtils
import org.jetbrains.kotlin.config.CompilerConfiguration
import org.jetbrains.kotlin.config.JVMConfigurationKeys
import org.jetbrains.kotlin.config.JvmTarget
import org.jetbrains.kotlin.config.LanguageVersionSettings
import org.jetbrains.kotlin.context.ModuleContext
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.resolve.BindingTrace
abstract class AbstractDiagnosticsTestWithJvmBackend : AbstractDiagnosticsTest() {
override fun analyzeModuleContents(
moduleContext: ModuleContext,
files: List<KtFile>,
moduleTrace: BindingTrace,
languageVersionSettings: LanguageVersionSettings,
separateModules: Boolean,
jvmTarget: JvmTarget
): AnalysisResult {
val analysisResult =
super.analyzeModuleContents(
moduleContext, files, moduleTrace, languageVersionSettings, separateModules, jvmTarget
)
val generationState =
GenerationUtils.generateFiles(project, files, environment.configuration, ClassBuilderFactories.TEST, analysisResult)
for (diagnostic in generationState.collectedExtraJvmDiagnostics.all()) {
moduleTrace.report(diagnostic)
}
return analysisResult
}
// DO NOT use FE-based diagnostics for JVM signature conflict
override fun shouldSkipJvmSignatureDiagnostics(groupedByModule: Map<TestModule?, List<TestFile>>): Boolean = true
}
abstract class AbstractDiagnosticsTestWithOldJvmBackend : AbstractDiagnosticsTestWithJvmBackend()
abstract class AbstractDiagnosticsTestWithJvmIrBackend : AbstractDiagnosticsTestWithJvmBackend() {
override fun updateConfiguration(configuration: CompilerConfiguration) {
configuration.put(JVMConfigurationKeys.IR, true)
}
}
@@ -79,14 +79,6 @@ fun main(args: Array<String>) {
model("diagnostics/testsWithJava15") model("diagnostics/testsWithJava15")
} }
testClass<AbstractDiagnosticsTestWithOldJvmBackend> {
model("diagnostics/testsWithJvmBackend", targetBackend = TargetBackend.JVM_OLD)
}
testClass<AbstractDiagnosticsTestWithJvmIrBackend> {
model("diagnostics/testsWithJvmBackend", targetBackend = TargetBackend.JVM_IR)
}
testClass<AbstractMultiPlatformIntegrationTest> { testClass<AbstractMultiPlatformIntegrationTest> {
model("multiplatform", extension = null, recursive = true, excludeParentDirs = true) model("multiplatform", extension = null, recursive = true, excludeParentDirs = true)
} }