[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
This commit is contained in:
Dmitry Savvinov
2019-05-20 15:12:05 +03:00
parent 44cbdd142b
commit 0915f0c78a
4 changed files with 19 additions and 5 deletions
@@ -34,7 +34,6 @@ object JvmPlatformConfigurator : PlatformConfiguratorBase(
TypeParameterBoundIsNotArrayChecker(), TypeParameterBoundIsNotArrayChecker(),
JvmSyntheticApplicabilityChecker(), JvmSyntheticApplicabilityChecker(),
StrictfpApplicabilityChecker(), StrictfpApplicabilityChecker(),
ExpectedActualDeclarationChecker(listOf(JavaActualAnnotationArgumentExtractor())),
JvmAnnotationsTargetNonExistentAccessorChecker(), JvmAnnotationsTargetNonExistentAccessorChecker(),
BadInheritedJavaSignaturesChecker, BadInheritedJavaSignaturesChecker,
JvmMultifileClassStateChecker, JvmMultifileClassStateChecker,
@@ -104,5 +103,11 @@ object JvmPlatformConfigurator : PlatformConfiguratorBase(
container.useImpl<JvmDefaultSuperCallChecker>() container.useImpl<JvmDefaultSuperCallChecker>()
container.useImpl<JvmSamConversionTransformer>() container.useImpl<JvmSamConversionTransformer>()
container.useInstance(FunctionWithBigAritySupport.LanguageVersionDependent) container.useInstance(FunctionWithBigAritySupport.LanguageVersionDependent)
container.useInstance(JavaActualAnnotationArgumentExtractor())
}
override fun configureModuleDependentCheckers(container: StorageComponentContainer) {
super.configureModuleDependentCheckers(container)
container.useImpl<ExpectedActualDeclarationChecker>()
} }
} }
@@ -41,7 +41,7 @@ import org.jetbrains.kotlin.utils.addToStdlib.safeAs
import org.jetbrains.kotlin.utils.ifEmpty import org.jetbrains.kotlin.utils.ifEmpty
import java.io.File import java.io.File
class ExpectedActualDeclarationChecker(val argumentExtractors: List<ActualAnnotationArgumentExtractor> = emptyList()) : DeclarationChecker { class ExpectedActualDeclarationChecker(val argumentExtractors: Iterable<ActualAnnotationArgumentExtractor>) : DeclarationChecker {
interface ActualAnnotationArgumentExtractor { interface ActualAnnotationArgumentExtractor {
fun extractDefaultValue(parameter: ValueParameterDescriptor, expectedType: KotlinType): ConstantValue<*>? fun extractDefaultValue(parameter: ValueParameterDescriptor, expectedType: KotlinType): ConstantValue<*>?
} }
@@ -34,8 +34,7 @@ object JsPlatformConfigurator : PlatformConfiguratorBase(
JsNameChecker, JsModuleChecker, JsExternalFileChecker, JsNameChecker, JsModuleChecker, JsExternalFileChecker,
JsExternalChecker, JsInheritanceChecker, JsMultipleInheritanceChecker, JsExternalChecker, JsInheritanceChecker, JsMultipleInheritanceChecker,
JsRuntimeAnnotationChecker, JsRuntimeAnnotationChecker,
JsDynamicDeclarationChecker, JsDynamicDeclarationChecker
ExpectedActualDeclarationChecker()
), ),
additionalCallCheckers = listOf( additionalCallCheckers = listOf(
JsModuleCallChecker, JsModuleCallChecker,
@@ -60,4 +59,9 @@ object JsPlatformConfigurator : PlatformConfiguratorBase(
container.useInstance(JsNativeDiagnosticSuppressor) container.useInstance(JsNativeDiagnosticSuppressor)
container.useInstance(CoroutineCompatibilitySupport.DISABLED) container.useInstance(CoroutineCompatibilitySupport.DISABLED)
} }
override fun configureModuleDependentCheckers(container: StorageComponentContainer) {
super.configureModuleDependentCheckers(container)
container.useImpl<ExpectedActualDeclarationChecker>()
}
} }
@@ -6,14 +6,19 @@
package org.jetbrains.kotlin.resolve.konan.platform package org.jetbrains.kotlin.resolve.konan.platform
import org.jetbrains.kotlin.container.StorageComponentContainer import org.jetbrains.kotlin.container.StorageComponentContainer
import org.jetbrains.kotlin.container.useImpl
import org.jetbrains.kotlin.resolve.* import org.jetbrains.kotlin.resolve.*
import org.jetbrains.kotlin.resolve.checkers.ExpectedActualDeclarationChecker import org.jetbrains.kotlin.resolve.checkers.ExpectedActualDeclarationChecker
import org.jetbrains.kotlin.resolve.jvm.checkers.SuperCallWithDefaultArgumentsChecker import org.jetbrains.kotlin.resolve.jvm.checkers.SuperCallWithDefaultArgumentsChecker
object KonanPlatformConfigurator : PlatformConfiguratorBase( object KonanPlatformConfigurator : PlatformConfiguratorBase(
additionalDeclarationCheckers = listOf(ExpectedActualDeclarationChecker()),
additionalCallCheckers = listOf(SuperCallWithDefaultArgumentsChecker()) additionalCallCheckers = listOf(SuperCallWithDefaultArgumentsChecker())
) { ) {
override fun configureModuleComponents(container: StorageComponentContainer) { override fun configureModuleComponents(container: StorageComponentContainer) {
} }
override fun configureModuleDependentCheckers(container: StorageComponentContainer) {
super.configureModuleDependentCheckers(container)
container.useImpl<ExpectedActualDeclarationChecker>()
}
} }