[Frontend] Make DiagnosticSuppressor a project-level extension
Originally it was an application-level component, which caused non-trivial
logic and cognitive load to carefully handle those extensions to avoid
memory leaks.
6740a596 introduced a way to easily register `DiagnosticSuppressor` to
project, and this commit continues this work, making it a proper
project-level extension
A lot of changes caused by the fact, that this extension is needed to be
obtained from `BindingContext` (see `BindingContextSuppressCache` and
its usages), so almost all changes are introducing `Project` to
`BindingContext`
^KT-66449 Fixed
This commit is contained in:
committed by
Space Team
parent
a552238874
commit
d352cc9d96
+2
-6
@@ -182,7 +182,6 @@ class ClassicFrontendFacade(
|
||||
}
|
||||
}
|
||||
|
||||
@OptIn(ExperimentalStdlibApi::class)
|
||||
private fun performJvmModuleResolve(
|
||||
module: TestModule,
|
||||
project: Project,
|
||||
@@ -197,7 +196,7 @@ class ClassicFrontendFacade(
|
||||
val moduleVisibilityManager = ModuleVisibilityManager.SERVICE.getInstance(project)
|
||||
configuration.getList(JVMConfigurationKeys.FRIEND_PATHS).forEach { moduleVisibilityManager.addFriendPath(it) }
|
||||
|
||||
val moduleTrace = NoScopeRecordCliBindingTrace()
|
||||
val moduleTrace = NoScopeRecordCliBindingTrace(project)
|
||||
if (module.dependsOnDependencies.isEmpty()) {
|
||||
return TopDownAnalyzerFacadeForJVM.analyzeFilesWithJavaIntegration(
|
||||
project,
|
||||
@@ -253,7 +252,6 @@ class ClassicFrontendFacade(
|
||||
return AnalysisResult.success(moduleTrace.bindingContext, moduleDescriptor)
|
||||
}
|
||||
|
||||
@OptIn(ExperimentalStdlibApi::class)
|
||||
private fun performJsModuleResolve(
|
||||
project: Project,
|
||||
configuration: CompilerConfiguration,
|
||||
@@ -310,7 +308,6 @@ class ClassicFrontendFacade(
|
||||
}
|
||||
}
|
||||
|
||||
@OptIn(ExperimentalStdlibApi::class)
|
||||
private fun performJsIrModuleResolve(
|
||||
module: TestModule,
|
||||
project: Project,
|
||||
@@ -393,7 +390,7 @@ class ClassicFrontendFacade(
|
||||
friendsDescriptors: List<ModuleDescriptorImpl>,
|
||||
dependsOnDescriptors: List<ModuleDescriptorImpl>,
|
||||
): AnalysisResult {
|
||||
val moduleTrace = NoScopeRecordCliBindingTrace()
|
||||
val moduleTrace = NoScopeRecordCliBindingTrace(project)
|
||||
val runtimeKlibsNames = NativeEnvironmentConfigurator.getRuntimePathsForModule(module, testServices)
|
||||
val nativeFactories = KlibMetadataFactories(::KonanBuiltIns, NullFlexibleTypeDeserializer)
|
||||
val runtimeKlibs = loadKlib(nativeFactories, runtimeKlibsNames, configuration).mapNotNull { it as? ModuleDescriptorImpl }
|
||||
@@ -477,7 +474,6 @@ class ClassicFrontendFacade(
|
||||
override val refinesModuleInfos: List<ModuleInfo> = _moduleInfos.filter { it.module in module.allExpectedByModules }
|
||||
}
|
||||
|
||||
@OptIn(ExperimentalStdlibApi::class)
|
||||
private fun createModuleContext(
|
||||
module: TestModule,
|
||||
project: Project,
|
||||
|
||||
+1
-1
@@ -106,7 +106,7 @@ class Fir2IrJvmResultsConverter(
|
||||
val codegenFactory = JvmIrCodegenFactory(configuration, phaseConfig)
|
||||
val generationState = GenerationState.Builder(
|
||||
project, ClassBuilderFactories.TEST,
|
||||
fir2irResult.irModuleFragment.descriptor, NoScopeRecordCliBindingTrace().bindingContext, configuration
|
||||
fir2irResult.irModuleFragment.descriptor, NoScopeRecordCliBindingTrace(project).bindingContext, configuration
|
||||
).isIrBackend(
|
||||
true
|
||||
).jvmBackendClassResolver(
|
||||
|
||||
Reference in New Issue
Block a user