KotlinCacheService: allow to get ResolveSessionForBodies by module descriptor

Utility to resolve import in file by fq name
This commit is contained in:
Pavel V. Talanov
2015-06-01 18:47:59 +03:00
parent e60c3f5ee7
commit a94c13be6d
14 changed files with 61 additions and 51 deletions
@@ -36,13 +36,15 @@ public trait ResolverForModule {
}
public trait ResolverForProject<M : ModuleInfo,out R : ResolverForModule> {
public fun resolverForModule(moduleInfo: M): R
public fun resolverForModule(moduleInfo: M): R = resolverForModuleDescriptor(descriptorForModule(moduleInfo))
public fun descriptorForModule(moduleInfo: M): ModuleDescriptor
public fun resolverForModuleDescriptor(descriptor: ModuleDescriptor): R
val allModules: Collection<M>
}
public class EmptyResolverForProject<M : ModuleInfo, R : ResolverForModule> : ResolverForProject<M, R> {
override fun resolverForModule(moduleInfo: M): R = throw IllegalStateException("Should not be called for $moduleInfo")
override fun resolverForModuleDescriptor(descriptor: ModuleDescriptor): R = throw IllegalStateException("$descriptor is not contained in this resolver")
override fun descriptorForModule(moduleInfo: M) = throw IllegalStateException("Should not be called for $moduleInfo")
override val allModules: Collection<M> = listOf()
}
@@ -63,10 +65,8 @@ public class ResolverForProjectImpl<M : ModuleInfo, R : ResolverForModule>(
}
}
override fun resolverForModule(moduleInfo: M): R {
assertCorrectModuleInfo(moduleInfo)
val descriptor = descriptorByModule[moduleInfo] ?: return delegateResolver.resolverForModule(moduleInfo)
return resolverByModuleDescriptor[descriptor]!!
override fun resolverForModuleDescriptor(descriptor: ModuleDescriptor): R {
return resolverByModuleDescriptor[descriptor] ?: return delegateResolver.resolverForModuleDescriptor(descriptor)
}
override fun descriptorForModule(moduleInfo: M): ModuleDescriptorImpl {