From 0915f0c78a5b60d8c505ae3653aef8178d8c653e Mon Sep 17 00:00:00 2001 From: Dmitry Savvinov Date: Mon, 20 May 2019 15:12:05 +0300 Subject: [PATCH] [Expect/Actual] Let DI instantiate ExpectedActualDeclarationChecker Inject it instead of calling constructor manually and passing instance directly into the container. This allows to accept some components in constructor of ExpectedActualDeclarationChecker --- .../resolve/jvm/platform/JvmPlatformConfigurator.kt | 7 ++++++- .../resolve/checkers/ExpectedActualDeclarationChecker.kt | 2 +- .../jetbrains/kotlin/js/resolve/JsPlatformConfigurator.kt | 8 ++++++-- .../resolve/konan/platform/KonanPlatformConfigurator.kt | 7 ++++++- 4 files changed, 19 insertions(+), 5 deletions(-) diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/platform/JvmPlatformConfigurator.kt b/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/platform/JvmPlatformConfigurator.kt index 216fc185ae3..77eddefd7b2 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/platform/JvmPlatformConfigurator.kt +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/platform/JvmPlatformConfigurator.kt @@ -34,7 +34,6 @@ object JvmPlatformConfigurator : PlatformConfiguratorBase( TypeParameterBoundIsNotArrayChecker(), JvmSyntheticApplicabilityChecker(), StrictfpApplicabilityChecker(), - ExpectedActualDeclarationChecker(listOf(JavaActualAnnotationArgumentExtractor())), JvmAnnotationsTargetNonExistentAccessorChecker(), BadInheritedJavaSignaturesChecker, JvmMultifileClassStateChecker, @@ -104,5 +103,11 @@ object JvmPlatformConfigurator : PlatformConfiguratorBase( container.useImpl() container.useImpl() container.useInstance(FunctionWithBigAritySupport.LanguageVersionDependent) + container.useInstance(JavaActualAnnotationArgumentExtractor()) + } + + override fun configureModuleDependentCheckers(container: StorageComponentContainer) { + super.configureModuleDependentCheckers(container) + container.useImpl() } } diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/ExpectedActualDeclarationChecker.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/ExpectedActualDeclarationChecker.kt index a09ccca2efe..46113c5faa8 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/ExpectedActualDeclarationChecker.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/checkers/ExpectedActualDeclarationChecker.kt @@ -41,7 +41,7 @@ import org.jetbrains.kotlin.utils.addToStdlib.safeAs import org.jetbrains.kotlin.utils.ifEmpty import java.io.File -class ExpectedActualDeclarationChecker(val argumentExtractors: List = emptyList()) : DeclarationChecker { +class ExpectedActualDeclarationChecker(val argumentExtractors: Iterable) : DeclarationChecker { interface ActualAnnotationArgumentExtractor { fun extractDefaultValue(parameter: ValueParameterDescriptor, expectedType: KotlinType): ConstantValue<*>? } diff --git a/js/js.frontend/src/org/jetbrains/kotlin/js/resolve/JsPlatformConfigurator.kt b/js/js.frontend/src/org/jetbrains/kotlin/js/resolve/JsPlatformConfigurator.kt index e616913b0e6..ff61cdc5090 100644 --- a/js/js.frontend/src/org/jetbrains/kotlin/js/resolve/JsPlatformConfigurator.kt +++ b/js/js.frontend/src/org/jetbrains/kotlin/js/resolve/JsPlatformConfigurator.kt @@ -34,8 +34,7 @@ object JsPlatformConfigurator : PlatformConfiguratorBase( JsNameChecker, JsModuleChecker, JsExternalFileChecker, JsExternalChecker, JsInheritanceChecker, JsMultipleInheritanceChecker, JsRuntimeAnnotationChecker, - JsDynamicDeclarationChecker, - ExpectedActualDeclarationChecker() + JsDynamicDeclarationChecker ), additionalCallCheckers = listOf( JsModuleCallChecker, @@ -60,4 +59,9 @@ object JsPlatformConfigurator : PlatformConfiguratorBase( container.useInstance(JsNativeDiagnosticSuppressor) container.useInstance(CoroutineCompatibilitySupport.DISABLED) } + + override fun configureModuleDependentCheckers(container: StorageComponentContainer) { + super.configureModuleDependentCheckers(container) + container.useImpl() + } } diff --git a/konan/library-reader/src/org/jetbrains/kotlin/resolve/konan/platform/KonanPlatformConfigurator.kt b/konan/library-reader/src/org/jetbrains/kotlin/resolve/konan/platform/KonanPlatformConfigurator.kt index cbcd23eccc0..62d787627f3 100644 --- a/konan/library-reader/src/org/jetbrains/kotlin/resolve/konan/platform/KonanPlatformConfigurator.kt +++ b/konan/library-reader/src/org/jetbrains/kotlin/resolve/konan/platform/KonanPlatformConfigurator.kt @@ -6,14 +6,19 @@ package org.jetbrains.kotlin.resolve.konan.platform import org.jetbrains.kotlin.container.StorageComponentContainer +import org.jetbrains.kotlin.container.useImpl import org.jetbrains.kotlin.resolve.* import org.jetbrains.kotlin.resolve.checkers.ExpectedActualDeclarationChecker import org.jetbrains.kotlin.resolve.jvm.checkers.SuperCallWithDefaultArgumentsChecker object KonanPlatformConfigurator : PlatformConfiguratorBase( - additionalDeclarationCheckers = listOf(ExpectedActualDeclarationChecker()), additionalCallCheckers = listOf(SuperCallWithDefaultArgumentsChecker()) ) { override fun configureModuleComponents(container: StorageComponentContainer) { } + + override fun configureModuleDependentCheckers(container: StorageComponentContainer) { + super.configureModuleDependentCheckers(container) + container.useImpl() + } }