Find line markers with lazy resolve
This commit is contained in:
@@ -57,6 +57,8 @@ import org.jetbrains.jet.lang.descriptors.Modality;
|
|||||||
import org.jetbrains.jet.lang.psi.*;
|
import org.jetbrains.jet.lang.psi.*;
|
||||||
import org.jetbrains.jet.lang.resolve.BindingContext;
|
import org.jetbrains.jet.lang.resolve.BindingContext;
|
||||||
import org.jetbrains.jet.lang.resolve.BindingContextUtils;
|
import org.jetbrains.jet.lang.resolve.BindingContextUtils;
|
||||||
|
import org.jetbrains.jet.lang.resolve.lazy.ResolveSession;
|
||||||
|
import org.jetbrains.jet.lang.resolve.lazy.ResolveSessionUtils;
|
||||||
import org.jetbrains.jet.lexer.JetTokens;
|
import org.jetbrains.jet.lexer.JetTokens;
|
||||||
import org.jetbrains.jet.plugin.JetBundle;
|
import org.jetbrains.jet.plugin.JetBundle;
|
||||||
import org.jetbrains.jet.plugin.codeInsight.JetFunctionPsiElementCellRenderer;
|
import org.jetbrains.jet.plugin.codeInsight.JetFunctionPsiElementCellRenderer;
|
||||||
@@ -236,9 +238,24 @@ public class JetLineMarkerProvider implements LineMarkerProvider {
|
|||||||
|
|
||||||
if (!(element instanceof JetNamedFunction || element instanceof JetProperty)) return null;
|
if (!(element instanceof JetNamedFunction || element instanceof JetProperty)) return null;
|
||||||
|
|
||||||
BindingContext bindingContext = WholeProjectAnalyzerFacade.analyzeProjectWithCacheOnAFile(file).getBindingContext();
|
ResolveSession sessionForFile = WholeProjectAnalyzerFacade.getLazyResolveSessionForFile(file);
|
||||||
|
BindingContext bindingContext;
|
||||||
|
|
||||||
|
if ((element instanceof JetNamedFunction && ((JetNamedFunction) element).isLocal()) ||
|
||||||
|
element instanceof JetProperty && ((JetProperty) element).isLocal()) {
|
||||||
|
bindingContext = ResolveSessionUtils.resolveToExpression(sessionForFile, (JetElement) element);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
try {
|
||||||
|
sessionForFile.resolveToDescriptor((JetDeclaration) element);
|
||||||
|
bindingContext = sessionForFile.getBindingContext();
|
||||||
|
} catch (IllegalStateException e) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
DeclarationDescriptor descriptor = bindingContext.get(BindingContext.DECLARATION_TO_DESCRIPTOR, element);
|
DeclarationDescriptor descriptor = bindingContext.get(BindingContext.DECLARATION_TO_DESCRIPTOR, element);
|
||||||
|
|
||||||
if (!(descriptor instanceof CallableMemberDescriptor)) {
|
if (!(descriptor instanceof CallableMemberDescriptor)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@@ -279,7 +296,7 @@ public class JetLineMarkerProvider implements LineMarkerProvider {
|
|||||||
JetFile file = (JetFile)elt.getContainingFile();
|
JetFile file = (JetFile)elt.getContainingFile();
|
||||||
assert file != null;
|
assert file != null;
|
||||||
|
|
||||||
BindingContext bindingContext = WholeProjectAnalyzerFacade.analyzeProjectWithCacheOnAFile(file).getBindingContext();
|
BindingContext bindingContext = WholeProjectAnalyzerFacade.getLazyResolveSessionForFile(file).getBindingContext();
|
||||||
DeclarationDescriptor descriptor = bindingContext.get(BindingContext.DECLARATION_TO_DESCRIPTOR, elt);
|
DeclarationDescriptor descriptor = bindingContext.get(BindingContext.DECLARATION_TO_DESCRIPTOR, elt);
|
||||||
if (!(descriptor instanceof CallableMemberDescriptor)) {
|
if (!(descriptor instanceof CallableMemberDescriptor)) {
|
||||||
return;
|
return;
|
||||||
|
|||||||
Reference in New Issue
Block a user