From 420dd0d44054220f44fc6b3800aa9a25099c7faa Mon Sep 17 00:00:00 2001 From: Mikhail Bogdanov Date: Sun, 15 Mar 2020 20:02:19 +0100 Subject: [PATCH] Extract directive map to separate class --- .../tests/CodegenTestsOnAndroidGenerator.kt | 2 +- .../java/AbstractFirTypeEnhancementTest.kt | 2 +- .../asJava/AbstractCompilerLightClassTest.kt | 7 ++--- .../kotlin/checkers/BaseDiagnosticsTest.kt | 11 ++++---- .../CompilerTestLanguageVersionSettings.kt | 9 ++++--- .../checkers/KotlinMultiFileTestWithJava.kt | 4 +-- .../kotlin/codegen/CodegenTestCase.java | 8 +++--- .../kotlin/codegen/InlineTestUtil.kt | 2 +- .../AbstractFirOldFrontendDiagnosticsTest.kt | 4 +-- .../jvm/compiler/AbstractLoadJavaTest.java | 4 +-- .../resolve/ExtensibleResolveTestCase.java | 3 +-- .../org/jetbrains/kotlin/test/Directives.kt | 27 +++++++++++++++++++ .../jetbrains/kotlin/test/KotlinBaseTest.kt | 2 +- .../kotlin/test/KotlinTestUtils.java | 16 ++++++----- .../org/jetbrains/kotlin/test/TestFiles.java | 8 +++--- .../kotlin/visualizer/AbstractVisualizer.kt | 3 ++- .../AbstractJvmRuntimeDescriptorLoaderTest.kt | 2 +- .../debugger/test/KotlinDescriptorTestCase.kt | 3 ++- .../AbstractDiagnosticMessageTest.java | 8 +++--- .../quickfix/AbstractQuickFixMultiFileTest.kt | 3 ++- ...ractJavaToKotlinConverterSingleFileTest.kt | 3 +-- .../js/test/AbstractJsLineNumberTest.kt | 9 +++---- .../jetbrains/kotlin/js/test/BasicBoxTest.kt | 2 +- .../kotlin/js/test/BasicWasmBoxTest.kt | 3 ++- 24 files changed, 86 insertions(+), 59 deletions(-) create mode 100644 compiler/tests-common/tests/org/jetbrains/kotlin/test/Directives.kt diff --git a/compiler/android-tests/tests/org/jetbrains/kotlin/android/tests/CodegenTestsOnAndroidGenerator.kt b/compiler/android-tests/tests/org/jetbrains/kotlin/android/tests/CodegenTestsOnAndroidGenerator.kt index 271752dcb65..2aaa0c9c272 100644 --- a/compiler/android-tests/tests/org/jetbrains/kotlin/android/tests/CodegenTestsOnAndroidGenerator.kt +++ b/compiler/android-tests/tests/org/jetbrains/kotlin/android/tests/CodegenTestsOnAndroidGenerator.kt @@ -242,7 +242,7 @@ class CodegenTestsOnAndroidGenerator private constructor(private val pathManager file.name, expectedText, object : TestFiles.TestFileFactoryNoModules() { - override fun create(fileName: String, text: String, directives: Map): TestFile { + override fun create(fileName: String, text: String, directives: Directives): TestFile { return TestFile(fileName, text, directives) } }, false, diff --git a/compiler/fir/analysis-tests/tests/org/jetbrains/kotlin/fir/java/AbstractFirTypeEnhancementTest.kt b/compiler/fir/analysis-tests/tests/org/jetbrains/kotlin/fir/java/AbstractFirTypeEnhancementTest.kt index a2c10adb9c5..25cfc909f53 100644 --- a/compiler/fir/analysis-tests/tests/org/jetbrains/kotlin/fir/java/AbstractFirTypeEnhancementTest.kt +++ b/compiler/fir/analysis-tests/tests/org/jetbrains/kotlin/fir/java/AbstractFirTypeEnhancementTest.kt @@ -105,7 +105,7 @@ abstract class AbstractFirTypeEnhancementTest : KtUsefulTestCase() { val srcFiles = TestFiles.createTestFiles( javaFile.name, FileUtil.loadFile(javaFile, true), object : TestFiles.TestFileFactoryNoModules() { - override fun create(fileName: String, text: String, directives: Map): File { + override fun create(fileName: String, text: String, directives: Directives): File { var currentDir = javaFilesDir if ("/" !in fileName) { val packageFqName = diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/asJava/AbstractCompilerLightClassTest.kt b/compiler/tests-common/tests/org/jetbrains/kotlin/asJava/AbstractCompilerLightClassTest.kt index 443d19bd3d8..b8f2011d19c 100644 --- a/compiler/tests-common/tests/org/jetbrains/kotlin/asJava/AbstractCompilerLightClassTest.kt +++ b/compiler/tests-common/tests/org/jetbrains/kotlin/asJava/AbstractCompilerLightClassTest.kt @@ -19,13 +19,10 @@ package org.jetbrains.kotlin.asJava import com.intellij.psi.PsiClass import com.intellij.psi.search.GlobalSearchScope import org.jetbrains.kotlin.asJava.finder.JavaElementFinder -import org.jetbrains.kotlin.test.KotlinBaseTest import org.jetbrains.kotlin.checkers.KotlinMultiFileTestWithJava import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment import org.jetbrains.kotlin.name.FqName -import org.jetbrains.kotlin.test.ConfigurationKind -import org.jetbrains.kotlin.test.InTextDirectivesUtils -import org.jetbrains.kotlin.test.KotlinTestUtils +import org.jetbrains.kotlin.test.* import org.jetbrains.kotlin.util.KotlinFrontEndException import org.junit.Assert import java.io.File @@ -57,7 +54,7 @@ abstract class AbstractCompilerLightClassTest : KotlinMultiFileTestWithJava + directives: Directives ): TestFile = TestFile(fileName, text, directives) companion object { diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/checkers/BaseDiagnosticsTest.kt b/compiler/tests-common/tests/org/jetbrains/kotlin/checkers/BaseDiagnosticsTest.kt index 68e12c9e8da..14fb92a78a5 100644 --- a/compiler/tests-common/tests/org/jetbrains/kotlin/checkers/BaseDiagnosticsTest.kt +++ b/compiler/tests-common/tests/org/jetbrains/kotlin/checkers/BaseDiagnosticsTest.kt @@ -20,7 +20,6 @@ import com.intellij.openapi.project.Project import com.intellij.openapi.util.Condition import com.intellij.openapi.util.Conditions import com.intellij.openapi.util.TextRange -import com.intellij.openapi.util.text.StringUtil import com.intellij.psi.search.GlobalSearchScope import com.intellij.psi.util.PsiTreeUtil import com.intellij.util.containers.ContainerUtil @@ -52,10 +51,10 @@ import org.jetbrains.kotlin.psi.KtDeclaration import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.resolve.BindingContext import org.jetbrains.kotlin.resolve.calls.smartcasts.DataFlowValueFactoryImpl +import org.jetbrains.kotlin.test.Directives import org.jetbrains.kotlin.test.InTextDirectivesUtils.isDirectiveDefined import org.jetbrains.kotlin.test.KotlinTestUtils import org.jetbrains.kotlin.test.KotlinBaseTest -import org.jetbrains.kotlin.test.util.trimTrailingWhitespacesAndAddNewlineAtEOF import org.jetbrains.kotlin.utils.addIfNotNull import org.junit.Assert import java.io.File @@ -83,7 +82,7 @@ abstract class BaseDiagnosticsTest : KotlinMultiFileTestWithJava): TestFile = + override fun createTestFile(module: TestModule?, fileName: String, text: String, directives: Directives): TestFile = TestFile(module, fileName, text, directives) @@ -138,7 +137,7 @@ abstract class BaseDiagnosticsTest : KotlinMultiFileTestWithJava + directives: Directives ) : KotlinBaseTest.TestFile(fileName, textWithMarkers, directives) { val diagnosedRanges: MutableList = mutableListOf() private val diagnosedRangesToDiagnosticNames: MutableMap> = mutableMapOf() @@ -411,7 +410,7 @@ abstract class BaseDiagnosticsTest : KotlinMultiFileTestWithJava|") fun parseDiagnosticFilterDirective( - directiveMap: Map, + directiveMap: Directives, allowUnderscoreUsage: Boolean ): Condition { val directives = directiveMap[DIAGNOSTICS_DIRECTIVE] @@ -499,7 +498,7 @@ abstract class BaseDiagnosticsTest : KotlinMultiFileTestWithJava) = directiveMap[JVM_TARGET]?.let { JvmTarget.fromString(it) } + private fun parseJvmTarget(directiveMap: Directives) = directiveMap[JVM_TARGET]?.let { JvmTarget.fromString(it) } protected fun parseModulePlatformByName(moduleName: String): TargetPlatform? { val nameSuffix = moduleName.substringAfterLast("-", "").toUpperCase() diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/checkers/CompilerTestLanguageVersionSettings.kt b/compiler/tests-common/tests/org/jetbrains/kotlin/checkers/CompilerTestLanguageVersionSettings.kt index 96c77eba463..3c897f5ccfb 100644 --- a/compiler/tests-common/tests/org/jetbrains/kotlin/checkers/CompilerTestLanguageVersionSettings.kt +++ b/compiler/tests-common/tests/org/jetbrains/kotlin/checkers/CompilerTestLanguageVersionSettings.kt @@ -7,6 +7,7 @@ package org.jetbrains.kotlin.checkers import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment import org.jetbrains.kotlin.config.* +import org.jetbrains.kotlin.test.Directives import org.jetbrains.kotlin.test.KotlinTestUtils import org.junit.Assert import java.io.File @@ -50,10 +51,10 @@ private fun specificFeaturesForTests(): Map): CompilerTestLanguageVersionSettings = +fun parseLanguageVersionSettingsOrDefault(directiveMap: Directives): CompilerTestLanguageVersionSettings = parseLanguageVersionSettings(directiveMap) ?: defaultLanguageVersionSettings() -fun parseLanguageVersionSettings(directives: Map): CompilerTestLanguageVersionSettings? { +fun parseLanguageVersionSettings(directives: Directives): CompilerTestLanguageVersionSettings? { val apiVersionString = directives[API_VERSION_DIRECTIVE] val languageFeaturesString = directives[LANGUAGE_DIRECTIVE] @@ -93,9 +94,9 @@ fun defaultLanguageVersionSettings(): CompilerTestLanguageVersionSettings = CompilerTestLanguageVersionSettings(emptyMap(), ApiVersion.LATEST_STABLE, LanguageVersion.LATEST_STABLE) fun languageVersionSettingsFromText(fileTexts: List): LanguageVersionSettings { - val allDirectives = HashMap() + val allDirectives = Directives() for (fileText in fileTexts) { - allDirectives.putAll(KotlinTestUtils.parseDirectives(fileText)) + KotlinTestUtils.parseDirectives(fileText, allDirectives) } return parseLanguageVersionSettingsOrDefault(allDirectives) } diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/checkers/KotlinMultiFileTestWithJava.kt b/compiler/tests-common/tests/org/jetbrains/kotlin/checkers/KotlinMultiFileTestWithJava.kt index 7ec1693bb9c..86dd3fe901e 100644 --- a/compiler/tests-common/tests/org/jetbrains/kotlin/checkers/KotlinMultiFileTestWithJava.kt +++ b/compiler/tests-common/tests/org/jetbrains/kotlin/checkers/KotlinMultiFileTestWithJava.kt @@ -119,7 +119,7 @@ abstract class KotlinMultiFileTestWithJava, friends: List): M? - protected abstract fun createTestFile(module: M?, fileName: String, text: String, directives: Map): F + protected abstract fun createTestFile(module: M?, fileName: String, text: String, directives: Directives): F protected open fun createTestFiles( file: File, @@ -131,7 +131,7 @@ abstract class KotlinMultiFileTestWithJava + directives: Directives ): F? { if (fileName.endsWith(".java")) { writeSourceFile(fileName, text, javaFilesDir!!) diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/codegen/CodegenTestCase.java b/compiler/tests-common/tests/org/jetbrains/kotlin/codegen/CodegenTestCase.java index 089cb5d9ab4..9e095da5369 100644 --- a/compiler/tests-common/tests/org/jetbrains/kotlin/codegen/CodegenTestCase.java +++ b/compiler/tests-common/tests/org/jetbrains/kotlin/codegen/CodegenTestCase.java @@ -161,7 +161,7 @@ public abstract class CodegenTestCase extends KotlinBaseTest kotlinConfigurationFlags = new ArrayList<>(0); for (TestFile testFile : testFilesWithConfigurationDirectives) { String content = testFile.content; - Map directives = usePreparsedDirectives ? testFile.directives : parseDirectivesAndFlags(content); + Directives directives = usePreparsedDirectives ? testFile.directives : parseDirectivesAndFlags(content); String configurationFlags = directives.get("KOTLIN_CONFIGURATION_FLAGS"); if (configurationFlags != null) { @@ -185,8 +185,8 @@ public abstract class CodegenTestCase extends KotlinBaseTest() { @NotNull @Override - public TestFile create(@NotNull String fileName, @NotNull String text, @NotNull Map directives) { + public TestFile create(@NotNull String fileName, @NotNull String text, @NotNull Directives directives) { return new TestFile(fileName, text, directives); } }, false, coroutinesPackage, parseDirectivesPerFiles()); diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/codegen/InlineTestUtil.kt b/compiler/tests-common/tests/org/jetbrains/kotlin/codegen/InlineTestUtil.kt index b47295b7ae5..d3245131daf 100644 --- a/compiler/tests-common/tests/org/jetbrains/kotlin/codegen/InlineTestUtil.kt +++ b/compiler/tests-common/tests/org/jetbrains/kotlin/codegen/InlineTestUtil.kt @@ -42,7 +42,7 @@ object InlineTestUtil { assert(notInlinedCalls.isEmpty()) { "All inline methods should be inlined but:\n" + notInlinedCalls.joinToString("\n") } val skipParameterChecking = files.any { - it.directives.containsKey("NO_CHECK_LAMBDA_INLINING") + "NO_CHECK_LAMBDA_INLINING" in it.directives } || !doLambdaInliningCheck(outputFiles, inlineInfo) if (!skipParameterChecking) { diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/fir/AbstractFirOldFrontendDiagnosticsTest.kt b/compiler/tests-common/tests/org/jetbrains/kotlin/fir/AbstractFirOldFrontendDiagnosticsTest.kt index 64430f93327..1523bab834a 100644 --- a/compiler/tests-common/tests/org/jetbrains/kotlin/fir/AbstractFirOldFrontendDiagnosticsTest.kt +++ b/compiler/tests-common/tests/org/jetbrains/kotlin/fir/AbstractFirOldFrontendDiagnosticsTest.kt @@ -25,7 +25,7 @@ abstract class AbstractFirOldFrontendDiagnosticsTest : AbstractFirDiagnosticsTes } override fun runAnalysis(testDataFile: File, testFiles: List, firFilesPerSession: Map>) { - if (testFiles.any { it.directives.containsKey("FIR_IGNORE") }) return + if (testFiles.any { "FIR_IGNORE" in it.directives }) return val failure: AssertionError? = try { for ((_, firFiles) in firFilesPerSession) { doFirResolveTestBench(firFiles, FirTotalResolveTransformer().transformers, gc = false) @@ -45,7 +45,7 @@ abstract class AbstractFirOldFrontendDiagnosticsTest : AbstractFirDiagnosticsTes compareAndMergeFirFileAndOldFrontendFile(oldFrontendTestDataFile, testDataFile) } - val needDump = testFiles.any { it.directives.containsKey("FIR_DUMP") } + val needDump = testFiles.any { "FIR_DUMP" in it.directives } if (needDump) { checkFir(testDataFile, allFirFiles) } diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/jvm/compiler/AbstractLoadJavaTest.java b/compiler/tests-common/tests/org/jetbrains/kotlin/jvm/compiler/AbstractLoadJavaTest.java index d60b7fc02cf..4f244b25362 100644 --- a/compiler/tests-common/tests/org/jetbrains/kotlin/jvm/compiler/AbstractLoadJavaTest.java +++ b/compiler/tests-common/tests/org/jetbrains/kotlin/jvm/compiler/AbstractLoadJavaTest.java @@ -163,7 +163,7 @@ public abstract class AbstractLoadJavaTest extends TestCaseWithTmpdir { } public static void updateConfigurationWithDirectives(String content, CompilerConfiguration configuration) { - Map directives = KotlinTestUtils.parseDirectives(content); + Directives directives = KotlinTestUtils.parseDirectives(content); LanguageVersionSettings languageVersionSettings = CompilerTestLanguageVersionSettingsKt.parseLanguageVersionSettings(directives); if (languageVersionSettings == null) { languageVersionSettings = CompilerTestLanguageVersionSettingsKt.defaultLanguageVersionSettings(); @@ -284,7 +284,7 @@ public abstract class AbstractLoadJavaTest extends TestCaseWithTmpdir { new TestFiles.TestFileFactoryNoModules() { @NotNull @Override - public File create(@NotNull String fileName, @NotNull String text, @NotNull Map directives) { + public File create(@NotNull String fileName, @NotNull String text, @NotNull Directives directives) { File targetFile = new File(srcDir, fileName); try { FileUtil.writeToFile(targetFile, text); diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/resolve/ExtensibleResolveTestCase.java b/compiler/tests-common/tests/org/jetbrains/kotlin/resolve/ExtensibleResolveTestCase.java index 7832ca5c5b3..a32170843b9 100644 --- a/compiler/tests-common/tests/org/jetbrains/kotlin/resolve/ExtensibleResolveTestCase.java +++ b/compiler/tests-common/tests/org/jetbrains/kotlin/resolve/ExtensibleResolveTestCase.java @@ -16,7 +16,6 @@ import org.jetbrains.kotlin.test.*; import java.io.File; import java.util.List; -import java.util.Map; public abstract class ExtensibleResolveTestCase extends KotlinTestWithEnvironment { private ExpectedResolveData expectedResolveData; @@ -48,7 +47,7 @@ public abstract class ExtensibleResolveTestCase extends KotlinTestWithEnvironmen List files = TestFiles.createTestFiles("file.kt", text, new TestFiles.TestFileFactoryNoModules() { @NotNull @Override - public KtFile create(@NotNull String fileName, @NotNull String text, @NotNull Map directives) { + public KtFile create(@NotNull String fileName, @NotNull String text, @NotNull Directives directives) { return expectedResolveData.createFileFromMarkedUpText(fileName, text); } }, ""); diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/test/Directives.kt b/compiler/tests-common/tests/org/jetbrains/kotlin/test/Directives.kt new file mode 100644 index 00000000000..c1bb54186ef --- /dev/null +++ b/compiler/tests-common/tests/org/jetbrains/kotlin/test/Directives.kt @@ -0,0 +1,27 @@ +/* + * 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 + +class Directives { + + private val directives = mutableMapOf() + + operator fun contains(key: String): Boolean { + return key in directives + } + + operator fun get(key: String): String? { + return directives[key] + } + + fun put(key: String, value: String?): String? { + return directives.put(key, value) + } + + public fun asMapOfSingleValues(): Map { + return directives.entries.associate { it.key to it.value?.single() } + } +} \ No newline at end of file diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/test/KotlinBaseTest.kt b/compiler/tests-common/tests/org/jetbrains/kotlin/test/KotlinBaseTest.kt index be60f85d68e..2cc8473438c 100644 --- a/compiler/tests-common/tests/org/jetbrains/kotlin/test/KotlinBaseTest.kt +++ b/compiler/tests-common/tests/org/jetbrains/kotlin/test/KotlinBaseTest.kt @@ -73,7 +73,7 @@ abstract class KotlinBaseTest : KtUsefulTestCase() open class TestFile @JvmOverloads constructor( @JvmField val name: String, @JvmField val content: String, - @JvmField val directives: Map = emptyMap() + @JvmField val directives: Directives = Directives() ) : Comparable { override operator fun compareTo(other: TestFile): Int { return name.compareTo(other.name) diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/test/KotlinTestUtils.java b/compiler/tests-common/tests/org/jetbrains/kotlin/test/KotlinTestUtils.java index 614718a1d1e..b73da212460 100644 --- a/compiler/tests-common/tests/org/jetbrains/kotlin/test/KotlinTestUtils.java +++ b/compiler/tests-common/tests/org/jetbrains/kotlin/test/KotlinTestUtils.java @@ -525,12 +525,16 @@ public class KotlinTestUtils { } @NotNull - public static Map parseDirectives(String expectedText) { - Map directives = new HashMap<>(); + public static Directives parseDirectives(String expectedText) { + return parseDirectives(expectedText, new Directives()); + } + + @NotNull + public static Directives parseDirectives(String expectedText, @NotNull Directives directives) { return parseByRegexp(DIRECTIVE_PATTERN, expectedText, directives); } - private static Map parseByRegexp(Pattern pattern, String expectedText, Map directives) { + private static Directives parseByRegexp(Pattern pattern, String expectedText, Directives directives) { Matcher directiveMatcher = pattern.matcher(expectedText); while (directiveMatcher.find()) { String name = directiveMatcher.group(1); @@ -542,8 +546,8 @@ public class KotlinTestUtils { } @NotNull - public static Map parseDirectivesAndFlags(String expectedText) { - Map directiveAndFlags = parseDirectives(expectedText); + public static Directives parseDirectivesAndFlags(String expectedText) { + Directives directiveAndFlags = parseDirectives(expectedText); parseByRegexp(BACKEND_DIRECTIVE_PATTERN, expectedText, directiveAndFlags); return directiveAndFlags; } @@ -561,7 +565,7 @@ public class KotlinTestUtils { List files = TestFiles.createTestFiles("", content, new TestFiles.TestFileFactoryNoModules() { @NotNull @Override - public String create(@NotNull String fileName, @NotNull String text, @NotNull Map directives) { + public String create(@NotNull String fileName, @NotNull String text, @NotNull Directives directives) { int firstLineEnd = text.indexOf('\n'); return StringUtil.trimTrailing(text.substring(firstLineEnd + 1)); } diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/test/TestFiles.java b/compiler/tests-common/tests/org/jetbrains/kotlin/test/TestFiles.java index 74f634c609d..2d7f5e7dc4e 100644 --- a/compiler/tests-common/tests/org/jetbrains/kotlin/test/TestFiles.java +++ b/compiler/tests-common/tests/org/jetbrains/kotlin/test/TestFiles.java @@ -71,7 +71,7 @@ public class TestFiles { commonPrefixOrWholeFile = expectedText; } else { - Map allFilesOrCommonPrefixDirectives = parseDirectivesPerFile ? null : parseDirectivesAndFlags(expectedText); + Directives allFilesOrCommonPrefixDirectives = parseDirectivesPerFile ? null : parseDirectivesAndFlags(expectedText); int processedChars = 0; M module = null; boolean firstFileProcessed = false; @@ -190,7 +190,7 @@ public class TestFiles { } public interface TestFileFactory { - F createFile(@Nullable M module, @NotNull String fileName, @NotNull String text, @NotNull Map directives); + F createFile(@Nullable M module, @NotNull String fileName, @NotNull String text, @NotNull Directives directives); M createModule(@NotNull String name, @NotNull List dependencies, @NotNull List friends); } @@ -200,13 +200,13 @@ public class TestFiles { @Nullable KotlinBaseTest.TestModule module, @NotNull String fileName, @NotNull String text, - @NotNull Map directives + @NotNull Directives directives ) { return create(fileName, text, directives); } @NotNull - public abstract F create(@NotNull String fileName, @NotNull String text, @NotNull Map directives); + public abstract F create(@NotNull String fileName, @NotNull String text, @NotNull Directives directives); @Override public KotlinBaseTest.TestModule createModule(@NotNull String name, @NotNull List dependencies, @NotNull List friends) { diff --git a/compiler/visualizer/tests/org/jetbrains/kotlin/visualizer/AbstractVisualizer.kt b/compiler/visualizer/tests/org/jetbrains/kotlin/visualizer/AbstractVisualizer.kt index 035e62e7053..90fbb0b6f75 100644 --- a/compiler/visualizer/tests/org/jetbrains/kotlin/visualizer/AbstractVisualizer.kt +++ b/compiler/visualizer/tests/org/jetbrains/kotlin/visualizer/AbstractVisualizer.kt @@ -7,6 +7,7 @@ package org.jetbrains.kotlin.visualizer import org.jetbrains.kotlin.checkers.KotlinMultiFileTestWithJava import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment +import org.jetbrains.kotlin.test.Directives import org.jetbrains.kotlin.test.KotlinBaseTest import java.io.File @@ -20,7 +21,7 @@ abstract class AbstractVisualizer : KotlinMultiFileTestWithJava): TestFile = + override fun createTestFile(module: TestModule?, fileName: String, text: String, directives: Directives): TestFile = TestFile(fileName, text, directives) diff --git a/core/descriptors.runtime/tests/org/jetbrains/kotlin/jvm/runtime/AbstractJvmRuntimeDescriptorLoaderTest.kt b/core/descriptors.runtime/tests/org/jetbrains/kotlin/jvm/runtime/AbstractJvmRuntimeDescriptorLoaderTest.kt index 17cb071a489..3795ab8f534 100644 --- a/core/descriptors.runtime/tests/org/jetbrains/kotlin/jvm/runtime/AbstractJvmRuntimeDescriptorLoaderTest.kt +++ b/core/descriptors.runtime/tests/org/jetbrains/kotlin/jvm/runtime/AbstractJvmRuntimeDescriptorLoaderTest.kt @@ -117,7 +117,7 @@ abstract class AbstractJvmRuntimeDescriptorLoaderTest : TestCaseWithTmpdir() { fileName, text, object : TestFileFactoryNoModules() { - override fun create(fileName: String, text: String, directives: Map): File { + override fun create(fileName: String, text: String, directives: Directives): File { val targetFile = File(tmpdir, fileName) targetFile.writeText(adaptJavaSource(text)) return targetFile diff --git a/idea/jvm-debugger/jvm-debugger-test/test/org/jetbrains/kotlin/idea/debugger/test/KotlinDescriptorTestCase.kt b/idea/jvm-debugger/jvm-debugger-test/test/org/jetbrains/kotlin/idea/debugger/test/KotlinDescriptorTestCase.kt index 0b324e5a4cf..4edfb2641b8 100644 --- a/idea/jvm-debugger/jvm-debugger-test/test/org/jetbrains/kotlin/idea/debugger/test/KotlinDescriptorTestCase.kt +++ b/idea/jvm-debugger/jvm-debugger-test/test/org/jetbrains/kotlin/idea/debugger/test/KotlinDescriptorTestCase.kt @@ -30,6 +30,7 @@ import org.jetbrains.kotlin.idea.debugger.test.util.KotlinOutputChecker import org.jetbrains.kotlin.idea.debugger.test.util.LogPropagator import org.jetbrains.kotlin.idea.test.ConfigLibraryUtil import org.jetbrains.kotlin.idea.test.PluginTestCaseBase +import org.jetbrains.kotlin.test.Directives import org.jetbrains.kotlin.test.KotlinBaseTest.TestFile import org.jetbrains.kotlin.test.KotlinTestUtils import org.jetbrains.kotlin.test.TestMetadata @@ -129,7 +130,7 @@ abstract class KotlinDescriptorTestCase : DescriptorTestCase() { wholeFile.name, wholeFileContents, object : org.jetbrains.kotlin.test.TestFiles.TestFileFactoryNoModules() { - override fun create(fileName: String, text: String, directives: Map): TestFile { + override fun create(fileName: String, text: String, directives: Directives): TestFile { return TestFile(fileName, text, directives) } } diff --git a/idea/tests/org/jetbrains/kotlin/idea/highlighter/AbstractDiagnosticMessageTest.java b/idea/tests/org/jetbrains/kotlin/idea/highlighter/AbstractDiagnosticMessageTest.java index 8b2a1aae091..130960e956e 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/highlighter/AbstractDiagnosticMessageTest.java +++ b/idea/tests/org/jetbrains/kotlin/idea/highlighter/AbstractDiagnosticMessageTest.java @@ -77,7 +77,7 @@ public abstract class AbstractDiagnosticMessageTest extends KotlinTestWithEnviro String fileName = file.getName(); String fileData = KotlinTestUtils.doLoadFile(file); - Map directives = KotlinTestUtils.parseDirectives(fileData); + Directives directives = KotlinTestUtils.parseDirectives(fileData); int diagnosticNumber = getDiagnosticNumber(directives); final Set> diagnosticFactories = getDiagnosticFactories(directives); MessageType messageType = getMessageTypeDirective(directives); @@ -149,7 +149,7 @@ public abstract class AbstractDiagnosticMessageTest extends KotlinTestWithEnviro return result; } - private static int getDiagnosticNumber(Map directives) { + private static int getDiagnosticNumber(Directives directives) { String diagnosticsNumber = directives.get(DIAGNOSTICS_NUMBER_DIRECTIVE); assert diagnosticsNumber != null : DIAGNOSTICS_NUMBER_DIRECTIVE + " should be present."; try { @@ -161,7 +161,7 @@ public abstract class AbstractDiagnosticMessageTest extends KotlinTestWithEnviro } @NotNull - private Set> getDiagnosticFactories(Map directives) { + private Set> getDiagnosticFactories(Directives directives) { String diagnosticsData = directives.get(DIAGNOSTICS_DIRECTIVE); assert diagnosticsData != null : DIAGNOSTICS_DIRECTIVE + " should be present."; Set> diagnosticFactories = new HashSet<>(); @@ -206,7 +206,7 @@ public abstract class AbstractDiagnosticMessageTest extends KotlinTestWithEnviro } @Nullable - private static MessageType getMessageTypeDirective(Map directives) { + private static MessageType getMessageTypeDirective(Directives directives) { String messageType = directives.get(MESSAGE_TYPE_DIRECTIVE); if (messageType == null) return null; try { diff --git a/idea/tests/org/jetbrains/kotlin/idea/quickfix/AbstractQuickFixMultiFileTest.kt b/idea/tests/org/jetbrains/kotlin/idea/quickfix/AbstractQuickFixMultiFileTest.kt index d6556933c6c..3dd144704e6 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/quickfix/AbstractQuickFixMultiFileTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/quickfix/AbstractQuickFixMultiFileTest.kt @@ -32,6 +32,7 @@ import org.jetbrains.kotlin.idea.test.DirectiveBasedActionUtils import org.jetbrains.kotlin.idea.test.KotlinLightCodeInsightFixtureTestCase import org.jetbrains.kotlin.idea.test.withCustomCompilerOptions import org.jetbrains.kotlin.psi.KtFile +import org.jetbrains.kotlin.test.Directives import org.jetbrains.kotlin.test.KotlinTestUtils import org.jetbrains.kotlin.test.TestFiles import org.jetbrains.kotlin.test.testFramework.runWriteAction @@ -113,7 +114,7 @@ abstract class AbstractQuickFixMultiFileTest : KotlinLightCodeInsightFixtureTest "single.kt", multiFileText, object : TestFiles.TestFileFactoryNoModules() { - override fun create(fileName: String, text: String, directives: Map): TestFile { + override fun create(fileName: String, text: String, directives: Directives): TestFile { val linesWithoutDirectives = text.lines().filter { !it.startsWith("// LANGUAGE_VERSION") && !it.startsWith("// FILE") } diff --git a/j2k/tests/org/jetbrains/kotlin/j2k/AbstractJavaToKotlinConverterSingleFileTest.kt b/j2k/tests/org/jetbrains/kotlin/j2k/AbstractJavaToKotlinConverterSingleFileTest.kt index 8945d840e11..f9f0d98ef28 100644 --- a/j2k/tests/org/jetbrains/kotlin/j2k/AbstractJavaToKotlinConverterSingleFileTest.kt +++ b/j2k/tests/org/jetbrains/kotlin/j2k/AbstractJavaToKotlinConverterSingleFileTest.kt @@ -10,7 +10,6 @@ import com.intellij.openapi.project.Project import com.intellij.openapi.util.io.FileUtil import com.intellij.psi.PsiJavaFile import com.intellij.psi.codeStyle.CodeStyleManager -import com.intellij.testFramework.LightPlatformTestCase import org.jetbrains.kotlin.idea.j2k.IdeaJavaToKotlinServices import org.jetbrains.kotlin.idea.j2k.J2kPostProcessor import org.jetbrains.kotlin.idea.test.KotlinWithJdkAndRuntimeLightProjectDescriptor @@ -38,7 +37,7 @@ abstract class AbstractJavaToKotlinConverterSingleFileTest : AbstractJavaToKotli val settings = ConverterSettings.defaultSettings.copy() val directives = KotlinTestUtils.parseDirectives(javaCode) - for ((name, value) in directives) { + for ((name, value) in directives.asMapOfSingleValues()) { when (name) { "forceNotNullTypes" -> settings.forceNotNullTypes = value.toBoolean() "specifyLocalVariableTypeByDefault" -> settings.specifyLocalVariableTypeByDefault = value.toBoolean() diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/AbstractJsLineNumberTest.kt b/js/js.tests/test/org/jetbrains/kotlin/js/test/AbstractJsLineNumberTest.kt index 297559da514..88e303b046c 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/AbstractJsLineNumberTest.kt +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/AbstractJsLineNumberTest.kt @@ -30,10 +30,7 @@ import org.jetbrains.kotlin.js.test.utils.LineOutputToStringVisitor import org.jetbrains.kotlin.js.util.TextOutputImpl import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.serialization.js.ModuleKind -import org.jetbrains.kotlin.test.KotlinBaseTest -import org.jetbrains.kotlin.test.KotlinTestUtils -import org.jetbrains.kotlin.test.KotlinTestWithEnvironment -import org.jetbrains.kotlin.test.TestFiles +import org.jetbrains.kotlin.test.* import org.jetbrains.kotlin.utils.DFS import java.io.ByteArrayOutputStream import java.io.Closeable @@ -140,7 +137,7 @@ abstract class AbstractJsLineNumberTest : KotlinTestWithEnvironment() { private val tmpDir = KotlinTestUtils.tmpDir("js-tests") private val defaultModule = TestModule(BasicBoxTest.TEST_MODULE, emptyList(), emptyList()) - override fun createFile(module: TestModule?, fileName: String, text: String, directives: Map): TestFile? { + override fun createFile(module: TestModule?, fileName: String, text: String, directives: Directives): TestFile? { val currentModule = module ?: defaultModule val temporaryFile = File(tmpDir, "${currentModule.name}/$fileName") @@ -165,7 +162,7 @@ abstract class AbstractJsLineNumberTest : KotlinTestWithEnvironment() { val files = mutableListOf() } - private class TestFile(val fileName: String, content: String, val module: TestModule, directives: Map) : + private class TestFile(val fileName: String, content: String, val module: TestModule, directives: Directives) : KotlinBaseTest.TestFile(fileName, content, directives) { init { module.files += this diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/BasicBoxTest.kt b/js/js.tests/test/org/jetbrains/kotlin/js/test/BasicBoxTest.kt index b05b0d58f4c..f8debe3bd1f 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/BasicBoxTest.kt +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/BasicBoxTest.kt @@ -778,7 +778,7 @@ abstract class BasicBoxTest( val defaultModule = TestModule(TEST_MODULE, emptyList(), emptyList()) var languageVersionSettings: LanguageVersionSettings? = null - override fun createFile(module: TestModule?, fileName: String, text: String, directives: Map): TestFile? { + override fun createFile(module: TestModule?, fileName: String, text: String, directives: Directives): TestFile? { val currentModule = module ?: defaultModule val ktFile = KtPsiFactory(project).createFile(text) diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/BasicWasmBoxTest.kt b/js/js.tests/test/org/jetbrains/kotlin/js/test/BasicWasmBoxTest.kt index defd42195a2..af3ddc1891e 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/BasicWasmBoxTest.kt +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/BasicWasmBoxTest.kt @@ -28,6 +28,7 @@ import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.psi.KtNamedFunction import org.jetbrains.kotlin.psi.KtPsiFactory +import org.jetbrains.kotlin.test.Directives import org.jetbrains.kotlin.test.KotlinTestUtils import org.jetbrains.kotlin.test.KotlinTestWithEnvironment import org.jetbrains.kotlin.test.TestFiles @@ -158,7 +159,7 @@ abstract class BasicWasmBoxTest( } private inner class TestFileFactoryImpl : TestFiles.TestFileFactoryNoModules(), Closeable { - override fun create(fileName: String, text: String, directives: MutableMap): TestFile { + override fun create(fileName: String, text: String, directives: Directives): TestFile { val ktFile = KtPsiFactory(project).createFile(text) val boxFunction = ktFile.declarations.find { it is KtNamedFunction && it.name == TEST_FUNCTION } if (boxFunction != null) {