From 6dfcc927f4c080934a2fd628f866ce084978020d Mon Sep 17 00:00:00 2001 From: Ilya Chernikov Date: Thu, 7 Dec 2023 17:59:36 +0100 Subject: [PATCH] IC tests: make exceptions from compiler more visible in tests otherwise they are easily swallowed by the reporting logic. This commit was needed to ensure that the problem described in KT-63665 is reproducible in IC test But some JS IC logic relies on handling compiler exceptions as a signal for scope expansions, and the newly introduced exception logging broke a few tests. To mitigate it, the directive was introduced to disable exception logging for particular test. --- .../AbstractIncrementalCompilerRunnerTestBase.kt | 13 ++++++++++++- .../kotlin/test/InTextDirectivesUtils.java | 2 +- .../classBecameInterface/directives.txt | 1 + .../classRemoved/directives.txt | 1 + .../classRemovedAndRestored/directives.txt | 1 + .../companionObjectNameChanged/directives.txt | 1 + .../secondaryConstructorAdded/directives.txt | 1 + .../typeParameterListChanged/directives.txt | 1 + .../directives.txt | 1 + 9 files changed, 20 insertions(+), 2 deletions(-) create mode 100644 jps/jps-plugin/testData/incremental/classHierarchyAffected/classBecameInterface/directives.txt create mode 100644 jps/jps-plugin/testData/incremental/classHierarchyAffected/classRemoved/directives.txt create mode 100644 jps/jps-plugin/testData/incremental/classHierarchyAffected/classRemovedAndRestored/directives.txt create mode 100644 jps/jps-plugin/testData/incremental/classHierarchyAffected/companionObjectNameChanged/directives.txt create mode 100644 jps/jps-plugin/testData/incremental/classHierarchyAffected/secondaryConstructorAdded/directives.txt create mode 100644 jps/jps-plugin/testData/incremental/classHierarchyAffected/typeParameterListChanged/directives.txt create mode 100644 jps/jps-plugin/testData/incremental/pureKotlin/removeAndRestoreCompanionWithImplicitUsages/directives.txt diff --git a/compiler/incremental-compilation-impl/test/org/jetbrains/kotlin/incremental/AbstractIncrementalCompilerRunnerTestBase.kt b/compiler/incremental-compilation-impl/test/org/jetbrains/kotlin/incremental/AbstractIncrementalCompilerRunnerTestBase.kt index 9bf66ec2da5..e90ed42bd39 100644 --- a/compiler/incremental-compilation-impl/test/org/jetbrains/kotlin/incremental/AbstractIncrementalCompilerRunnerTestBase.kt +++ b/compiler/incremental-compilation-impl/test/org/jetbrains/kotlin/incremental/AbstractIncrementalCompilerRunnerTestBase.kt @@ -22,6 +22,7 @@ import org.jetbrains.kotlin.cli.common.arguments.CommonCompilerArguments import org.jetbrains.kotlin.cli.common.arguments.parseCommandLineArguments import org.jetbrains.kotlin.incremental.testingUtils.* import org.jetbrains.kotlin.incremental.utils.TestCompilationResult +import org.jetbrains.kotlin.test.InTextDirectivesUtils import org.jetbrains.kotlin.test.testFramework.KtUsefulTestCase import org.junit.Assert import java.io.File @@ -79,6 +80,11 @@ abstract class AbstractIncrementalCompilerRunnerTestBase.relativePaths() = map { it.relativeTo(workingDir).path.replace('\\', '/') } + val reportInternalCompilerErrors = + File(testDir, InTextDirectivesUtils.DIRECTIVES_FILE_NAME).takeIf { it.exists() && it.isFile }?.let { + InTextDirectivesUtils.isDirectiveDefined(it.readText(), "// HIDE_INTERNAL_COMPILER_ERRORS") + } != true + val srcDir = File(workingDir, "src").apply { mkdirs() } val cacheDir = File(workingDir, "incremental-data").apply { mkdirs() } val outDir = File(workingDir, "out").apply { mkdirs() } @@ -140,7 +146,12 @@ abstract class AbstractIncrementalCompilerRunnerTestBase