diff --git a/libraries/tools/kotlinp/test/org/jetbrains/kotlin/kotlinp/test/AbstractKotlinpTest.kt b/libraries/tools/kotlinp/test/org/jetbrains/kotlin/kotlinp/test/AbstractKotlinpTest.kt index aaf8a89294a..95d1f25dc27 100644 --- a/libraries/tools/kotlinp/test/org/jetbrains/kotlin/kotlinp/test/AbstractKotlinpTest.kt +++ b/libraries/tools/kotlinp/test/org/jetbrains/kotlin/kotlinp/test/AbstractKotlinpTest.kt @@ -12,7 +12,7 @@ abstract class AbstractKotlinpTest : TestCaseWithTmpdir() { abstract fun useK2(): Boolean protected fun doTest(fileName: String) { - compileAndPrintAllFiles( + compareAllFiles( File(fileName), testRootDisposable, tmpdir, diff --git a/libraries/tools/kotlinp/test/org/jetbrains/kotlin/kotlinp/test/KotlinpCompilerTestDataTest.kt b/libraries/tools/kotlinp/test/org/jetbrains/kotlin/kotlinp/test/KotlinpCompilerTestDataTest.kt index 7a90aab2775..3b2f3bb1e8c 100644 --- a/libraries/tools/kotlinp/test/org/jetbrains/kotlin/kotlinp/test/KotlinpCompilerTestDataTest.kt +++ b/libraries/tools/kotlinp/test/org/jetbrains/kotlin/kotlinp/test/KotlinpCompilerTestDataTest.kt @@ -25,7 +25,7 @@ class KotlinpCompilerTestDataTest(private val file: File) { val disposable = TestDisposable() try { - compileAndPrintAllFiles(file, disposable, tmpdir, compareWithTxt = false, readWriteAndCompare = true, useK2 = false) + compareAllFiles(file, disposable, tmpdir, compareWithTxt = false, readWriteAndCompare = true, useK2 = false) } finally { Disposer.dispose(disposable) } diff --git a/libraries/tools/kotlinp/test/org/jetbrains/kotlin/kotlinp/test/KotlinpTestUtils.kt b/libraries/tools/kotlinp/test/org/jetbrains/kotlin/kotlinp/test/KotlinpTestUtils.kt index 7cde7b7328c..b8d52181f68 100644 --- a/libraries/tools/kotlinp/test/org/jetbrains/kotlin/kotlinp/test/KotlinpTestUtils.kt +++ b/libraries/tools/kotlinp/test/org/jetbrains/kotlin/kotlinp/test/KotlinpTestUtils.kt @@ -14,7 +14,8 @@ import org.jetbrains.kotlin.checkers.setupLanguageVersionSettingsForCompilerTest import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment import org.jetbrains.kotlin.codegen.GenerationUtils -import org.jetbrains.kotlin.config.* +import org.jetbrains.kotlin.config.CommonConfigurationKeys +import org.jetbrains.kotlin.config.JVMConfigurationKeys import org.jetbrains.kotlin.jvm.compiler.AbstractLoadJavaTest import org.jetbrains.kotlin.kotlinp.Kotlinp import org.jetbrains.kotlin.kotlinp.KotlinpSettings @@ -26,18 +27,36 @@ import org.jetbrains.kotlin.test.util.KtTestUtil import java.io.File import kotlin.test.fail -fun compileAndPrintAllFiles( +private const val IGNORE_K2_DIRECTIVE = "// IGNORE K2" + +fun compareAllFiles( file: File, disposable: Disposable, tmpdir: File, compareWithTxt: Boolean, readWriteAndCompare: Boolean, - useK2: Boolean + useK2: Boolean, ) { - if (useK2 && InTextDirectivesUtils.findStringWithPrefixes(file.readText(), "// IGNORE K2") != null) { - return + val isMutedForK2 = useK2 && InTextDirectivesUtils.findStringWithPrefixes(file.readText(), IGNORE_K2_DIRECTIVE) != null + try { + compileAndPrintAllFiles(file, disposable, tmpdir, compareWithTxt, readWriteAndCompare, useK2) + } catch (e: Throwable) { + if (isMutedForK2) return + throw e } + if (isMutedForK2) { + throw AssertionError("Looks like this test can be unmuted. Remove the \"$IGNORE_K2_DIRECTIVE\" directive.") + } +} +private fun compileAndPrintAllFiles( + file: File, + disposable: Disposable, + tmpdir: File, + compareWithTxt: Boolean, + readWriteAndCompare: Boolean, + useK2: Boolean, +) { val main = StringBuilder() val afterVisitors = StringBuilder() val afterNodes = StringBuilder()