From 381a3e791793ccbbbd994e5ddc38f7abd4071e8a Mon Sep 17 00:00:00 2001 From: "sebastian.sellmair" Date: Sat, 18 Dec 2021 08:45:15 +0100 Subject: [PATCH] [MPP] Improve readability of MultiplatformDiagnosticsDirectives - Improved description as suggested during code review - Renamed MULTIPLATFORM_COMPOSITE_ANALYSIS_MODE du *_ENABLED ^KT-50120 --- .../test/directives/MultiplatformDiagnosticsDirectives.kt | 7 ++++--- .../kotlin/test/frontend/classic/ClassicFrontendFacade.kt | 6 +++--- .../frontend/classic/MultiplatformAnalysisConfiguration.kt | 4 ++-- ...actDiagnosticsWithMultiplatformCompositeAnalysisTest.kt | 2 +- 4 files changed, 10 insertions(+), 9 deletions(-) diff --git a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/directives/MultiplatformDiagnosticsDirectives.kt b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/directives/MultiplatformDiagnosticsDirectives.kt index 077dfec8e7d..cb4e12ecf25 100644 --- a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/directives/MultiplatformDiagnosticsDirectives.kt +++ b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/directives/MultiplatformDiagnosticsDirectives.kt @@ -9,10 +9,11 @@ import org.jetbrains.kotlin.test.directives.model.DirectiveApplicability import org.jetbrains.kotlin.test.directives.model.SimpleDirectivesContainer object MultiplatformDiagnosticsDirectives : SimpleDirectivesContainer() { - val MULTIPLATFORM_COMPOSITE_ANALYSIS_MODE by directive( + val MULTIPLATFORM_COMPOSITE_ANALYSIS_MODE_ENABLED by directive( description = """ - Will setup the classical frontend similar to 'CLI metadata compilation' or 'IDE analysis' where dependsOn sources - are located in separate module descriptors. + If present, sets up the classical frontend in a way, similar to how analysis works in IDE, when dependsOn sources are located + in separate module descriptors. If absent, setups the frontend in a "CLI-mode", when there's only two modules: + one with currently compiled sources (including dependsOn-sources), and the second one with all dependencies. """.trimIndent(), applicability = DirectiveApplicability.Global ) diff --git a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/classic/ClassicFrontendFacade.kt b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/classic/ClassicFrontendFacade.kt index 45698c33633..fe0f094fa84 100644 --- a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/classic/ClassicFrontendFacade.kt +++ b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/classic/ClassicFrontendFacade.kt @@ -61,7 +61,7 @@ import org.jetbrains.kotlin.serialization.deserialization.MetadataPartProvider import org.jetbrains.kotlin.storage.LockBasedStorageManager import org.jetbrains.kotlin.storage.StorageManager import org.jetbrains.kotlin.test.directives.JvmEnvironmentConfigurationDirectives -import org.jetbrains.kotlin.test.directives.MultiplatformDiagnosticsDirectives.MULTIPLATFORM_COMPOSITE_ANALYSIS_MODE +import org.jetbrains.kotlin.test.directives.MultiplatformDiagnosticsDirectives.MULTIPLATFORM_COMPOSITE_ANALYSIS_MODE_ENABLED import org.jetbrains.kotlin.test.model.DependencyRelation import org.jetbrains.kotlin.test.model.FrontendFacade import org.jetbrains.kotlin.test.model.FrontendKinds @@ -347,8 +347,8 @@ class ClassicFrontendFacade( files: List, ): AnalysisResult { // See 'TODO' for adding dependency manager - require(module.dependsOnDependencies.isEmpty() || MULTIPLATFORM_COMPOSITE_ANALYSIS_MODE !in module.directives) { - "Analyzing common modules with 'dependsOn' edges in ${MULTIPLATFORM_COMPOSITE_ANALYSIS_MODE.name} is not supported yet.\n" + + require(module.dependsOnDependencies.isEmpty() || MULTIPLATFORM_COMPOSITE_ANALYSIS_MODE_ENABLED !in module.directives) { + "Analyzing common modules with 'dependsOn' edges in ${MULTIPLATFORM_COMPOSITE_ANALYSIS_MODE_ENABLED.name} is not supported yet.\n" + "Module: ${module.name}\n" + "dependsOn: ${module.dependsOnDependencies.map { it.moduleName }}" } diff --git a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/classic/MultiplatformAnalysisConfiguration.kt b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/classic/MultiplatformAnalysisConfiguration.kt index 1b65304ca1b..86647397f9f 100644 --- a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/classic/MultiplatformAnalysisConfiguration.kt +++ b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/frontend/classic/MultiplatformAnalysisConfiguration.kt @@ -18,12 +18,12 @@ import org.jetbrains.kotlin.resolve.ModulePath import org.jetbrains.kotlin.resolve.ModuleStructureOracle import org.jetbrains.kotlin.resolve.TargetEnvironment import org.jetbrains.kotlin.resolve.multiplatform.isCommonSource -import org.jetbrains.kotlin.test.directives.MultiplatformDiagnosticsDirectives.MULTIPLATFORM_COMPOSITE_ANALYSIS_MODE +import org.jetbrains.kotlin.test.directives.MultiplatformDiagnosticsDirectives.MULTIPLATFORM_COMPOSITE_ANALYSIS_MODE_ENABLED import org.jetbrains.kotlin.test.model.* import org.jetbrains.kotlin.test.services.* internal fun MultiplatformAnalysisConfiguration(testServices: TestServices): MultiplatformAnalysisConfiguration { - return if (testServices.moduleStructure.allDirectives.contains(MULTIPLATFORM_COMPOSITE_ANALYSIS_MODE)) + return if (testServices.moduleStructure.allDirectives.contains(MULTIPLATFORM_COMPOSITE_ANALYSIS_MODE_ENABLED)) MultiplatformCompositeAnalysisConfiguration( testServices.dependencyProvider, testServices.sourceFileProvider, diff --git a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/runners/AbstractDiagnosticsWithMultiplatformCompositeAnalysisTest.kt b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/runners/AbstractDiagnosticsWithMultiplatformCompositeAnalysisTest.kt index 8b21b053b12..2ae6085cd30 100644 --- a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/runners/AbstractDiagnosticsWithMultiplatformCompositeAnalysisTest.kt +++ b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/runners/AbstractDiagnosticsWithMultiplatformCompositeAnalysisTest.kt @@ -13,7 +13,7 @@ abstract class AbstractDiagnosticsWithMultiplatformCompositeAnalysisTest : Abstr override fun configure(builder: TestConfigurationBuilder) { super.configure(builder) builder.defaultDirectives { - +MultiplatformDiagnosticsDirectives.MULTIPLATFORM_COMPOSITE_ANALYSIS_MODE + +MultiplatformDiagnosticsDirectives.MULTIPLATFORM_COMPOSITE_ANALYSIS_MODE_ENABLED LanguageSettingsDirectives.LANGUAGE with "+MultiPlatformProjects" } }