Check module is from given set of modules before passing it to callbacks
`module` variable is fetched from `moduleInfoByDescriptor`, and this map is filled in `createModuleDescriptor`, witch is called in `doGetDescriptorForModule` only for modules from the given set.
This commit is contained in:
@@ -166,6 +166,8 @@ class ResolverForProjectImpl<M : ModuleInfo>(
|
|||||||
return@compute delegateResolver.resolverForModuleDescriptor(descriptor)
|
return@compute delegateResolver.resolverForModuleDescriptor(descriptor)
|
||||||
}
|
}
|
||||||
resolverByModuleDescriptor.getOrPut(descriptor) {
|
resolverByModuleDescriptor.getOrPut(descriptor) {
|
||||||
|
checkModuleIsCorrect(module)
|
||||||
|
|
||||||
ResolverForModuleComputationTracker.getInstance(projectContext.project)?.onResolverComputed(module)
|
ResolverForModuleComputationTracker.getInstance(projectContext.project)?.onResolverComputed(module)
|
||||||
|
|
||||||
analyzerFacade(module).createResolverForModule(
|
analyzerFacade(module).createResolverForModule(
|
||||||
@@ -184,15 +186,19 @@ class ResolverForProjectImpl<M : ModuleInfo>(
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun descriptorForModule(moduleInfo: M): ModuleDescriptorImpl {
|
override fun descriptorForModule(moduleInfo: M): ModuleDescriptorImpl {
|
||||||
if (!isCorrectModuleInfo(moduleInfo)) {
|
checkModuleIsCorrect(moduleInfo)
|
||||||
diagnoseUnknownModuleInfo(listOf(moduleInfo))
|
|
||||||
}
|
|
||||||
return doGetDescriptorForModule(moduleInfo)
|
return doGetDescriptorForModule(moduleInfo)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun diagnoseUnknownModuleInfo(infos: List<ModuleInfo>) =
|
override fun diagnoseUnknownModuleInfo(infos: List<ModuleInfo>) =
|
||||||
throw AssertionError("$name does not know how to resolve $infos")
|
throw AssertionError("$name does not know how to resolve $infos")
|
||||||
|
|
||||||
|
private fun checkModuleIsCorrect(moduleInfo: M) {
|
||||||
|
if (!isCorrectModuleInfo(moduleInfo)) {
|
||||||
|
diagnoseUnknownModuleInfo(listOf(moduleInfo))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private fun doGetDescriptorForModule(module: M): ModuleDescriptorImpl {
|
private fun doGetDescriptorForModule(module: M): ModuleDescriptorImpl {
|
||||||
if (module in modules) {
|
if (module in modules) {
|
||||||
return projectContext.storageManager.compute {
|
return projectContext.storageManager.compute {
|
||||||
|
|||||||
Reference in New Issue
Block a user