[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(),
JvmSyntheticApplicabilityChecker(),
StrictfpApplicabilityChecker(),
ExpectedActualDeclarationChecker(listOf(JavaActualAnnotationArgumentExtractor())),
JvmAnnotationsTargetNonExistentAccessorChecker(),
BadInheritedJavaSignaturesChecker,
JvmMultifileClassStateChecker,
@@ -104,5 +103,11 @@ object JvmPlatformConfigurator : PlatformConfiguratorBase(
container.useImpl<JvmDefaultSuperCallChecker>()
container.useImpl<JvmSamConversionTransformer>()
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 java.io.File
class ExpectedActualDeclarationChecker(val argumentExtractors: List<ActualAnnotationArgumentExtractor> = emptyList()) : DeclarationChecker {
class ExpectedActualDeclarationChecker(val argumentExtractors: Iterable<ActualAnnotationArgumentExtractor>) : DeclarationChecker {
interface ActualAnnotationArgumentExtractor {
fun extractDefaultValue(parameter: ValueParameterDescriptor, expectedType: KotlinType): ConstantValue<*>?
}
@@ -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<ExpectedActualDeclarationChecker>()
}
}
@@ -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<ExpectedActualDeclarationChecker>()
}
}