[K/JS] Enable partial linkage tests

This commit is contained in:
Alexander Korepanov
2023-05-11 12:37:01 +00:00
committed by Space Team
parent 302623c388
commit 1920bbde07
7 changed files with 288 additions and 69 deletions
@@ -23,6 +23,7 @@ import org.jetbrains.kotlin.ir.util.*
import org.jetbrains.kotlin.ir.visitors.transformChildrenVoid import org.jetbrains.kotlin.ir.visitors.transformChildrenVoid
import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.utils.addToStdlib.runIf import org.jetbrains.kotlin.utils.addToStdlib.runIf
import org.jetbrains.kotlin.utils.addToStdlib.runUnless
import org.jetbrains.kotlin.utils.memoryOptimizedFilterNot import org.jetbrains.kotlin.utils.memoryOptimizedFilterNot
import org.jetbrains.kotlin.utils.memoryOptimizedMap import org.jetbrains.kotlin.utils.memoryOptimizedMap
import org.jetbrains.kotlin.utils.memoryOptimizedPlus import org.jetbrains.kotlin.utils.memoryOptimizedPlus
@@ -137,8 +138,12 @@ class ES6ConstructorLowering(val context: JsIrBackendContext) : DeclarationTrans
factory.body = context.irFactory.createBlockBody(UNDEFINED_OFFSET, UNDEFINED_OFFSET) { factory.body = context.irFactory.createBlockBody(UNDEFINED_OFFSET, UNDEFINED_OFFSET) {
val bodyCopy = constructor.body?.deepCopyWithSymbols(factory) ?: return@createBlockBody val bodyCopy = constructor.body?.deepCopyWithSymbols(factory) ?: return@createBlockBody
val self = bodyCopy.replaceSuperCallsAndThisUsages(irClass, factory, constructor) val self = bodyCopy.replaceSuperCallsAndThisUsages(irClass, factory, constructor)
statements.addAll(bodyCopy.statements) statements.addAll(bodyCopy.statements)
statements.add(JsIrBuilder.buildReturn(factory.symbol, JsIrBuilder.buildGetValue(self), irClass.defaultType))
if (self != null) {
statements.add(JsIrBuilder.buildReturn(factory.symbol, JsIrBuilder.buildGetValue(self), irClass.defaultType))
}
} }
constructorFactory = factory constructorFactory = factory
@@ -169,8 +174,9 @@ class ES6ConstructorLowering(val context: JsIrBackendContext) : DeclarationTrans
irClass: IrClass, irClass: IrClass,
constructorReplacement: IrSimpleFunction, constructorReplacement: IrSimpleFunction,
currentConstructor: IrConstructor, currentConstructor: IrConstructor,
): IrValueSymbol { ): IrValueSymbol? {
var generatedThisValueSymbol: IrValueSymbol? = null var generatedThisValueSymbol: IrValueSymbol? = null
var gotLinkageErrorInsteadOfSuperCall = false
val selfParameterSymbol = irClass.thisReceiver!!.symbol val selfParameterSymbol = irClass.thisReceiver!!.symbol
val boxParameterSymbol = constructorReplacement.boxParameter val boxParameterSymbol = constructorReplacement.boxParameter
@@ -194,6 +200,13 @@ class ES6ConstructorLowering(val context: JsIrBackendContext) : DeclarationTrans
} }
} }
override fun visitCall(expression: IrCall): IrExpression {
if (expression.symbol == context.irBuiltIns.linkageErrorSymbol) {
gotLinkageErrorInsteadOfSuperCall = true
}
return super.visitCall(expression)
}
override fun visitDelegatingConstructorCall(expression: IrDelegatingConstructorCall): IrExpression { override fun visitDelegatingConstructorCall(expression: IrDelegatingConstructorCall): IrExpression {
val constructor = expression.symbol.owner val constructor = expression.symbol.owner
@@ -244,7 +257,9 @@ class ES6ConstructorLowering(val context: JsIrBackendContext) : DeclarationTrans
} }
}) })
return generatedThisValueSymbol!! return generatedThisValueSymbol ?: runUnless<IrValueSymbol?>(gotLinkageErrorInsteadOfSuperCall) {
error("Expect to have either super call or partial linkage stub inside constructor")
}
} }
private fun IrClass.getCurrentConstructorReference(currentFactoryFunction: IrSimpleFunction): IrExpression { private fun IrClass.getCurrentConstructorReference(currentFactoryFunction: IrSimpleFunction): IrExpression {
@@ -38,22 +38,6 @@ fun main(args: Array<String>) {
} }
} }
testGroup("js/js.tests/tests-gen", "compiler/testData") {
testClass<AbstractJsPartialLinkageWithICTestCase> {
model("klibABI/", pattern = "^([^_](.+))$", targetBackend = TargetBackend.JS_IR, recursive = false)
}
}
testGroup("js/js.tests/tests-gen", "compiler/testData") {
testClass<AbstractJsPartialLinkageNoICTestCase> {
model("klibABI/", pattern = "^([^_](.+))$", targetBackend = TargetBackend.JS_IR, recursive = false)
}
}
testGroup("js/js.tests/tests-gen", "compiler/testData") {
testClass<AbstractFirJsPartialLinkageNoICTestCase> {
model("klibABI/", pattern = "^([^_](.+))$", targetBackend = TargetBackend.JS_IR, recursive = false)
}
}
testGroup("js/js.tests/tests-gen", "compiler/testData/binaryCompatibility", testRunnerMethodName = "runTest0") { testGroup("js/js.tests/tests-gen", "compiler/testData/binaryCompatibility", testRunnerMethodName = "runTest0") {
testClass<AbstractClassicJsKlibEvolutionTest> { testClass<AbstractClassicJsKlibEvolutionTest> {
model("klibEvolution", targetBackend = TargetBackend.JS_IR) model("klibEvolution", targetBackend = TargetBackend.JS_IR)
@@ -65,6 +49,27 @@ fun main(args: Array<String>) {
} }
generateTestGroupSuiteWithJUnit5(args) { generateTestGroupSuiteWithJUnit5(args) {
testGroup("js/js.tests/tests-gen", "compiler/testData") {
testClass<AbstractJsPartialLinkageWithICTestCase> {
model("klibABI/", pattern = "^([^_](.+))$", targetBackend = TargetBackend.JS_IR, recursive = false)
}
}
testGroup("js/js.tests/tests-gen", "compiler/testData") {
testClass<AbstractJsPartialLinkageNoICTestCase> {
model("klibABI/", pattern = "^([^_](.+))$", targetBackend = TargetBackend.JS_IR, recursive = false)
}
}
testGroup("js/js.tests/tests-gen", "compiler/testData") {
testClass<AbstractJsPartialLinkageNoICES6TestCase> {
model("klibABI/", pattern = "^([^_](.+))$", targetBackend = TargetBackend.JS_IR_ES6, recursive = false)
}
}
testGroup("js/js.tests/tests-gen", "compiler/testData") {
testClass<AbstractFirJsPartialLinkageNoICTestCase> {
model("klibABI/", pattern = "^([^_](.+))$", targetBackend = TargetBackend.JS_IR, recursive = false)
}
}
testGroup("js/js.tests/tests-gen", "js/js.translator/testData") { testGroup("js/js.tests/tests-gen", "js/js.translator/testData") {
testClass<AbstractJsIrInvalidationTest> { testClass<AbstractJsIrInvalidationTest> {
model("incremental/invalidation/", pattern = "^([^_](.+))$", targetBackend = TargetBackend.JS_IR, recursive = false) model("incremental/invalidation/", pattern = "^([^_](.+))$", targetBackend = TargetBackend.JS_IR, recursive = false)
@@ -10,6 +10,7 @@ import com.intellij.openapi.vfs.VirtualFileManager
import com.intellij.openapi.vfs.local.CoreLocalFileSystem import com.intellij.openapi.vfs.local.CoreLocalFileSystem
import com.intellij.psi.PsiManager import com.intellij.psi.PsiManager
import com.intellij.psi.SingleRootFileViewProvider import com.intellij.psi.SingleRootFileViewProvider
import com.intellij.testFramework.TestDataFile
import org.jetbrains.kotlin.backend.common.phaser.PhaseConfig import org.jetbrains.kotlin.backend.common.phaser.PhaseConfig
import org.jetbrains.kotlin.cli.common.messages.AnalyzerWithCompilerReport import org.jetbrains.kotlin.cli.common.messages.AnalyzerWithCompilerReport
import org.jetbrains.kotlin.cli.common.messages.MessageRenderer import org.jetbrains.kotlin.cli.common.messages.MessageRenderer
@@ -49,7 +50,8 @@ import org.jetbrains.kotlin.konan.file.ZipFileSystemCacheableAccessor
import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.serialization.js.ModuleKind import org.jetbrains.kotlin.serialization.js.ModuleKind
import org.jetbrains.kotlin.test.testFramework.KtUsefulTestCase import org.jetbrains.kotlin.test.utils.TestDisposable
import org.junit.jupiter.api.AfterEach
import java.io.ByteArrayOutputStream import java.io.ByteArrayOutputStream
import java.io.File import java.io.File
import java.io.PrintStream import java.io.PrintStream
@@ -57,36 +59,28 @@ import java.nio.charset.Charset
import kotlin.io.path.createTempDirectory import kotlin.io.path.createTempDirectory
abstract class AbstractJsPartialLinkageNoICTestCase : AbstractJsPartialLinkageTestCase(CompilerType.K1_NO_IC) abstract class AbstractJsPartialLinkageNoICTestCase : AbstractJsPartialLinkageTestCase(CompilerType.K1_NO_IC)
abstract class AbstractJsPartialLinkageNoICES6TestCase : AbstractJsPartialLinkageTestCase(CompilerType.K1_NO_IC_WITH_ES6)
abstract class AbstractJsPartialLinkageWithICTestCase : AbstractJsPartialLinkageTestCase(CompilerType.K1_WITH_IC) abstract class AbstractJsPartialLinkageWithICTestCase : AbstractJsPartialLinkageTestCase(CompilerType.K1_WITH_IC)
abstract class AbstractFirJsPartialLinkageNoICTestCase : AbstractJsPartialLinkageTestCase(CompilerType.K2_NO_IC) abstract class AbstractFirJsPartialLinkageNoICTestCase : AbstractJsPartialLinkageTestCase(CompilerType.K2_NO_IC)
abstract class AbstractJsPartialLinkageTestCase(val compilerType: CompilerType) : KtUsefulTestCase() { abstract class AbstractJsPartialLinkageTestCase(val compilerType: CompilerType) {
enum class CompilerType(val testModeName: String) { enum class CompilerType(val testModeName: String, val es6Mode: Boolean) {
K1_NO_IC("JS_NO_IC"), K1_NO_IC("JS_NO_IC", false),
K1_WITH_IC("JS_WITH_IC"), K1_NO_IC_WITH_ES6("JS_NO_IC", true),
K2_NO_IC("JS_NO_IC") K1_WITH_IC("JS_WITH_IC", false),
K2_NO_IC("JS_NO_IC", false)
} }
private lateinit var buildDir: File
private lateinit var environment: KotlinCoreEnvironment
private val zipAccessor = ZipFileSystemCacheableAccessor(2) private val zipAccessor = ZipFileSystemCacheableAccessor(2)
private val buildDir = createTempDirectory().toFile().also { it.mkdirs() }
private val environment =
KotlinCoreEnvironment.createForParallelTests(TestDisposable(), CompilerConfiguration(), EnvironmentConfigFiles.JS_CONFIG_FILES)
override fun setUp() {
super.setUp()
buildDir = createTempDirectory().toFile().also { it.mkdirs() }
environment = KotlinCoreEnvironment.createForTests( @AfterEach
testRootDisposable, fun clearArtifacts() {
CompilerConfiguration(),
EnvironmentConfigFiles.JS_CONFIG_FILES
)
}
override fun tearDown() {
zipAccessor.reset() zipAccessor.reset()
buildDir.deleteRecursively() buildDir.deleteRecursively()
super.tearDown()
} }
private fun createConfig(moduleName: String): CompilerConfiguration { private fun createConfig(moduleName: String): CompilerConfiguration {
@@ -128,7 +122,7 @@ abstract class AbstractJsPartialLinkageTestCase(val compilerType: CompilerType)
} }
// The entry point to generated test classes. // The entry point to generated test classes.
fun doTest(testPath: String) = PartialLinkageTestUtils.runTest(JsTestConfiguration(testPath)) fun runTest(@TestDataFile testPath: String) = PartialLinkageTestUtils.runTest(JsTestConfiguration(testPath))
private fun buildKlib(moduleName: String, buildDirs: ModuleBuildDirs, dependencies: Dependencies, klibFile: File) { private fun buildKlib(moduleName: String, buildDirs: ModuleBuildDirs, dependencies: Dependencies, klibFile: File) {
buildDirs.sourceDir.walkTopDown() buildDirs.sourceDir.walkTopDown()
@@ -136,7 +130,8 @@ abstract class AbstractJsPartialLinkageTestCase(val compilerType: CompilerType)
.forEach { file -> file.copyTo(buildDirs.outputDir.resolve(file.relativeTo(buildDirs.sourceDir)), overwrite = true) } .forEach { file -> file.copyTo(buildDirs.outputDir.resolve(file.relativeTo(buildDirs.sourceDir)), overwrite = true) }
when (compilerType) { when (compilerType) {
CompilerType.K1_NO_IC, CompilerType.K1_WITH_IC -> buildKlibWithK1(moduleName, buildDirs.sourceDir, dependencies, klibFile) CompilerType.K1_NO_IC, CompilerType.K1_NO_IC_WITH_ES6, CompilerType.K1_WITH_IC ->
buildKlibWithK1(moduleName, buildDirs.sourceDir, dependencies, klibFile)
CompilerType.K2_NO_IC -> buildKlibWithK2(moduleName, buildDirs.sourceDir, dependencies, klibFile) CompilerType.K2_NO_IC -> buildKlibWithK2(moduleName, buildDirs.sourceDir, dependencies, klibFile)
} }
} }
@@ -247,7 +242,8 @@ abstract class AbstractJsPartialLinkageTestCase(val compilerType: CompilerType)
configuration.setupPartialLinkageConfig(PartialLinkageConfig(PartialLinkageMode.ENABLE, PartialLinkageLogLevel.WARNING)) configuration.setupPartialLinkageConfig(PartialLinkageConfig(PartialLinkageMode.ENABLE, PartialLinkageLogLevel.WARNING))
val compilationOutputs = when (compilerType) { val compilationOutputs = when (compilerType) {
CompilerType.K1_NO_IC, CompilerType.K2_NO_IC -> buildBinaryNoIC(configuration, mainModuleKlibFile, allDependencies) CompilerType.K1_NO_IC, CompilerType.K1_NO_IC_WITH_ES6, CompilerType.K2_NO_IC ->
buildBinaryNoIC(configuration, mainModuleKlibFile, allDependencies, compilerType.es6Mode)
CompilerType.K1_WITH_IC -> buildBinaryWithIC(configuration, mainModuleKlibFile, allDependencies) CompilerType.K1_WITH_IC -> buildBinaryWithIC(configuration, mainModuleKlibFile, allDependencies)
} }
@@ -288,7 +284,8 @@ abstract class AbstractJsPartialLinkageTestCase(val compilerType: CompilerType)
private fun buildBinaryNoIC( private fun buildBinaryNoIC(
configuration: CompilerConfiguration, configuration: CompilerConfiguration,
mainModuleKlibFile: File, mainModuleKlibFile: File,
allDependencies: Dependencies allDependencies: Dependencies,
es6mode: Boolean
): CompilationOutputs { ): CompilationOutputs {
val klib = MainModule.Klib(mainModuleKlibFile.path) val klib = MainModule.Klib(mainModuleKlibFile.path)
val moduleStructure = ModulesStructure( val moduleStructure = ModulesStructure(
@@ -304,7 +301,8 @@ abstract class AbstractJsPartialLinkageTestCase(val compilerType: CompilerType)
PhaseConfig(jsPhases), PhaseConfig(jsPhases),
IrFactoryImplForJsIC(WholeWorldStageController()), IrFactoryImplForJsIC(WholeWorldStageController()),
exportedDeclarations = setOf(BOX_FUN_FQN), exportedDeclarations = setOf(BOX_FUN_FQN),
granularity = JsGenerationGranularity.PER_MODULE granularity = JsGenerationGranularity.PER_MODULE,
es6mode = es6mode
) )
val transformer = IrModuleToJsTransformer( val transformer = IrModuleToJsTransformer(
@@ -6,12 +6,11 @@
package org.jetbrains.kotlin.js.test.ir; package org.jetbrains.kotlin.js.test.ir;
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;
@@ -20,116 +19,133 @@ import java.util.regex.Pattern;
@SuppressWarnings("all") @SuppressWarnings("all")
@TestMetadata("compiler/testData/klibABI") @TestMetadata("compiler/testData/klibABI")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class)
public class FirJsPartialLinkageNoICTestCaseGenerated extends AbstractFirJsPartialLinkageNoICTestCase { public class FirJsPartialLinkageNoICTestCaseGenerated extends AbstractFirJsPartialLinkageNoICTestCase {
private void runTest(String testDataFilePath) throws Exception { @Test
KotlinTestUtils.runTest(this::doTest, TargetBackend.JS_IR, testDataFilePath);
}
@TestMetadata("addEnumEntry") @TestMetadata("addEnumEntry")
public void testAddEnumEntry() throws Exception { public void testAddEnumEntry() throws Exception {
runTest("compiler/testData/klibABI/addEnumEntry/"); runTest("compiler/testData/klibABI/addEnumEntry/");
} }
@Test
@TestMetadata("addSealedSubclass") @TestMetadata("addSealedSubclass")
public void testAddSealedSubclass() throws Exception { public void testAddSealedSubclass() throws Exception {
runTest("compiler/testData/klibABI/addSealedSubclass/"); runTest("compiler/testData/klibABI/addSealedSubclass/");
} }
@Test
public void testAllFilesPresentInKlibABI() throws Exception { public void testAllFilesPresentInKlibABI() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/klibABI"), Pattern.compile("^([^_](.+))$"), null, TargetBackend.JS_IR, false); KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/klibABI"), Pattern.compile("^([^_](.+))$"), null, TargetBackend.JS_IR, false);
} }
@Test
@TestMetadata("changeClassVisibility") @TestMetadata("changeClassVisibility")
public void testChangeClassVisibility() throws Exception { public void testChangeClassVisibility() throws Exception {
runTest("compiler/testData/klibABI/changeClassVisibility/"); runTest("compiler/testData/klibABI/changeClassVisibility/");
} }
@Test
@TestMetadata("changeFunctionVisibility") @TestMetadata("changeFunctionVisibility")
public void testChangeFunctionVisibility() throws Exception { public void testChangeFunctionVisibility() throws Exception {
runTest("compiler/testData/klibABI/changeFunctionVisibility/"); runTest("compiler/testData/klibABI/changeFunctionVisibility/");
} }
@Test
@TestMetadata("changePropertyVisibility") @TestMetadata("changePropertyVisibility")
public void testChangePropertyVisibility() throws Exception { public void testChangePropertyVisibility() throws Exception {
runTest("compiler/testData/klibABI/changePropertyVisibility/"); runTest("compiler/testData/klibABI/changePropertyVisibility/");
} }
@Test
@TestMetadata("classTransformations") @TestMetadata("classTransformations")
public void testClassTransformations() throws Exception { public void testClassTransformations() throws Exception {
runTest("compiler/testData/klibABI/classTransformations/"); runTest("compiler/testData/klibABI/classTransformations/");
} }
@Test
@TestMetadata("externalDeclarations") @TestMetadata("externalDeclarations")
public void testExternalDeclarations() throws Exception { public void testExternalDeclarations() throws Exception {
runTest("compiler/testData/klibABI/externalDeclarations/"); runTest("compiler/testData/klibABI/externalDeclarations/");
} }
@Test
@TestMetadata("functionTransformations") @TestMetadata("functionTransformations")
public void testFunctionTransformations() throws Exception { public void testFunctionTransformations() throws Exception {
runTest("compiler/testData/klibABI/functionTransformations/"); runTest("compiler/testData/klibABI/functionTransformations/");
} }
@Test
@TestMetadata("inheritanceIssues") @TestMetadata("inheritanceIssues")
public void testInheritanceIssues() throws Exception { public void testInheritanceIssues() throws Exception {
runTest("compiler/testData/klibABI/inheritanceIssues/"); runTest("compiler/testData/klibABI/inheritanceIssues/");
} }
@Test
@TestMetadata("noNonImplementedCallableFalsePositives") @TestMetadata("noNonImplementedCallableFalsePositives")
public void testNoNonImplementedCallableFalsePositives() throws Exception { public void testNoNonImplementedCallableFalsePositives() throws Exception {
runTest("compiler/testData/klibABI/noNonImplementedCallableFalsePositives/"); runTest("compiler/testData/klibABI/noNonImplementedCallableFalsePositives/");
} }
@Test
@TestMetadata("nonAbstractCallableBecomesAbstract") @TestMetadata("nonAbstractCallableBecomesAbstract")
public void testNonAbstractCallableBecomesAbstract() throws Exception { public void testNonAbstractCallableBecomesAbstract() throws Exception {
runTest("compiler/testData/klibABI/nonAbstractCallableBecomesAbstract/"); runTest("compiler/testData/klibABI/nonAbstractCallableBecomesAbstract/");
} }
@Test
@TestMetadata("nonExhaustivenessOfWhenClause") @TestMetadata("nonExhaustivenessOfWhenClause")
public void testNonExhaustivenessOfWhenClause() throws Exception { public void testNonExhaustivenessOfWhenClause() throws Exception {
runTest("compiler/testData/klibABI/nonExhaustivenessOfWhenClause/"); runTest("compiler/testData/klibABI/nonExhaustivenessOfWhenClause/");
} }
@Test
@TestMetadata("propertyTransformations") @TestMetadata("propertyTransformations")
public void testPropertyTransformations() throws Exception { public void testPropertyTransformations() throws Exception {
runTest("compiler/testData/klibABI/propertyTransformations/"); runTest("compiler/testData/klibABI/propertyTransformations/");
} }
@Test
@TestMetadata("referencingUnusableDeclarations") @TestMetadata("referencingUnusableDeclarations")
public void testReferencingUnusableDeclarations() throws Exception { public void testReferencingUnusableDeclarations() throws Exception {
runTest("compiler/testData/klibABI/referencingUnusableDeclarations/"); runTest("compiler/testData/klibABI/referencingUnusableDeclarations/");
} }
@Test
@TestMetadata("removeAbstractCallableFromAbstractClassOrInterface") @TestMetadata("removeAbstractCallableFromAbstractClassOrInterface")
public void testRemoveAbstractCallableFromAbstractClassOrInterface() throws Exception { public void testRemoveAbstractCallableFromAbstractClassOrInterface() throws Exception {
runTest("compiler/testData/klibABI/removeAbstractCallableFromAbstractClassOrInterface/"); runTest("compiler/testData/klibABI/removeAbstractCallableFromAbstractClassOrInterface/");
} }
@Test
@TestMetadata("removeCallable") @TestMetadata("removeCallable")
public void testRemoveCallable() throws Exception { public void testRemoveCallable() throws Exception {
runTest("compiler/testData/klibABI/removeCallable/"); runTest("compiler/testData/klibABI/removeCallable/");
} }
@Test
@TestMetadata("removeClass") @TestMetadata("removeClass")
public void testRemoveClass() throws Exception { public void testRemoveClass() throws Exception {
runTest("compiler/testData/klibABI/removeClass/"); runTest("compiler/testData/klibABI/removeClass/");
} }
@Test
@TestMetadata("removeEnumEntry") @TestMetadata("removeEnumEntry")
public void testRemoveEnumEntry() throws Exception { public void testRemoveEnumEntry() throws Exception {
runTest("compiler/testData/klibABI/removeEnumEntry/"); runTest("compiler/testData/klibABI/removeEnumEntry/");
} }
@Test
@TestMetadata("removeSealedSubclass") @TestMetadata("removeSealedSubclass")
public void testRemoveSealedSubclass() throws Exception { public void testRemoveSealedSubclass() throws Exception {
runTest("compiler/testData/klibABI/removeSealedSubclass/"); runTest("compiler/testData/klibABI/removeSealedSubclass/");
} }
@Test
@TestMetadata("replaceCallableReturnType") @TestMetadata("replaceCallableReturnType")
public void testReplaceCallableReturnType() throws Exception { public void testReplaceCallableReturnType() throws Exception {
runTest("compiler/testData/klibABI/replaceCallableReturnType/"); runTest("compiler/testData/klibABI/replaceCallableReturnType/");
} }
@Test
@TestMetadata("typeAliasChanges") @TestMetadata("typeAliasChanges")
public void testTypeAliasChanges() throws Exception { public void testTypeAliasChanges() throws Exception {
runTest("compiler/testData/klibABI/typeAliasChanges/"); runTest("compiler/testData/klibABI/typeAliasChanges/");
@@ -0,0 +1,153 @@
/*
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.js.test.ir;
import com.intellij.testFramework.TestDataPath;
import org.jetbrains.kotlin.test.util.KtTestUtil;
import org.jetbrains.kotlin.test.TargetBackend;
import org.jetbrains.kotlin.test.TestMetadata;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
import java.io.File;
import java.util.regex.Pattern;
/** This class is generated by {@link org.jetbrains.kotlin.generators.tests.GenerateJsTestsKt}. DO NOT MODIFY MANUALLY */
@SuppressWarnings("all")
@TestMetadata("compiler/testData/klibABI")
@TestDataPath("$PROJECT_ROOT")
public class JsPartialLinkageNoICES6TestCaseGenerated extends AbstractJsPartialLinkageNoICES6TestCase {
@Test
@TestMetadata("addEnumEntry")
public void testAddEnumEntry() throws Exception {
runTest("compiler/testData/klibABI/addEnumEntry/");
}
@Test
@TestMetadata("addSealedSubclass")
public void testAddSealedSubclass() throws Exception {
runTest("compiler/testData/klibABI/addSealedSubclass/");
}
@Test
public void testAllFilesPresentInKlibABI() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/klibABI"), Pattern.compile("^([^_](.+))$"), null, TargetBackend.JS_IR_ES6, false);
}
@Test
@TestMetadata("changeClassVisibility")
public void testChangeClassVisibility() throws Exception {
runTest("compiler/testData/klibABI/changeClassVisibility/");
}
@Test
@TestMetadata("changeFunctionVisibility")
public void testChangeFunctionVisibility() throws Exception {
runTest("compiler/testData/klibABI/changeFunctionVisibility/");
}
@Test
@TestMetadata("changePropertyVisibility")
public void testChangePropertyVisibility() throws Exception {
runTest("compiler/testData/klibABI/changePropertyVisibility/");
}
@Test
@TestMetadata("classTransformations")
public void testClassTransformations() throws Exception {
runTest("compiler/testData/klibABI/classTransformations/");
}
@Test
@TestMetadata("externalDeclarations")
public void testExternalDeclarations() throws Exception {
runTest("compiler/testData/klibABI/externalDeclarations/");
}
@Test
@TestMetadata("functionTransformations")
public void testFunctionTransformations() throws Exception {
runTest("compiler/testData/klibABI/functionTransformations/");
}
@Test
@TestMetadata("inheritanceIssues")
public void testInheritanceIssues() throws Exception {
runTest("compiler/testData/klibABI/inheritanceIssues/");
}
@Test
@TestMetadata("noNonImplementedCallableFalsePositives")
public void testNoNonImplementedCallableFalsePositives() throws Exception {
runTest("compiler/testData/klibABI/noNonImplementedCallableFalsePositives/");
}
@Test
@TestMetadata("nonAbstractCallableBecomesAbstract")
public void testNonAbstractCallableBecomesAbstract() throws Exception {
runTest("compiler/testData/klibABI/nonAbstractCallableBecomesAbstract/");
}
@Test
@TestMetadata("nonExhaustivenessOfWhenClause")
public void testNonExhaustivenessOfWhenClause() throws Exception {
runTest("compiler/testData/klibABI/nonExhaustivenessOfWhenClause/");
}
@Test
@TestMetadata("propertyTransformations")
public void testPropertyTransformations() throws Exception {
runTest("compiler/testData/klibABI/propertyTransformations/");
}
@Test
@TestMetadata("referencingUnusableDeclarations")
public void testReferencingUnusableDeclarations() throws Exception {
runTest("compiler/testData/klibABI/referencingUnusableDeclarations/");
}
@Test
@TestMetadata("removeAbstractCallableFromAbstractClassOrInterface")
public void testRemoveAbstractCallableFromAbstractClassOrInterface() throws Exception {
runTest("compiler/testData/klibABI/removeAbstractCallableFromAbstractClassOrInterface/");
}
@Test
@TestMetadata("removeCallable")
public void testRemoveCallable() throws Exception {
runTest("compiler/testData/klibABI/removeCallable/");
}
@Test
@TestMetadata("removeClass")
public void testRemoveClass() throws Exception {
runTest("compiler/testData/klibABI/removeClass/");
}
@Test
@TestMetadata("removeEnumEntry")
public void testRemoveEnumEntry() throws Exception {
runTest("compiler/testData/klibABI/removeEnumEntry/");
}
@Test
@TestMetadata("removeSealedSubclass")
public void testRemoveSealedSubclass() throws Exception {
runTest("compiler/testData/klibABI/removeSealedSubclass/");
}
@Test
@TestMetadata("replaceCallableReturnType")
public void testReplaceCallableReturnType() throws Exception {
runTest("compiler/testData/klibABI/replaceCallableReturnType/");
}
@Test
@TestMetadata("typeAliasChanges")
public void testTypeAliasChanges() throws Exception {
runTest("compiler/testData/klibABI/typeAliasChanges/");
}
}
@@ -6,12 +6,11 @@
package org.jetbrains.kotlin.js.test.ir; package org.jetbrains.kotlin.js.test.ir;
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;
@@ -20,116 +19,133 @@ import java.util.regex.Pattern;
@SuppressWarnings("all") @SuppressWarnings("all")
@TestMetadata("compiler/testData/klibABI") @TestMetadata("compiler/testData/klibABI")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class)
public class JsPartialLinkageNoICTestCaseGenerated extends AbstractJsPartialLinkageNoICTestCase { public class JsPartialLinkageNoICTestCaseGenerated extends AbstractJsPartialLinkageNoICTestCase {
private void runTest(String testDataFilePath) throws Exception { @Test
KotlinTestUtils.runTest(this::doTest, TargetBackend.JS_IR, testDataFilePath);
}
@TestMetadata("addEnumEntry") @TestMetadata("addEnumEntry")
public void testAddEnumEntry() throws Exception { public void testAddEnumEntry() throws Exception {
runTest("compiler/testData/klibABI/addEnumEntry/"); runTest("compiler/testData/klibABI/addEnumEntry/");
} }
@Test
@TestMetadata("addSealedSubclass") @TestMetadata("addSealedSubclass")
public void testAddSealedSubclass() throws Exception { public void testAddSealedSubclass() throws Exception {
runTest("compiler/testData/klibABI/addSealedSubclass/"); runTest("compiler/testData/klibABI/addSealedSubclass/");
} }
@Test
public void testAllFilesPresentInKlibABI() throws Exception { public void testAllFilesPresentInKlibABI() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/klibABI"), Pattern.compile("^([^_](.+))$"), null, TargetBackend.JS_IR, false); KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/klibABI"), Pattern.compile("^([^_](.+))$"), null, TargetBackend.JS_IR, false);
} }
@Test
@TestMetadata("changeClassVisibility") @TestMetadata("changeClassVisibility")
public void testChangeClassVisibility() throws Exception { public void testChangeClassVisibility() throws Exception {
runTest("compiler/testData/klibABI/changeClassVisibility/"); runTest("compiler/testData/klibABI/changeClassVisibility/");
} }
@Test
@TestMetadata("changeFunctionVisibility") @TestMetadata("changeFunctionVisibility")
public void testChangeFunctionVisibility() throws Exception { public void testChangeFunctionVisibility() throws Exception {
runTest("compiler/testData/klibABI/changeFunctionVisibility/"); runTest("compiler/testData/klibABI/changeFunctionVisibility/");
} }
@Test
@TestMetadata("changePropertyVisibility") @TestMetadata("changePropertyVisibility")
public void testChangePropertyVisibility() throws Exception { public void testChangePropertyVisibility() throws Exception {
runTest("compiler/testData/klibABI/changePropertyVisibility/"); runTest("compiler/testData/klibABI/changePropertyVisibility/");
} }
@Test
@TestMetadata("classTransformations") @TestMetadata("classTransformations")
public void testClassTransformations() throws Exception { public void testClassTransformations() throws Exception {
runTest("compiler/testData/klibABI/classTransformations/"); runTest("compiler/testData/klibABI/classTransformations/");
} }
@Test
@TestMetadata("externalDeclarations") @TestMetadata("externalDeclarations")
public void testExternalDeclarations() throws Exception { public void testExternalDeclarations() throws Exception {
runTest("compiler/testData/klibABI/externalDeclarations/"); runTest("compiler/testData/klibABI/externalDeclarations/");
} }
@Test
@TestMetadata("functionTransformations") @TestMetadata("functionTransformations")
public void testFunctionTransformations() throws Exception { public void testFunctionTransformations() throws Exception {
runTest("compiler/testData/klibABI/functionTransformations/"); runTest("compiler/testData/klibABI/functionTransformations/");
} }
@Test
@TestMetadata("inheritanceIssues") @TestMetadata("inheritanceIssues")
public void testInheritanceIssues() throws Exception { public void testInheritanceIssues() throws Exception {
runTest("compiler/testData/klibABI/inheritanceIssues/"); runTest("compiler/testData/klibABI/inheritanceIssues/");
} }
@Test
@TestMetadata("noNonImplementedCallableFalsePositives") @TestMetadata("noNonImplementedCallableFalsePositives")
public void testNoNonImplementedCallableFalsePositives() throws Exception { public void testNoNonImplementedCallableFalsePositives() throws Exception {
runTest("compiler/testData/klibABI/noNonImplementedCallableFalsePositives/"); runTest("compiler/testData/klibABI/noNonImplementedCallableFalsePositives/");
} }
@Test
@TestMetadata("nonAbstractCallableBecomesAbstract") @TestMetadata("nonAbstractCallableBecomesAbstract")
public void testNonAbstractCallableBecomesAbstract() throws Exception { public void testNonAbstractCallableBecomesAbstract() throws Exception {
runTest("compiler/testData/klibABI/nonAbstractCallableBecomesAbstract/"); runTest("compiler/testData/klibABI/nonAbstractCallableBecomesAbstract/");
} }
@Test
@TestMetadata("nonExhaustivenessOfWhenClause") @TestMetadata("nonExhaustivenessOfWhenClause")
public void testNonExhaustivenessOfWhenClause() throws Exception { public void testNonExhaustivenessOfWhenClause() throws Exception {
runTest("compiler/testData/klibABI/nonExhaustivenessOfWhenClause/"); runTest("compiler/testData/klibABI/nonExhaustivenessOfWhenClause/");
} }
@Test
@TestMetadata("propertyTransformations") @TestMetadata("propertyTransformations")
public void testPropertyTransformations() throws Exception { public void testPropertyTransformations() throws Exception {
runTest("compiler/testData/klibABI/propertyTransformations/"); runTest("compiler/testData/klibABI/propertyTransformations/");
} }
@Test
@TestMetadata("referencingUnusableDeclarations") @TestMetadata("referencingUnusableDeclarations")
public void testReferencingUnusableDeclarations() throws Exception { public void testReferencingUnusableDeclarations() throws Exception {
runTest("compiler/testData/klibABI/referencingUnusableDeclarations/"); runTest("compiler/testData/klibABI/referencingUnusableDeclarations/");
} }
@Test
@TestMetadata("removeAbstractCallableFromAbstractClassOrInterface") @TestMetadata("removeAbstractCallableFromAbstractClassOrInterface")
public void testRemoveAbstractCallableFromAbstractClassOrInterface() throws Exception { public void testRemoveAbstractCallableFromAbstractClassOrInterface() throws Exception {
runTest("compiler/testData/klibABI/removeAbstractCallableFromAbstractClassOrInterface/"); runTest("compiler/testData/klibABI/removeAbstractCallableFromAbstractClassOrInterface/");
} }
@Test
@TestMetadata("removeCallable") @TestMetadata("removeCallable")
public void testRemoveCallable() throws Exception { public void testRemoveCallable() throws Exception {
runTest("compiler/testData/klibABI/removeCallable/"); runTest("compiler/testData/klibABI/removeCallable/");
} }
@Test
@TestMetadata("removeClass") @TestMetadata("removeClass")
public void testRemoveClass() throws Exception { public void testRemoveClass() throws Exception {
runTest("compiler/testData/klibABI/removeClass/"); runTest("compiler/testData/klibABI/removeClass/");
} }
@Test
@TestMetadata("removeEnumEntry") @TestMetadata("removeEnumEntry")
public void testRemoveEnumEntry() throws Exception { public void testRemoveEnumEntry() throws Exception {
runTest("compiler/testData/klibABI/removeEnumEntry/"); runTest("compiler/testData/klibABI/removeEnumEntry/");
} }
@Test
@TestMetadata("removeSealedSubclass") @TestMetadata("removeSealedSubclass")
public void testRemoveSealedSubclass() throws Exception { public void testRemoveSealedSubclass() throws Exception {
runTest("compiler/testData/klibABI/removeSealedSubclass/"); runTest("compiler/testData/klibABI/removeSealedSubclass/");
} }
@Test
@TestMetadata("replaceCallableReturnType") @TestMetadata("replaceCallableReturnType")
public void testReplaceCallableReturnType() throws Exception { public void testReplaceCallableReturnType() throws Exception {
runTest("compiler/testData/klibABI/replaceCallableReturnType/"); runTest("compiler/testData/klibABI/replaceCallableReturnType/");
} }
@Test
@TestMetadata("typeAliasChanges") @TestMetadata("typeAliasChanges")
public void testTypeAliasChanges() throws Exception { public void testTypeAliasChanges() throws Exception {
runTest("compiler/testData/klibABI/typeAliasChanges/"); runTest("compiler/testData/klibABI/typeAliasChanges/");
@@ -6,12 +6,11 @@
package org.jetbrains.kotlin.js.test.ir; package org.jetbrains.kotlin.js.test.ir;
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;
@@ -20,116 +19,133 @@ import java.util.regex.Pattern;
@SuppressWarnings("all") @SuppressWarnings("all")
@TestMetadata("compiler/testData/klibABI") @TestMetadata("compiler/testData/klibABI")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class)
public class JsPartialLinkageWithICTestCaseGenerated extends AbstractJsPartialLinkageWithICTestCase { public class JsPartialLinkageWithICTestCaseGenerated extends AbstractJsPartialLinkageWithICTestCase {
private void runTest(String testDataFilePath) throws Exception { @Test
KotlinTestUtils.runTest(this::doTest, TargetBackend.JS_IR, testDataFilePath);
}
@TestMetadata("addEnumEntry") @TestMetadata("addEnumEntry")
public void testAddEnumEntry() throws Exception { public void testAddEnumEntry() throws Exception {
runTest("compiler/testData/klibABI/addEnumEntry/"); runTest("compiler/testData/klibABI/addEnumEntry/");
} }
@Test
@TestMetadata("addSealedSubclass") @TestMetadata("addSealedSubclass")
public void testAddSealedSubclass() throws Exception { public void testAddSealedSubclass() throws Exception {
runTest("compiler/testData/klibABI/addSealedSubclass/"); runTest("compiler/testData/klibABI/addSealedSubclass/");
} }
@Test
public void testAllFilesPresentInKlibABI() throws Exception { public void testAllFilesPresentInKlibABI() throws Exception {
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/klibABI"), Pattern.compile("^([^_](.+))$"), null, TargetBackend.JS_IR, false); KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/klibABI"), Pattern.compile("^([^_](.+))$"), null, TargetBackend.JS_IR, false);
} }
@Test
@TestMetadata("changeClassVisibility") @TestMetadata("changeClassVisibility")
public void testChangeClassVisibility() throws Exception { public void testChangeClassVisibility() throws Exception {
runTest("compiler/testData/klibABI/changeClassVisibility/"); runTest("compiler/testData/klibABI/changeClassVisibility/");
} }
@Test
@TestMetadata("changeFunctionVisibility") @TestMetadata("changeFunctionVisibility")
public void testChangeFunctionVisibility() throws Exception { public void testChangeFunctionVisibility() throws Exception {
runTest("compiler/testData/klibABI/changeFunctionVisibility/"); runTest("compiler/testData/klibABI/changeFunctionVisibility/");
} }
@Test
@TestMetadata("changePropertyVisibility") @TestMetadata("changePropertyVisibility")
public void testChangePropertyVisibility() throws Exception { public void testChangePropertyVisibility() throws Exception {
runTest("compiler/testData/klibABI/changePropertyVisibility/"); runTest("compiler/testData/klibABI/changePropertyVisibility/");
} }
@Test
@TestMetadata("classTransformations") @TestMetadata("classTransformations")
public void testClassTransformations() throws Exception { public void testClassTransformations() throws Exception {
runTest("compiler/testData/klibABI/classTransformations/"); runTest("compiler/testData/klibABI/classTransformations/");
} }
@Test
@TestMetadata("externalDeclarations") @TestMetadata("externalDeclarations")
public void testExternalDeclarations() throws Exception { public void testExternalDeclarations() throws Exception {
runTest("compiler/testData/klibABI/externalDeclarations/"); runTest("compiler/testData/klibABI/externalDeclarations/");
} }
@Test
@TestMetadata("functionTransformations") @TestMetadata("functionTransformations")
public void testFunctionTransformations() throws Exception { public void testFunctionTransformations() throws Exception {
runTest("compiler/testData/klibABI/functionTransformations/"); runTest("compiler/testData/klibABI/functionTransformations/");
} }
@Test
@TestMetadata("inheritanceIssues") @TestMetadata("inheritanceIssues")
public void testInheritanceIssues() throws Exception { public void testInheritanceIssues() throws Exception {
runTest("compiler/testData/klibABI/inheritanceIssues/"); runTest("compiler/testData/klibABI/inheritanceIssues/");
} }
@Test
@TestMetadata("noNonImplementedCallableFalsePositives") @TestMetadata("noNonImplementedCallableFalsePositives")
public void testNoNonImplementedCallableFalsePositives() throws Exception { public void testNoNonImplementedCallableFalsePositives() throws Exception {
runTest("compiler/testData/klibABI/noNonImplementedCallableFalsePositives/"); runTest("compiler/testData/klibABI/noNonImplementedCallableFalsePositives/");
} }
@Test
@TestMetadata("nonAbstractCallableBecomesAbstract") @TestMetadata("nonAbstractCallableBecomesAbstract")
public void testNonAbstractCallableBecomesAbstract() throws Exception { public void testNonAbstractCallableBecomesAbstract() throws Exception {
runTest("compiler/testData/klibABI/nonAbstractCallableBecomesAbstract/"); runTest("compiler/testData/klibABI/nonAbstractCallableBecomesAbstract/");
} }
@Test
@TestMetadata("nonExhaustivenessOfWhenClause") @TestMetadata("nonExhaustivenessOfWhenClause")
public void testNonExhaustivenessOfWhenClause() throws Exception { public void testNonExhaustivenessOfWhenClause() throws Exception {
runTest("compiler/testData/klibABI/nonExhaustivenessOfWhenClause/"); runTest("compiler/testData/klibABI/nonExhaustivenessOfWhenClause/");
} }
@Test
@TestMetadata("propertyTransformations") @TestMetadata("propertyTransformations")
public void testPropertyTransformations() throws Exception { public void testPropertyTransformations() throws Exception {
runTest("compiler/testData/klibABI/propertyTransformations/"); runTest("compiler/testData/klibABI/propertyTransformations/");
} }
@Test
@TestMetadata("referencingUnusableDeclarations") @TestMetadata("referencingUnusableDeclarations")
public void testReferencingUnusableDeclarations() throws Exception { public void testReferencingUnusableDeclarations() throws Exception {
runTest("compiler/testData/klibABI/referencingUnusableDeclarations/"); runTest("compiler/testData/klibABI/referencingUnusableDeclarations/");
} }
@Test
@TestMetadata("removeAbstractCallableFromAbstractClassOrInterface") @TestMetadata("removeAbstractCallableFromAbstractClassOrInterface")
public void testRemoveAbstractCallableFromAbstractClassOrInterface() throws Exception { public void testRemoveAbstractCallableFromAbstractClassOrInterface() throws Exception {
runTest("compiler/testData/klibABI/removeAbstractCallableFromAbstractClassOrInterface/"); runTest("compiler/testData/klibABI/removeAbstractCallableFromAbstractClassOrInterface/");
} }
@Test
@TestMetadata("removeCallable") @TestMetadata("removeCallable")
public void testRemoveCallable() throws Exception { public void testRemoveCallable() throws Exception {
runTest("compiler/testData/klibABI/removeCallable/"); runTest("compiler/testData/klibABI/removeCallable/");
} }
@Test
@TestMetadata("removeClass") @TestMetadata("removeClass")
public void testRemoveClass() throws Exception { public void testRemoveClass() throws Exception {
runTest("compiler/testData/klibABI/removeClass/"); runTest("compiler/testData/klibABI/removeClass/");
} }
@Test
@TestMetadata("removeEnumEntry") @TestMetadata("removeEnumEntry")
public void testRemoveEnumEntry() throws Exception { public void testRemoveEnumEntry() throws Exception {
runTest("compiler/testData/klibABI/removeEnumEntry/"); runTest("compiler/testData/klibABI/removeEnumEntry/");
} }
@Test
@TestMetadata("removeSealedSubclass") @TestMetadata("removeSealedSubclass")
public void testRemoveSealedSubclass() throws Exception { public void testRemoveSealedSubclass() throws Exception {
runTest("compiler/testData/klibABI/removeSealedSubclass/"); runTest("compiler/testData/klibABI/removeSealedSubclass/");
} }
@Test
@TestMetadata("replaceCallableReturnType") @TestMetadata("replaceCallableReturnType")
public void testReplaceCallableReturnType() throws Exception { public void testReplaceCallableReturnType() throws Exception {
runTest("compiler/testData/klibABI/replaceCallableReturnType/"); runTest("compiler/testData/klibABI/replaceCallableReturnType/");
} }
@Test
@TestMetadata("typeAliasChanges") @TestMetadata("typeAliasChanges")
public void testTypeAliasChanges() throws Exception { public void testTypeAliasChanges() throws Exception {
runTest("compiler/testData/klibABI/typeAliasChanges/"); runTest("compiler/testData/klibABI/typeAliasChanges/");