Debug string for project resolution facade

This commit is contained in:
Nikolay Krasko
2016-07-25 13:00:19 +03:00
parent 3c8e35fa3a
commit 57f3a86686
2 changed files with 13 additions and 1 deletions
@@ -71,6 +71,7 @@ class KotlinCacheServiceImpl(val project: Project) : KotlinCacheService {
private val facadeForScriptDependencies by lazy { private val facadeForScriptDependencies by lazy {
val globalContext = GlobalContext() val globalContext = GlobalContext()
ProjectResolutionFacade( ProjectResolutionFacade(
"facadeForScriptDependencies",
project, globalContext, project, globalContext,
globalResolveSessionProvider( globalResolveSessionProvider(
"dependencies of scripts", "dependencies of scripts",
@@ -89,6 +90,7 @@ class KotlinCacheServiceImpl(val project: Project) : KotlinCacheService {
private inner class GlobalFacade(platform: TargetPlatform, sdk: Sdk?) { private inner class GlobalFacade(platform: TargetPlatform, sdk: Sdk?) {
private val sdkContext = GlobalContext() private val sdkContext = GlobalContext()
val facadeForSdk = ProjectResolutionFacade( val facadeForSdk = ProjectResolutionFacade(
"facadeForSdk",
project, sdkContext, project, sdkContext,
globalResolveSessionProvider( globalResolveSessionProvider(
"sdk $sdk", "sdk $sdk",
@@ -103,6 +105,7 @@ class KotlinCacheServiceImpl(val project: Project) : KotlinCacheService {
private val librariesContext = sdkContext.contextWithNewLockAndCompositeExceptionTracker() private val librariesContext = sdkContext.contextWithNewLockAndCompositeExceptionTracker()
val facadeForLibraries = ProjectResolutionFacade( val facadeForLibraries = ProjectResolutionFacade(
"facadeForLibraries",
project, librariesContext, project, librariesContext,
globalResolveSessionProvider( globalResolveSessionProvider(
"project libraries for platform $platform", "project libraries for platform $platform",
@@ -120,6 +123,7 @@ class KotlinCacheServiceImpl(val project: Project) : KotlinCacheService {
private val modulesContext = librariesContext.contextWithNewLockAndCompositeExceptionTracker() private val modulesContext = librariesContext.contextWithNewLockAndCompositeExceptionTracker()
val facadeForModules = ProjectResolutionFacade( val facadeForModules = ProjectResolutionFacade(
"facadeForModules",
project, modulesContext, project, modulesContext,
globalResolveSessionProvider( globalResolveSessionProvider(
"project source roots and libraries for platform $platform", "project source roots and libraries for platform $platform",
@@ -180,6 +184,7 @@ class KotlinCacheServiceImpl(val project: Project) : KotlinCacheService {
val modulesFacade = globalFacade(targetPlatform, sdk) val modulesFacade = globalFacade(targetPlatform, sdk)
val globalContext = modulesFacade.globalContext.contextWithNewLockAndCompositeExceptionTracker() val globalContext = modulesFacade.globalContext.contextWithNewLockAndCompositeExceptionTracker()
ProjectResolutionFacade( ProjectResolutionFacade(
"facadeForSynthetic in ModuleSourceInfo",
project, globalContext, project, globalContext,
makeGlobalResolveSessionProvider( makeGlobalResolveSessionProvider(
reuseDataFrom = modulesFacade, reuseDataFrom = modulesFacade,
@@ -190,6 +195,7 @@ class KotlinCacheServiceImpl(val project: Project) : KotlinCacheService {
syntheticFileModule is ScriptModuleInfo || syntheticFileModule is ScriptDependenciesModuleInfo -> { syntheticFileModule is ScriptModuleInfo || syntheticFileModule is ScriptDependenciesModuleInfo -> {
val globalContext = facadeForScriptDependencies.globalContext.contextWithNewLockAndCompositeExceptionTracker() val globalContext = facadeForScriptDependencies.globalContext.contextWithNewLockAndCompositeExceptionTracker()
ProjectResolutionFacade( ProjectResolutionFacade(
"facadeForSynthetic in ScriptModuleInfo",
project, globalContext, project, globalContext,
makeGlobalResolveSessionProvider( makeGlobalResolveSessionProvider(
reuseDataFrom = facadeForScriptDependencies, reuseDataFrom = facadeForScriptDependencies,
@@ -203,6 +209,7 @@ class KotlinCacheServiceImpl(val project: Project) : KotlinCacheService {
val librariesFacade = librariesFacade(targetPlatform, sdk) val librariesFacade = librariesFacade(targetPlatform, sdk)
val globalContext = librariesFacade.globalContext.contextWithNewLockAndCompositeExceptionTracker() val globalContext = librariesFacade.globalContext.contextWithNewLockAndCompositeExceptionTracker()
ProjectResolutionFacade( ProjectResolutionFacade(
"facadeForSynthetic in LibrarySourceInfo or NotUnderContentRootModuleInfo",
project, globalContext, project, globalContext,
makeGlobalResolveSessionProvider( makeGlobalResolveSessionProvider(
reuseDataFrom = librariesFacade, reuseDataFrom = librariesFacade,
@@ -218,6 +225,7 @@ class KotlinCacheServiceImpl(val project: Project) : KotlinCacheService {
LOG.warn("Creating cache with synthetic files ($files) in classes of library $syntheticFileModule") LOG.warn("Creating cache with synthetic files ($files) in classes of library $syntheticFileModule")
val globalContext = GlobalContext() val globalContext = GlobalContext()
ProjectResolutionFacade( ProjectResolutionFacade(
"facadeForSynthetic for file under both classes and root",
project, globalContext, project, globalContext,
makeGlobalResolveSessionProvider() makeGlobalResolveSessionProvider()
) )
@@ -39,6 +39,7 @@ import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
import org.jetbrains.kotlin.resolve.lazy.ResolveSession import org.jetbrains.kotlin.resolve.lazy.ResolveSession
internal class ProjectResolutionFacade( internal class ProjectResolutionFacade(
val debugString: String,
val project: Project, val project: Project,
val globalContext: GlobalContextImpl, val globalContext: GlobalContextImpl,
computeModuleResolverProvider: (GlobalContextImpl, Project) -> CachedValueProvider.Result<ModuleResolverProvider> computeModuleResolverProvider: (GlobalContextImpl, Project) -> CachedValueProvider.Result<ModuleResolverProvider>
@@ -88,6 +89,10 @@ internal class ProjectResolutionFacade(
//TODO: (module refactoring) several elements are passed here in debugger //TODO: (module refactoring) several elements are passed here in debugger
AnalysisResult.success(bindingContext, findModuleDescriptor(elements.first().getModuleInfo())) AnalysisResult.success(bindingContext, findModuleDescriptor(elements.first().getModuleInfo()))
} }
override fun toString(): String {
return "$debugString@${Integer.toHexString(hashCode())}"
}
} }
internal class ResolutionFacadeImpl( internal class ResolutionFacadeImpl(
@@ -134,7 +139,6 @@ internal class ResolutionFacadeImpl(
override fun <T : Any> getFrontendService(moduleDescriptor: ModuleDescriptor, serviceClass: Class<T>): T { override fun <T : Any> getFrontendService(moduleDescriptor: ModuleDescriptor, serviceClass: Class<T>): T {
return projectFacade.resolverForDescriptor(moduleDescriptor).componentProvider.getService(serviceClass) return projectFacade.resolverForDescriptor(moduleDescriptor).componentProvider.getService(serviceClass)
} }
} }
fun ResolutionFacade.findModuleDescriptor(ideaModuleInfo: IdeaModuleInfo): ModuleDescriptor? { fun ResolutionFacade.findModuleDescriptor(ideaModuleInfo: IdeaModuleInfo): ModuleDescriptor? {