Introduce BodyResolveCache for storing resolve function body task in IDE
This commit is contained in:
@@ -40,6 +40,9 @@ import org.jetbrains.kotlin.resolve.lazy.descriptors.LazyClassDescriptor
|
||||
import org.jetbrains.kotlin.resolve.lazy.descriptors.LazyPackageDescriptor
|
||||
import org.jetbrains.kotlin.resolve.scopes.ChainedScope
|
||||
import org.jetbrains.kotlin.resolve.scopes.JetScope
|
||||
import org.jetbrains.kotlin.storage.LockBasedLazyResolveStorageManager
|
||||
import org.jetbrains.kotlin.storage.StorageManager
|
||||
import org.jetbrains.kotlin.types.DynamicTypesSettings
|
||||
import org.jetbrains.kotlin.types.TypeUtils
|
||||
import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstanceOrNull
|
||||
|
||||
@@ -160,7 +163,9 @@ public abstract class ElementResolver protected constructor(
|
||||
}
|
||||
}
|
||||
|
||||
JetFlowInformationProvider(resolveElement, trace).checkDeclaration()
|
||||
val controlFlowTrace = DelegatingBindingTrace(trace.getBindingContext(), "Element control flow resolve", resolveElement)
|
||||
JetFlowInformationProvider(resolveElement, controlFlowTrace).checkDeclaration()
|
||||
controlFlowTrace.addOwnDataTo(trace, null, false)
|
||||
|
||||
return trace.getBindingContext()
|
||||
}
|
||||
@@ -404,7 +409,7 @@ public abstract class ElementResolver protected constructor(
|
||||
val globalContext = SimpleGlobalContext(resolveSession.getStorageManager(), resolveSession.getExceptionTracker())
|
||||
return createContainerForBodyResolve(
|
||||
globalContext.withProject(file.getProject()).withModule(resolveSession.getModuleDescriptor()),
|
||||
trace, getAdditionalCheckerProvider(file), statementFilter
|
||||
trace, getAdditionalCheckerProvider(file), statementFilter, getDynamicTypesSettings(file)
|
||||
).get<BodyResolver>()
|
||||
}
|
||||
|
||||
@@ -478,6 +483,7 @@ public abstract class ElementResolver protected constructor(
|
||||
}
|
||||
|
||||
protected abstract fun getAdditionalCheckerProvider(jetFile: JetFile): AdditionalCheckerProvider
|
||||
protected abstract fun getDynamicTypesSettings(jetFile: JetFile): DynamicTypesSettings
|
||||
|
||||
private class BodyResolveContextForLazy(
|
||||
private val topDownAnalysisMode: TopDownAnalysisMode,
|
||||
@@ -504,3 +510,4 @@ public abstract class ElementResolver protected constructor(
|
||||
override fun getTopDownAnalysisMode() = topDownAnalysisMode
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user