More usages of partial body resolve
This commit is contained in:
@@ -73,7 +73,7 @@ public class JetQuickDocumentationProvider extends AbstractDocumentationProvider
|
|||||||
if (quickNavigation) {
|
if (quickNavigation) {
|
||||||
JetReferenceExpression referenceExpression = PsiTreeUtil.getParentOfType(originalElement, JetReferenceExpression.class, false);
|
JetReferenceExpression referenceExpression = PsiTreeUtil.getParentOfType(originalElement, JetReferenceExpression.class, false);
|
||||||
if (referenceExpression != null) {
|
if (referenceExpression != null) {
|
||||||
BindingContext context = ResolvePackage.analyze(referenceExpression);
|
BindingContext context = ResolvePackage.analyze(referenceExpression, BodyResolveMode.PARTIAL);
|
||||||
DeclarationDescriptor declarationDescriptor = context.get(BindingContext.REFERENCE_TARGET, referenceExpression);
|
DeclarationDescriptor declarationDescriptor = context.get(BindingContext.REFERENCE_TARGET, referenceExpression);
|
||||||
if (declarationDescriptor != null) {
|
if (declarationDescriptor != null) {
|
||||||
return mixKotlinToJava(declarationDescriptor, element, originalElement);
|
return mixKotlinToJava(declarationDescriptor, element, originalElement);
|
||||||
@@ -88,7 +88,7 @@ public class JetQuickDocumentationProvider extends AbstractDocumentationProvider
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static String renderKotlinDeclaration(JetDeclaration declaration, boolean quickNavigation) {
|
private static String renderKotlinDeclaration(JetDeclaration declaration, boolean quickNavigation) {
|
||||||
BindingContext context = ResolvePackage.analyze(declaration);
|
BindingContext context = ResolvePackage.analyze(declaration, BodyResolveMode.PARTIAL);
|
||||||
DeclarationDescriptor declarationDescriptor = context.get(BindingContext.DECLARATION_TO_DESCRIPTOR, declaration);
|
DeclarationDescriptor declarationDescriptor = context.get(BindingContext.DECLARATION_TO_DESCRIPTOR, declaration);
|
||||||
|
|
||||||
if (declarationDescriptor == null) {
|
if (declarationDescriptor == null) {
|
||||||
@@ -132,7 +132,7 @@ public class JetQuickDocumentationProvider extends AbstractDocumentationProvider
|
|||||||
KotlinCacheService cacheService = KotlinCacheService.getInstance(project);
|
KotlinCacheService cacheService = KotlinCacheService.getInstance(project);
|
||||||
ResolveSessionForBodies session = cacheService.getLazyResolveSession(jetElement);
|
ResolveSessionForBodies session = cacheService.getLazyResolveSession(jetElement);
|
||||||
ResolutionFacade facade = cacheService.getResolutionFacade(Collections.singletonList(jetElement));
|
ResolutionFacade facade = cacheService.getResolutionFacade(Collections.singletonList(jetElement));
|
||||||
BindingContext bindingContext = facade.analyze(jetElement, BodyResolveMode.FULL);
|
BindingContext bindingContext = facade.analyze(jetElement, BodyResolveMode.PARTIAL);
|
||||||
DeclarationDescriptor contextDescriptor = bindingContext.get(BindingContext.DECLARATION_TO_DESCRIPTOR, context);
|
DeclarationDescriptor contextDescriptor = bindingContext.get(BindingContext.DECLARATION_TO_DESCRIPTOR, context);
|
||||||
if (contextDescriptor == null) {
|
if (contextDescriptor == null) {
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
@@ -16,31 +16,32 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.idea.debugger
|
package org.jetbrains.kotlin.idea.debugger
|
||||||
|
|
||||||
import com.intellij.debugger.engine.SourcePositionProvider
|
|
||||||
import com.intellij.debugger.ui.tree.NodeDescriptor
|
|
||||||
import com.intellij.openapi.project.Project
|
|
||||||
import com.intellij.debugger.impl.DebuggerContextImpl
|
|
||||||
import com.intellij.debugger.SourcePosition
|
import com.intellij.debugger.SourcePosition
|
||||||
import org.jetbrains.kotlin.codegen.AsmUtil
|
import com.intellij.debugger.engine.SourcePositionProvider
|
||||||
import org.jetbrains.kotlin.psi.JetClassOrObject
|
import com.intellij.debugger.impl.DebuggerContextImpl
|
||||||
import com.intellij.debugger.impl.DebuggerContextUtil
|
import com.intellij.debugger.impl.DebuggerContextUtil
|
||||||
import com.sun.jdi.ReferenceType
|
import com.intellij.debugger.impl.PositionUtil
|
||||||
import com.intellij.psi.PsiElement
|
|
||||||
import com.intellij.psi.search.GlobalSearchScope
|
|
||||||
import org.jetbrains.kotlin.resolve.jvm.JvmClassName
|
|
||||||
import com.intellij.psi.JavaPsiFacade
|
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.getStrictParentOfType
|
|
||||||
import com.sun.jdi.AbsentInformationException
|
|
||||||
import com.sun.jdi.ClassNotPreparedException
|
|
||||||
import com.intellij.debugger.ui.tree.FieldDescriptor
|
import com.intellij.debugger.ui.tree.FieldDescriptor
|
||||||
import com.intellij.debugger.ui.tree.LocalVariableDescriptor
|
import com.intellij.debugger.ui.tree.LocalVariableDescriptor
|
||||||
import com.intellij.debugger.impl.PositionUtil
|
import com.intellij.debugger.ui.tree.NodeDescriptor
|
||||||
import org.jetbrains.kotlin.psi.JetElement
|
import com.intellij.openapi.project.Project
|
||||||
import org.jetbrains.kotlin.idea.caches.resolve.analyze
|
import com.intellij.psi.JavaPsiFacade
|
||||||
import org.jetbrains.kotlin.psi.JetPsiFactory
|
import com.intellij.psi.PsiElement
|
||||||
|
import com.intellij.psi.search.GlobalSearchScope
|
||||||
import com.intellij.psi.util.PsiTreeUtil
|
import com.intellij.psi.util.PsiTreeUtil
|
||||||
|
import com.sun.jdi.AbsentInformationException
|
||||||
|
import com.sun.jdi.ClassNotPreparedException
|
||||||
|
import com.sun.jdi.ReferenceType
|
||||||
|
import org.jetbrains.kotlin.codegen.AsmUtil
|
||||||
|
import org.jetbrains.kotlin.idea.caches.resolve.analyze
|
||||||
|
import org.jetbrains.kotlin.psi.JetClassOrObject
|
||||||
|
import org.jetbrains.kotlin.psi.JetElement
|
||||||
|
import org.jetbrains.kotlin.psi.JetPsiFactory
|
||||||
import org.jetbrains.kotlin.psi.JetSimpleNameExpression
|
import org.jetbrains.kotlin.psi.JetSimpleNameExpression
|
||||||
|
import org.jetbrains.kotlin.psi.psiUtil.getStrictParentOfType
|
||||||
import org.jetbrains.kotlin.resolve.BindingContextUtils
|
import org.jetbrains.kotlin.resolve.BindingContextUtils
|
||||||
|
import org.jetbrains.kotlin.resolve.jvm.JvmClassName
|
||||||
|
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
|
||||||
import org.jetbrains.kotlin.resolve.source.KotlinSourceElement
|
import org.jetbrains.kotlin.resolve.source.KotlinSourceElement
|
||||||
import org.jetbrains.kotlin.resolve.source.getPsi
|
import org.jetbrains.kotlin.resolve.source.getPsi
|
||||||
|
|
||||||
@@ -66,7 +67,7 @@ public class KotlinSourcePositionProvider: SourcePositionProvider() {
|
|||||||
val codeFragment = JetPsiFactory(project).createExpressionCodeFragment(descriptor.getName(), contextElement)
|
val codeFragment = JetPsiFactory(project).createExpressionCodeFragment(descriptor.getName(), contextElement)
|
||||||
val expression = codeFragment.getContentElement()
|
val expression = codeFragment.getContentElement()
|
||||||
if (expression is JetSimpleNameExpression) {
|
if (expression is JetSimpleNameExpression) {
|
||||||
val bindingContext = expression.analyze()
|
val bindingContext = expression.analyze(BodyResolveMode.PARTIAL)
|
||||||
val declarationDescriptor = BindingContextUtils.extractVariableDescriptorIfAny(bindingContext, expression, false)
|
val declarationDescriptor = BindingContextUtils.extractVariableDescriptorIfAny(bindingContext, expression, false)
|
||||||
val sourceElement = declarationDescriptor?.getSource()
|
val sourceElement = declarationDescriptor?.getSource()
|
||||||
if (sourceElement is KotlinSourceElement) {
|
if (sourceElement is KotlinSourceElement) {
|
||||||
|
|||||||
@@ -26,28 +26,28 @@ import com.intellij.openapi.project.Project
|
|||||||
import com.intellij.psi.PsiFile
|
import com.intellij.psi.PsiFile
|
||||||
import com.intellij.psi.search.GlobalSearchScope
|
import com.intellij.psi.search.GlobalSearchScope
|
||||||
import com.intellij.psi.search.PsiShortNamesCache
|
import com.intellij.psi.search.PsiShortNamesCache
|
||||||
|
import com.intellij.psi.util.PsiModificationTracker
|
||||||
|
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||||
|
import org.jetbrains.kotlin.descriptors.DeclarationDescriptorWithVisibility
|
||||||
import org.jetbrains.kotlin.diagnostics.Diagnostic
|
import org.jetbrains.kotlin.diagnostics.Diagnostic
|
||||||
import org.jetbrains.kotlin.psi.JetExpression
|
import org.jetbrains.kotlin.diagnostics.Errors
|
||||||
import org.jetbrains.kotlin.psi.JetFile
|
|
||||||
import org.jetbrains.kotlin.psi.JetPsiUtil
|
|
||||||
import org.jetbrains.kotlin.psi.JetSimpleNameExpression
|
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.*
|
|
||||||
import org.jetbrains.kotlin.resolve.DescriptorUtils
|
|
||||||
import org.jetbrains.kotlin.idea.JetBundle
|
import org.jetbrains.kotlin.idea.JetBundle
|
||||||
import org.jetbrains.kotlin.idea.actions.JetAddImportAction
|
import org.jetbrains.kotlin.idea.actions.JetAddImportAction
|
||||||
import org.jetbrains.kotlin.idea.caches.JetShortNamesCache
|
import org.jetbrains.kotlin.idea.caches.JetShortNamesCache
|
||||||
import org.jetbrains.kotlin.idea.caches.KotlinIndicesHelper
|
import org.jetbrains.kotlin.idea.caches.KotlinIndicesHelper
|
||||||
import org.jetbrains.kotlin.idea.caches.resolve.*
|
import org.jetbrains.kotlin.idea.caches.resolve.getResolutionFacade
|
||||||
import org.jetbrains.kotlin.idea.project.ProjectStructureUtil
|
|
||||||
import java.util.ArrayList
|
|
||||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
|
||||||
import org.jetbrains.kotlin.resolve.BindingContext
|
|
||||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptorWithVisibility
|
|
||||||
import org.jetbrains.kotlin.diagnostics.Errors
|
|
||||||
import com.intellij.psi.util.PsiModificationTracker
|
|
||||||
import org.jetbrains.kotlin.idea.completion.isVisible
|
import org.jetbrains.kotlin.idea.completion.isVisible
|
||||||
import org.jetbrains.kotlin.utils.CachedValueProperty
|
import org.jetbrains.kotlin.idea.project.ProjectStructureUtil
|
||||||
import org.jetbrains.kotlin.idea.util.psiClassToDescriptor.psiClassToDescriptor
|
import org.jetbrains.kotlin.idea.util.psiClassToDescriptor.psiClassToDescriptor
|
||||||
|
import org.jetbrains.kotlin.psi.JetFile
|
||||||
|
import org.jetbrains.kotlin.psi.JetPsiUtil
|
||||||
|
import org.jetbrains.kotlin.psi.JetSimpleNameExpression
|
||||||
|
import org.jetbrains.kotlin.psi.psiUtil.isImportDirectiveExpression
|
||||||
|
import org.jetbrains.kotlin.resolve.BindingContext
|
||||||
|
import org.jetbrains.kotlin.resolve.DescriptorUtils
|
||||||
|
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
|
||||||
|
import org.jetbrains.kotlin.utils.CachedValueProperty
|
||||||
|
import java.util.ArrayList
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check possibility and perform fix for unresolved references.
|
* Check possibility and perform fix for unresolved references.
|
||||||
@@ -119,7 +119,7 @@ public class AutoImportFix(element: JetSimpleNameExpression) : JetHintAction<Jet
|
|||||||
|
|
||||||
val searchScope = file.getResolveScope()
|
val searchScope = file.getResolveScope()
|
||||||
|
|
||||||
val bindingContext = resolutionFacade.analyze(element)
|
val bindingContext = resolutionFacade.analyze(element, BodyResolveMode.PARTIAL)
|
||||||
|
|
||||||
val diagnostics = bindingContext.getDiagnostics().forElement(element)
|
val diagnostics = bindingContext.getDiagnostics().forElement(element)
|
||||||
if (!diagnostics.any { it.getFactory() in ERRORS }) return listOf()
|
if (!diagnostics.any { it.getFactory() in ERRORS }) return listOf()
|
||||||
|
|||||||
+2
-1
@@ -35,6 +35,7 @@ import org.jetbrains.kotlin.psi.*;
|
|||||||
import org.jetbrains.kotlin.psi.typeRefHelpers.TypeRefHelpersPackage;
|
import org.jetbrains.kotlin.psi.typeRefHelpers.TypeRefHelpersPackage;
|
||||||
import org.jetbrains.kotlin.resolve.BindingContext;
|
import org.jetbrains.kotlin.resolve.BindingContext;
|
||||||
import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils;
|
import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils;
|
||||||
|
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode;
|
||||||
import org.jetbrains.kotlin.types.JetType;
|
import org.jetbrains.kotlin.types.JetType;
|
||||||
import org.jetbrains.kotlin.types.TypeSubstitutor;
|
import org.jetbrains.kotlin.types.TypeSubstitutor;
|
||||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns;
|
import org.jetbrains.kotlin.builtins.KotlinBuiltIns;
|
||||||
@@ -92,7 +93,7 @@ public class JetFunctionDefinitionUsage<T extends PsiElement> extends JetUsageIn
|
|||||||
if (!(parent instanceof JetFunctionLiteralExpression)) return false;
|
if (!(parent instanceof JetFunctionLiteralExpression)) return false;
|
||||||
|
|
||||||
JetFunctionLiteralExpression expression = (JetFunctionLiteralExpression) parent;
|
JetFunctionLiteralExpression expression = (JetFunctionLiteralExpression) parent;
|
||||||
return ResolvePackage.analyze(expression).get(BindingContext.EXPECTED_EXPRESSION_TYPE, expression) != null;
|
return ResolvePackage.analyze(expression, BodyResolveMode.PARTIAL).get(BindingContext.EXPECTED_EXPRESSION_TYPE, expression) != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
|
|||||||
Reference in New Issue
Block a user