Basic implementation of partial body resolve

This commit is contained in:
Valentin Kipyatkov
2014-11-17 20:20:16 +03:00
parent 9809e4fd0a
commit a675b5ba38
56 changed files with 852 additions and 32 deletions
@@ -53,6 +53,10 @@ public class KotlinCacheService(val project: Project) {
return cache.getLazyResolveSession(element).resolveToElement(element)
}
override fun analyzeWithPartialBodyResolve(element: JetElement): BindingContext {
return cache.getLazyResolveSession(element).resolveToElementWithPartialBodyResolve(element)
}
override fun findModuleDescriptor(element: JetElement): ModuleDescriptor {
return cache.getLazyResolveSession(element).getModuleDescriptor()
}
@@ -27,6 +27,8 @@ public trait ResolutionFacade {
public fun analyze(element: JetElement): BindingContext
public fun analyzeWithPartialBodyResolve(element: JetElement): BindingContext
public fun analyzeFullyAndGetResult(elements: Collection<JetElement>): AnalysisResult
public fun resolveToDescriptor(declaration: JetDeclaration): DeclarationDescriptor
@@ -52,7 +52,7 @@ public class ResolveElementCache extends ElementResolver {
manager.createWeaklyRetainedMemoizedFunction(new Function1<JetElement, BindingContext>() {
@Override
public BindingContext invoke(JetElement jetElement) {
return elementAdditionalResolve(jetElement);
return elementAdditionalResolve(jetElement, null);
}
});
@@ -54,7 +54,11 @@ public class ResolveSessionForBodies implements KotlinCodeAnalyzer {
@NotNull
public BindingContext resolveToElement(JetElement element) {
return resolveElementCache.resolveToElement(element);
return resolveElementCache.resolveToElement(element, false);
}
public BindingContext resolveToElementWithPartialBodyResolve(JetElement element) {
return resolveElementCache.resolveToElement(element, true);
}
@NotNull