diff --git a/build.gradle.kts b/build.gradle.kts index f2f6169886d..7b6f6f74977 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -141,7 +141,6 @@ extra["versions.javaslang"] = "2.0.6" extra["versions.ant"] = "1.8.2" extra["versions.android"] = "2.3.1" extra["versions.kotlinx-coroutines-core"] = "0.20" -extra["versions.kotlinx-serialization-runtime"] = "0.4.2" extra["versions.kotlinx-coroutines-jdk8"] = "0.20" extra["versions.json"] = "20160807" extra["versions.native-platform"] = "0.14" diff --git a/build.gradle.kts.182 b/build.gradle.kts.182 index f8fc893a3e7..08377ccf633 100644 --- a/build.gradle.kts.182 +++ b/build.gradle.kts.182 @@ -141,7 +141,6 @@ extra["versions.javaslang"] = "2.0.6" extra["versions.ant"] = "1.8.2" extra["versions.android"] = "2.3.1" extra["versions.kotlinx-coroutines-core"] = "0.20" -extra["versions.kotlinx-serialization-runtime"] = "0.4.2" extra["versions.kotlinx-coroutines-jdk8"] = "0.20" extra["versions.json"] = "20160807" extra["versions.native-platform"] = "0.14" diff --git a/compiler/cli/build.gradle.kts b/compiler/cli/build.gradle.kts index a9a66cfba94..8955492db26 100644 --- a/compiler/cli/build.gradle.kts +++ b/compiler/cli/build.gradle.kts @@ -20,7 +20,6 @@ dependencies { compile(project(":js:js.translator")) compile(project(":js:js.serializer")) compile(project(":js:js.dce")) - compile(commonDep("org.jetbrains.kotlinx", "kotlinx-serialization-runtime")) { isTransitive = false } compile(commonDep("org.fusesource.jansi", "jansi")) compile(commonDep("org.jline", "jline")) compile(files("${System.getProperty("java.home")}/../lib/tools.jar")) diff --git a/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/K2JVMCompilerArguments.kt b/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/K2JVMCompilerArguments.kt index 7262e29d584..f80a99ec024 100644 --- a/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/K2JVMCompilerArguments.kt +++ b/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/K2JVMCompilerArguments.kt @@ -222,13 +222,6 @@ class K2JVMCompilerArguments : CommonCompilerArguments() { ) var noExceptionOnExplicitEqualsForBoxedNull by FreezableVar(false) - @Argument( - value = "-Xoutput-imports", - valueDescription = "", - description = "Output imports from all compiled files to the specified file in JSON format" - ) - var outputImports: String? by FreezableVar(null) - @Argument(value = "-Xenable-jvm-default", description = "Allow to use '@JvmDefault' for JVM default method support") var enableJvmDefault: Boolean by FreezableVar(false) diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/K2JVMCompiler.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/K2JVMCompiler.kt index b0388ea452c..ba71c55bd90 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/K2JVMCompiler.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/K2JVMCompiler.kt @@ -23,7 +23,10 @@ import org.jetbrains.kotlin.cli.common.ExitCode.* import org.jetbrains.kotlin.cli.common.arguments.K2JVMCompilerArguments import org.jetbrains.kotlin.cli.common.messages.* import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity.* -import org.jetbrains.kotlin.cli.jvm.compiler.* +import org.jetbrains.kotlin.cli.jvm.compiler.CompileEnvironmentUtil +import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles +import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment +import org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler import org.jetbrains.kotlin.cli.jvm.config.JvmClasspathRoot import org.jetbrains.kotlin.cli.jvm.config.JvmModulePathRoot import org.jetbrains.kotlin.cli.jvm.config.addJavaSourceRoot @@ -31,7 +34,6 @@ import org.jetbrains.kotlin.cli.jvm.modules.CoreJrtFileSystem import org.jetbrains.kotlin.cli.jvm.plugins.PluginCliParser import org.jetbrains.kotlin.cli.jvm.repl.ReplFromTerminal import org.jetbrains.kotlin.codegen.CompilationException -import org.jetbrains.kotlin.compiler.plugin.ComponentRegistrar import org.jetbrains.kotlin.config.* import org.jetbrains.kotlin.incremental.components.ExpectActualTracker import org.jetbrains.kotlin.incremental.components.LookupTracker @@ -390,11 +392,6 @@ class K2JVMCompiler : CLICompiler() { configuration.put(JVMConfigurationKeys.ADD_BUILT_INS_FROM_COMPILER_TO_DEPENDENCIES, arguments.addCompilerBuiltIns) configuration.put(JVMConfigurationKeys.CREATE_BUILT_INS_FROM_MODULE_DEPENDENCIES, arguments.loadBuiltInsFromDependencies) - if (arguments.outputImports != null) { - configuration.put(JVMConfigurationKeys.OUTPUT_IMPORTS, arguments.outputImports!!) - configuration.add(ComponentRegistrar.PLUGIN_COMPONENT_REGISTRARS, ImportsProducerComponentRegistrar()) - } - arguments.declarationsOutputPath?.let { configuration.put(JVMConfigurationKeys.DECLARATIONS_JSON_PATH, it) } } diff --git a/compiler/compiler.pro b/compiler/compiler.pro index 75c8728ead5..aa343276405 100644 --- a/compiler/compiler.pro +++ b/compiler/compiler.pro @@ -219,7 +219,4 @@ messages/**) # remove when KT-18563 would be fixed -keep class org.jetbrains.kotlin.psi.psiUtil.PsiUtilsKt { *; } -# for imports dumper in compiler --keep class kotlinx.serialization.** { *; } - -keep class net.jpountz.lz4.* { *; } diff --git a/compiler/compiler.pro.172 b/compiler/compiler.pro.172 index 44fcae37bc1..50e652a529a 100644 --- a/compiler/compiler.pro.172 +++ b/compiler/compiler.pro.172 @@ -215,6 +215,3 @@ messages/**) # remove when KT-18563 would be fixed -keep class org.jetbrains.kotlin.psi.psiUtil.PsiUtilsKt { *; } - -# for imports dumper in compiler --keep class kotlinx.serialization.** { *; } diff --git a/compiler/compiler.pro.182 b/compiler/compiler.pro.182 index 07730a1de22..d66e0cfb328 100644 --- a/compiler/compiler.pro.182 +++ b/compiler/compiler.pro.182 @@ -223,7 +223,4 @@ messages/**) # remove when KT-18563 would be fixed -keep class org.jetbrains.kotlin.psi.psiUtil.PsiUtilsKt { *; } -# for imports dumper in compiler --keep class kotlinx.serialization.** { *; } - -keep class net.jpountz.lz4.* { *; } diff --git a/compiler/compiler.pro.as32 b/compiler/compiler.pro.as32 index e7b7fbd7098..cecfab73b98 100644 --- a/compiler/compiler.pro.as32 +++ b/compiler/compiler.pro.as32 @@ -219,6 +219,3 @@ messages/**) # remove when KT-18563 would be fixed -keep class org.jetbrains.kotlin.psi.psiUtil.PsiUtilsKt { *; } - -# for imports dumper in compiler --keep class kotlinx.serialization.** { *; } diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/config/JVMConfigurationKeys.java b/compiler/frontend.java/src/org/jetbrains/kotlin/config/JVMConfigurationKeys.java index e6206dae6fa..92c1502ea53 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/config/JVMConfigurationKeys.java +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/config/JVMConfigurationKeys.java @@ -139,9 +139,6 @@ public class JVMConfigurationKeys { public static final CompilerConfigurationKey> ADDITIONAL_JAVA_MODULES = CompilerConfigurationKey.create("additional Java modules"); - public static final CompilerConfigurationKey OUTPUT_IMPORTS = - CompilerConfigurationKey.create("output imports"); - public static final CompilerConfigurationKey ENABLE_JVM_DEFAULT = CompilerConfigurationKey.create("Allow to use '@JvmDefault'"); } diff --git a/compiler/testData/cli/jvm/extraHelp.out b/compiler/testData/cli/jvm/extraHelp.out index a8f6f77df82..c5b86829893 100644 --- a/compiler/testData/cli/jvm/extraHelp.out +++ b/compiler/testData/cli/jvm/extraHelp.out @@ -39,7 +39,6 @@ where advanced options include: -Xno-optimize Disable optimizations -Xno-param-assertions Don't generate not-null assertions on parameters of methods accessible from Java -Xno-receiver-assertions Don't generate not-null assertion for extension receiver arguments of platform types - -Xoutput-imports= Output imports from all compiled files to the specified file in JSON format -Xscript-resolver-environment= Script resolver environment in key-value pairs (the value could be quoted and escaped) -Xsingle-module Combine modules for source files and binary dependencies into a single module diff --git a/include/kotlin-compiler/build.gradle.kts b/include/kotlin-compiler/build.gradle.kts index 04f518a597e..23db7d5dceb 100644 --- a/include/kotlin-compiler/build.gradle.kts +++ b/include/kotlin-compiler/build.gradle.kts @@ -24,7 +24,6 @@ dependencies { fatJarContents(commonDep("com.google.code.findbugs", "jsr305")) fatJarContents(commonDep("io.javaslang", "javaslang")) fatJarContents(commonDep("org.jetbrains.kotlinx", "kotlinx-coroutines-core")) { isTransitive = false } - fatJarContents(commonDep("org.jetbrains.kotlinx", "kotlinx-serialization-runtime")) { isTransitive = false } fatJarContents(intellijCoreDep()) { includeJars("intellij-core") } fatJarContents(intellijDep()) { includeIntellijCoreJarDependencies(project, { !(it.startsWith("jdom") || it.startsWith("log4j")) }) } diff --git a/include/kotlin-compiler/build.gradle.kts.173 b/include/kotlin-compiler/build.gradle.kts.173 index b463e3d322e..bf2853e497e 100644 --- a/include/kotlin-compiler/build.gradle.kts.173 +++ b/include/kotlin-compiler/build.gradle.kts.173 @@ -24,7 +24,6 @@ dependencies { fatJarContents(commonDep("com.google.code.findbugs", "jsr305")) fatJarContents(commonDep("io.javaslang", "javaslang")) fatJarContents(commonDep("org.jetbrains.kotlinx", "kotlinx-coroutines-core")) { isTransitive = false } - fatJarContents(commonDep("org.jetbrains.kotlinx", "kotlinx-serialization-runtime")) { isTransitive = false } fatJarContents(intellijCoreDep()) { includeJars("intellij-core") } fatJarContents(intellijDep()) { includeIntellijCoreJarDependencies(project, { !(it.startsWith("jdom") || it.startsWith("log4j")) }) } diff --git a/plugins/imports-dumper/build.gradle.kts b/plugins/imports-dumper/build.gradle.kts new file mode 100644 index 00000000000..8ce4787909d --- /dev/null +++ b/plugins/imports-dumper/build.gradle.kts @@ -0,0 +1,39 @@ + +description = "Extension for saving imports of .kt-files in JSON" + +plugins { + kotlin("jvm") + id("jps-compatible") +} + +val kotlinxSerializationVersion = "0.4.2" + +dependencies { + compile(project(":compiler:frontend.java")) + compile(project(":compiler:plugin-api")) + compileOnly("org.jetbrains.kotlinx", "kotlinx-serialization-runtime", kotlinxSerializationVersion) { isTransitive = false } + + compile(intellijCoreDep()) { includeJars("intellij-core") } + + testCompile(project(":compiler:tests-common")) + testCompile(projectTests(":compiler:tests-common")) + + + embeddedComponents("org.jetbrains.kotlinx", "kotlinx-serialization-runtime", kotlinxSerializationVersion) { isTransitive = false } +} + +sourceSets { + "main" { projectDefault() } + "test" { projectDefault() } +} + +projectTest { + workingDir = rootDir + dependsOn(":dist") +} + +runtimeJar { + fromEmbeddedComponents() +} + +dist() \ No newline at end of file diff --git a/plugins/imports-dumper/src/META-INF/services/org.jetbrains.kotlin.compiler.plugin.CommandLineProcessor b/plugins/imports-dumper/src/META-INF/services/org.jetbrains.kotlin.compiler.plugin.CommandLineProcessor new file mode 100644 index 00000000000..f9c567cfe61 --- /dev/null +++ b/plugins/imports-dumper/src/META-INF/services/org.jetbrains.kotlin.compiler.plugin.CommandLineProcessor @@ -0,0 +1,6 @@ +# +# Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license +# that can be found in the license/LICENSE.txt file. +# + +org.jetbrains.kotlin.importsDumper.ImportsDumperCommandLineProcessor \ No newline at end of file diff --git a/plugins/imports-dumper/src/META-INF/services/org.jetbrains.kotlin.compiler.plugin.ComponentRegistrar b/plugins/imports-dumper/src/META-INF/services/org.jetbrains.kotlin.compiler.plugin.ComponentRegistrar new file mode 100644 index 00000000000..8c3cb862e6b --- /dev/null +++ b/plugins/imports-dumper/src/META-INF/services/org.jetbrains.kotlin.compiler.plugin.ComponentRegistrar @@ -0,0 +1,6 @@ +# +# Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license +# that can be found in the license/LICENSE.txt file. +# + +org.jetbrains.kotlin.importsDumper.ImportsDumperComponentRegistrar \ No newline at end of file diff --git a/plugins/imports-dumper/src/org/jetbrains/kotlin/importsDumper/ImportsDumperCommandLineProcessor.kt b/plugins/imports-dumper/src/org/jetbrains/kotlin/importsDumper/ImportsDumperCommandLineProcessor.kt new file mode 100644 index 00000000000..bca3a7305ad --- /dev/null +++ b/plugins/imports-dumper/src/org/jetbrains/kotlin/importsDumper/ImportsDumperCommandLineProcessor.kt @@ -0,0 +1,42 @@ +/* + * Copyright 2010-2018 JetBrains s.r.o. 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.importsDumper + +import org.jetbrains.kotlin.compiler.plugin.CliOption +import org.jetbrains.kotlin.compiler.plugin.CliOptionProcessingException +import org.jetbrains.kotlin.compiler.plugin.CommandLineProcessor +import org.jetbrains.kotlin.config.CompilerConfiguration +import org.jetbrains.kotlin.config.CompilerConfigurationKey + +object ImportsDumperCliOptions { + val DESTINATION = CliOption( + name = "output-imports", + valueDescription = "", + description = "Output imports from all compiled files to the specified file in JSON format", + required = false // non-required because importsDumper is a bundled plugin + ) +} + +object ImportsDumperConfigurationKeys { + val DESTINATION = CompilerConfigurationKey.create("Destination of imports dump") +} + +class ImportsDumperCommandLineProcessor : CommandLineProcessor { + override val pluginId: String = PLUGIN_ID + + override val pluginOptions: Collection = listOf(ImportsDumperCliOptions.DESTINATION) + + override fun processOption(option: CliOption, value: String, configuration: CompilerConfiguration) { + when (option) { + ImportsDumperCliOptions.DESTINATION -> configuration.put(ImportsDumperConfigurationKeys.DESTINATION, value) + else -> throw CliOptionProcessingException("Unknown option: ${option.name}") + } + } + + companion object { + const val PLUGIN_ID = "org.jetbrains.kotlin.importsDumper" + } +} \ No newline at end of file diff --git a/plugins/imports-dumper/src/org/jetbrains/kotlin/importsDumper/ImportsDumperComponentRegistrar.kt b/plugins/imports-dumper/src/org/jetbrains/kotlin/importsDumper/ImportsDumperComponentRegistrar.kt new file mode 100644 index 00000000000..a5f0914ad24 --- /dev/null +++ b/plugins/imports-dumper/src/org/jetbrains/kotlin/importsDumper/ImportsDumperComponentRegistrar.kt @@ -0,0 +1,18 @@ +/* + * Copyright 2010-2018 JetBrains s.r.o. 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.importsDumper + +import com.intellij.mock.MockProject +import org.jetbrains.kotlin.compiler.plugin.ComponentRegistrar +import org.jetbrains.kotlin.config.CompilerConfiguration +import org.jetbrains.kotlin.resolve.jvm.extensions.AnalysisHandlerExtension + +class ImportsDumperComponentRegistrar : ComponentRegistrar { + override fun registerProjectComponents(project: MockProject, configuration: CompilerConfiguration) { + val destinationPath = configuration[ImportsDumperConfigurationKeys.DESTINATION] ?: return + AnalysisHandlerExtension.registerExtension(project, ImportsDumperExtension(destinationPath)) + } +} \ No newline at end of file diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/ImportsProducerExtension.kt b/plugins/imports-dumper/src/org/jetbrains/kotlin/importsDumper/ImportsDumperExtension.kt similarity index 69% rename from compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/ImportsProducerExtension.kt rename to plugins/imports-dumper/src/org/jetbrains/kotlin/importsDumper/ImportsDumperExtension.kt index 2028cf890e9..6f2c3aea0ba 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/ImportsProducerExtension.kt +++ b/plugins/imports-dumper/src/org/jetbrains/kotlin/importsDumper/ImportsDumperExtension.kt @@ -3,18 +3,14 @@ * that can be found in the license/LICENSE.txt file. */ -package org.jetbrains.kotlin.cli.jvm.compiler +package org.jetbrains.kotlin.importsDumper -import com.intellij.mock.MockProject import com.intellij.openapi.project.Project import kotlinx.serialization.internal.StringSerializer import kotlinx.serialization.json.JSON import kotlinx.serialization.list import kotlinx.serialization.map import org.jetbrains.kotlin.analyzer.AnalysisResult -import org.jetbrains.kotlin.compiler.plugin.ComponentRegistrar -import org.jetbrains.kotlin.config.CompilerConfiguration -import org.jetbrains.kotlin.config.JVMConfigurationKeys import org.jetbrains.kotlin.container.ComponentProvider import org.jetbrains.kotlin.context.ProjectContext import org.jetbrains.kotlin.descriptors.ModuleDescriptor @@ -23,14 +19,7 @@ import org.jetbrains.kotlin.resolve.BindingTrace import org.jetbrains.kotlin.resolve.jvm.extensions.AnalysisHandlerExtension import java.io.File -class ImportsProducerComponentRegistrar : ComponentRegistrar { - override fun registerProjectComponents(project: MockProject, configuration: CompilerConfiguration) { - val destinationPath = configuration[JVMConfigurationKeys.OUTPUT_IMPORTS] ?: return - AnalysisHandlerExtension.registerExtension(project, ImportsProducerExtension(destinationPath)) - } -} - -class ImportsProducerExtension(destinationPath: String) : AnalysisHandlerExtension { +class ImportsDumperExtension(destinationPath: String) : AnalysisHandlerExtension { private val destination: File = File(destinationPath) override fun doAnalysis( diff --git a/compiler/testData/importsProducer/simpleCase/a/A1.kt b/plugins/imports-dumper/testData/simpleCase/a/A1.kt similarity index 100% rename from compiler/testData/importsProducer/simpleCase/a/A1.kt rename to plugins/imports-dumper/testData/simpleCase/a/A1.kt diff --git a/compiler/testData/importsProducer/simpleCase/a/A2.kt b/plugins/imports-dumper/testData/simpleCase/a/A2.kt similarity index 100% rename from compiler/testData/importsProducer/simpleCase/a/A2.kt rename to plugins/imports-dumper/testData/simpleCase/a/A2.kt diff --git a/compiler/testData/importsProducer/simpleCase/b/B1.kt b/plugins/imports-dumper/testData/simpleCase/b/B1.kt similarity index 100% rename from compiler/testData/importsProducer/simpleCase/b/B1.kt rename to plugins/imports-dumper/testData/simpleCase/b/B1.kt diff --git a/compiler/testData/importsProducer/simpleCase/b/nestedB/B2.kt b/plugins/imports-dumper/testData/simpleCase/b/nestedB/B2.kt similarity index 100% rename from compiler/testData/importsProducer/simpleCase/b/nestedB/B2.kt rename to plugins/imports-dumper/testData/simpleCase/b/nestedB/B2.kt diff --git a/compiler/testData/importsProducer/simpleCase/c/C1.kt b/plugins/imports-dumper/testData/simpleCase/c/C1.kt similarity index 100% rename from compiler/testData/importsProducer/simpleCase/c/C1.kt rename to plugins/imports-dumper/testData/simpleCase/c/C1.kt diff --git a/compiler/testData/importsProducer/simpleCase/c/JavaC.java b/plugins/imports-dumper/testData/simpleCase/c/JavaC.java similarity index 100% rename from compiler/testData/importsProducer/simpleCase/c/JavaC.java rename to plugins/imports-dumper/testData/simpleCase/c/JavaC.java diff --git a/compiler/testData/importsProducer/simpleCase/simpleCase.dump b/plugins/imports-dumper/testData/simpleCase/simpleCase.dump similarity index 100% rename from compiler/testData/importsProducer/simpleCase/simpleCase.dump rename to plugins/imports-dumper/testData/simpleCase/simpleCase.dump diff --git a/compiler/testData/importsProducer/simpleCase/simpleCase.out b/plugins/imports-dumper/testData/simpleCase/simpleCase.out similarity index 100% rename from compiler/testData/importsProducer/simpleCase/simpleCase.out rename to plugins/imports-dumper/testData/simpleCase/simpleCase.out diff --git a/compiler/tests/org/jetbrains/kotlin/cli/ImportsProducerTest.kt b/plugins/imports-dumper/tests/org/jetbrains/kotlin/importsDumper/ImportsDumperTest.kt similarity index 67% rename from compiler/tests/org/jetbrains/kotlin/cli/ImportsProducerTest.kt rename to plugins/imports-dumper/tests/org/jetbrains/kotlin/importsDumper/ImportsDumperTest.kt index 5375051588e..1434be94930 100644 --- a/compiler/tests/org/jetbrains/kotlin/cli/ImportsProducerTest.kt +++ b/plugins/imports-dumper/tests/org/jetbrains/kotlin/importsDumper/ImportsDumperTest.kt @@ -3,29 +3,27 @@ * that can be found in the license/LICENSE.txt file. */ -package org.jetbrains.kotlin.cli +package org.jetbrains.kotlin.importsDumper import com.intellij.openapi.util.io.FileUtil import com.intellij.testFramework.TestDataPath import junit.framework.TestCase import org.jetbrains.kotlin.cli.AbstractCliTest.* -import org.jetbrains.kotlin.cli.common.ExitCode import org.jetbrains.kotlin.cli.jvm.K2JVMCompiler import org.jetbrains.kotlin.test.KotlinTestUtils import org.jetbrains.kotlin.test.TestCaseWithTmpdir import org.jetbrains.kotlin.test.TestMetadata import java.io.File -@TestMetadata("compiler/testData/importsProducer") +@TestMetadata("plugins/imports-dumper/testData") @TestDataPath("\$PROJECT_ROOT") -class ImportsProducerTest : TestCaseWithTmpdir() { +class ImportsDumperTest : TestCaseWithTmpdir() { - @TestMetadata("simpleCase/importsProducer.args") - fun testImportsProducer() { - doTest("compiler/testData/importsProducer/simpleCase") + fun testSimple() { + doTest("plugins/imports-dumper/testData/simpleCase") } - fun doTest(testDataDirPath: String) { + private fun doTest(testDataDirPath: String) { System.setProperty("java.awt.headless", "true") val testDataDir = File(testDataDirPath) val expectedDumpFile = testDataDir.resolve(testDataDir.name + ".dump") @@ -33,7 +31,7 @@ class ImportsProducerTest : TestCaseWithTmpdir() { val actualDumpFile = tmpdir.resolve(testDataDir.name + ".dump") // Check CLI-output of compiler - val actualOutput = invokeImportsProducerAndGrabOutput(testDataDir, tmpdir, actualDumpFile) + val actualOutput = invokeImportsDumperAndGrabOutput(testDataDir, tmpdir, actualDumpFile) KotlinTestUtils.assertEqualsToFile(expectedOutputFile, actualOutput) // Check imports dump @@ -45,27 +43,27 @@ class ImportsProducerTest : TestCaseWithTmpdir() { KotlinTestUtils.assertEqualsToFile(expectedDumpFile, actualRelativizedDump) } - private fun invokeImportsProducerAndGrabOutput(testDataDir: File, tmpDir: File, actualDumpFile: File): String { + private fun invokeImportsDumperAndGrabOutput(testDataDir: File, tmpDir: File, actualDumpFile: File): String { + val importsDumperJarInDist = File("dist/kotlinc/lib/kotlin-imports-dumper-compiler-plugin.jar") + if (!importsDumperJarInDist.exists()) { + TestCase.fail(".jar for imports dumper isn't found, searched: ${importsDumperJarInDist.absolutePath}") + } + val compiler = K2JVMCompiler() val (output, exitCode) = executeCompilerGrabOutput( compiler, listOf( testDataDir.absolutePath, - DESTINATION_COMPILER_ARGUMENT, + "-d", tmpDir.path, - OUTPUT_IMPORTS_COMPILER_ARGUMENT + "=" + actualDumpFile.path + "-Xplugin=${importsDumperJarInDist.path}", + "-P", + "plugin:${ImportsDumperCommandLineProcessor.PLUGIN_ID}:${ImportsDumperCliOptions.DESTINATION.name}=${actualDumpFile.path}" ) ) -// TestCase.assertEquals("Imports dumper should return ExitCode.OK", ExitCode.OK, exitCode) - return getNormalizedCompilerOutput(output, exitCode, testDataDir.path) } - - companion object { - const val DESTINATION_COMPILER_ARGUMENT = "-d" - const val OUTPUT_IMPORTS_COMPILER_ARGUMENT = "-Xoutput-imports" - } } private fun String.relativizeAbsolutePaths(relativeTo: File): String { diff --git a/prepare/compiler/build.gradle.kts b/prepare/compiler/build.gradle.kts index a5c75cb8081..4cd4e24d76c 100644 --- a/prepare/compiler/build.gradle.kts +++ b/prepare/compiler/build.gradle.kts @@ -56,7 +56,6 @@ dependencies { fatJarContents(commonDep("com.google.code.findbugs", "jsr305")) fatJarContents(commonDep("io.javaslang", "javaslang")) fatJarContents(commonDep("org.jetbrains.kotlinx", "kotlinx-coroutines-core")) { isTransitive = false } - fatJarContents(commonDep("org.jetbrains.kotlinx", "kotlinx-serialization-runtime")) { isTransitive = false } proguardLibraryJars(files(firstFromJavaHomeThatExists("jre/lib/rt.jar", "../Classes/classes.jar"), firstFromJavaHomeThatExists("jre/lib/jsse.jar", "../Classes/jsse.jar"), diff --git a/prepare/compiler/build.gradle.kts.173 b/prepare/compiler/build.gradle.kts.173 index edb08e4e537..c86dc575fa0 100644 --- a/prepare/compiler/build.gradle.kts.173 +++ b/prepare/compiler/build.gradle.kts.173 @@ -56,7 +56,6 @@ dependencies { fatJarContents(commonDep("com.google.code.findbugs", "jsr305")) fatJarContents(commonDep("io.javaslang", "javaslang")) fatJarContents(commonDep("org.jetbrains.kotlinx", "kotlinx-coroutines-core")) { isTransitive = false } - fatJarContents(commonDep("org.jetbrains.kotlinx", "kotlinx-serialization-runtime")) { isTransitive = false } proguardLibraryJars(files(firstFromJavaHomeThatExists("jre/lib/rt.jar", "../Classes/classes.jar"), firstFromJavaHomeThatExists("jre/lib/jsse.jar", "../Classes/jsse.jar"), diff --git a/prepare/compiler/build.gradle.kts.182 b/prepare/compiler/build.gradle.kts.182 index 92577933722..78e2058f7ea 100644 --- a/prepare/compiler/build.gradle.kts.182 +++ b/prepare/compiler/build.gradle.kts.182 @@ -56,7 +56,6 @@ dependencies { fatJarContents(commonDep("com.google.code.findbugs", "jsr305")) fatJarContents(commonDep("io.javaslang", "javaslang")) fatJarContents(commonDep("org.jetbrains.kotlinx", "kotlinx-coroutines-core")) { isTransitive = false } - fatJarContents(commonDep("org.jetbrains.kotlinx", "kotlinx-serialization-runtime")) { isTransitive = false } proguardLibraryJars(files(firstFromJavaHomeThatExists("jre/lib/rt.jar", "../Classes/classes.jar"), firstFromJavaHomeThatExists("jre/lib/jsse.jar", "../Classes/jsse.jar"), diff --git a/settings.gradle b/settings.gradle index e736977389c..0eb96e96a57 100644 --- a/settings.gradle +++ b/settings.gradle @@ -89,6 +89,7 @@ include ":kotlin-build-common", ":noarg-ide-plugin", ":kotlin-sam-with-receiver-compiler-plugin", ":sam-with-receiver-ide-plugin", + ":kotlin-imports-dumper-compiler-plugin", ":kotlin-source-sections-compiler-plugin", ":plugins:uast-kotlin", ":plugins:uast-kotlin-idea", @@ -273,6 +274,7 @@ project(':examples:scripting-jvm-simple-script-host').projectDir = "$rootDir/lib project(':examples:scripting-jvm-maven-deps').projectDir = "$rootDir/libraries/examples/scripting/jvm-maven-deps/script" as File project(':examples:scripting-jvm-maven-deps-host').projectDir = "$rootDir/libraries/examples/scripting/jvm-maven-deps/host" as File project(':pill:generate-all-tests').projectDir = "$rootDir/plugins/pill/generate-all-tests" as File +project(':kotlin-imports-dumper-compiler-plugin').projectDir = "$rootDir/plugins/imports-dumper" as File // plugin markers: project(':kotlin-gradle-plugin:plugin-marker').projectDir = file("$rootDir/libraries/tools/kotlin-gradle-plugin/plugin-marker")