[API Usage] Inject Refiner into KotlinTypeChecker, use it for subtyping
This commit is contained in:
committed by
Dmitry Savvinov
parent
9047ddfc2f
commit
a1b52b2f90
@@ -17,7 +17,7 @@
|
||||
package org.jetbrains.kotlin.frontend.di
|
||||
|
||||
import org.jetbrains.kotlin.platform.TargetPlatform
|
||||
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
||||
import org.jetbrains.kotlin.config.*
|
||||
import org.jetbrains.kotlin.container.StorageComponentContainer
|
||||
import org.jetbrains.kotlin.container.useImpl
|
||||
import org.jetbrains.kotlin.container.useInstance
|
||||
@@ -36,6 +36,8 @@ import org.jetbrains.kotlin.resolve.checkers.ExpectedActualDeclarationChecker
|
||||
import org.jetbrains.kotlin.resolve.checkers.ExperimentalUsageChecker
|
||||
import org.jetbrains.kotlin.resolve.lazy.*
|
||||
import org.jetbrains.kotlin.resolve.lazy.declarations.DeclarationProviderFactory
|
||||
import org.jetbrains.kotlin.types.checker.KotlinTypeRefiner
|
||||
import org.jetbrains.kotlin.types.checker.NewKotlinTypeCheckerImpl
|
||||
import org.jetbrains.kotlin.types.expressions.DeclarationScopeProviderForLocalClassifierAnalyzer
|
||||
import org.jetbrains.kotlin.types.expressions.LocalClassDescriptorHolder
|
||||
import org.jetbrains.kotlin.types.expressions.LocalLazyDeclarationResolver
|
||||
@@ -66,6 +68,14 @@ fun StorageComponentContainer.configureModule(
|
||||
extension.registerModuleComponents(this, platform, moduleContext.module)
|
||||
}
|
||||
|
||||
useImpl<NewKotlinTypeCheckerImpl>()
|
||||
|
||||
if (languageVersionSettings.isTypeRefinementEnabled) {
|
||||
useImpl<KotlinTypeRefinerImpl>()
|
||||
} else {
|
||||
useInstance(KotlinTypeRefiner.Default)
|
||||
}
|
||||
|
||||
configurePlatformIndependentComponents()
|
||||
}
|
||||
|
||||
|
||||
+8
@@ -23,6 +23,7 @@ import org.jetbrains.kotlin.resolve.calls.smartcasts.DataFlowValueFactory;
|
||||
import org.jetbrains.kotlin.resolve.constants.evaluate.ConstantExpressionEvaluator;
|
||||
import org.jetbrains.kotlin.resolve.deprecation.DeprecationResolver;
|
||||
import org.jetbrains.kotlin.types.WrappedTypeFactory;
|
||||
import org.jetbrains.kotlin.types.checker.NewKotlinTypeChecker;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
@@ -62,6 +63,8 @@ public class ExpressionTypingComponents {
|
||||
/*package*/ EffectSystem effectSystem;
|
||||
/*package*/ ContractParsingServices contractParsingServices;
|
||||
/*package*/ DataFlowValueFactory dataFlowValueFactory;
|
||||
/*package*/ NewKotlinTypeChecker kotlinTypeChecker;
|
||||
|
||||
|
||||
@Inject
|
||||
public void setGlobalContext(@NotNull GlobalContext globalContext) {
|
||||
@@ -237,4 +240,9 @@ public class ExpressionTypingComponents {
|
||||
public void setDataFlowValueFactory(@NotNull DataFlowValueFactory dataFlowValueFactory) {
|
||||
this.dataFlowValueFactory = dataFlowValueFactory;
|
||||
}
|
||||
|
||||
@Inject
|
||||
public void setKotlinTypeChecker(@NotNull NewKotlinTypeChecker kotlinTypeChecker) {
|
||||
this.kotlinTypeChecker = kotlinTypeChecker;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user