From ff6853f300019631d933a56ab64250056e6a0156 Mon Sep 17 00:00:00 2001 From: Valentin Kipyatkov Date: Tue, 24 Mar 2015 15:52:31 +0300 Subject: [PATCH] Added BodyResolveMode parameter to JetElement.analyze() --- .../kotlin/idea/caches/resolve/resolutionApi.kt | 13 +++++++------ .../calls/KotlinCallHierarchyNodeDescriptor.java | 3 ++- .../calls/KotlinCalleeMethodsTreeStructure.java | 3 ++- .../calls/KotlinCallerMethodsTreeStructure.java | 3 ++- .../intentions/ReconstructTypeInCastOrIsAction.java | 3 ++- .../intentions/declarations/DeclarationUtils.java | 3 ++- .../macro/AnonymousTemplateEditingListener.java | 3 ++- .../liveTemplates/macro/JetAnonymousSuperMacro.java | 3 ++- .../kotlin/idea/refactoring/JetNameSuggester.java | 3 ++- .../idea/refactoring/JetNameValidatorImpl.java | 3 ++- .../kotlin/idea/refactoring/JetRefactoringUtil.java | 9 +++++---- .../changeSignature/JetChangeSignatureHandler.java | 5 +++-- .../JetChangeSignatureUsageProcessor.java | 11 ++++++----- .../usages/JetFunctionCallUsage.java | 3 ++- .../refactoring/inline/KotlinInlineValHandler.java | 4 ++-- .../safeDelete/KotlinOverridingDialog.java | 3 ++- .../kotlin/idea/run/JetRunConfiguration.java | 3 ++- .../AbstractInsertImportOnPasteTest.java | 3 ++- .../changeSignature/JetChangeSignatureTest.java | 5 +++-- 19 files changed, 52 insertions(+), 34 deletions(-) diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/resolutionApi.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/resolutionApi.kt index 80cf3ee942f..e36eb8907e6 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/resolutionApi.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/resolutionApi.kt @@ -16,13 +16,14 @@ package org.jetbrains.kotlin.idea.caches.resolve -import org.jetbrains.kotlin.psi.JetElement -import org.jetbrains.kotlin.psi.JetFile import org.jetbrains.kotlin.analyzer.AnalysisResult -import org.jetbrains.kotlin.resolve.BindingContext -import org.jetbrains.kotlin.psi.JetDeclaration import org.jetbrains.kotlin.descriptors.DeclarationDescriptor import org.jetbrains.kotlin.descriptors.ModuleDescriptor +import org.jetbrains.kotlin.psi.JetDeclaration +import org.jetbrains.kotlin.psi.JetElement +import org.jetbrains.kotlin.psi.JetFile +import org.jetbrains.kotlin.resolve.BindingContext +import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode public fun JetElement.getResolutionFacade(): ResolutionFacade { return KotlinCacheService.getInstance(getProject()).getResolutionFacade(listOf(this)) @@ -37,8 +38,8 @@ public fun JetDeclaration.resolveToDescriptor(): DeclarationDescriptor { // analyze - see ResolveSessionForBodies, ResolveElementCache // analyzeFully - see KotlinResolveCache, KotlinResolveDataProvider // In the future these two approaches should be unified -public fun JetElement.analyze(): BindingContext { - return getResolutionFacade().analyze(this) +public fun JetElement.analyze(bodyResolveMode: BodyResolveMode = BodyResolveMode.FULL): BindingContext { + return getResolutionFacade().analyze(this, bodyResolveMode) } public fun JetElement.analyzeAndGetResult(): AnalysisResult { diff --git a/idea/src/org/jetbrains/kotlin/idea/hierarchy/calls/KotlinCallHierarchyNodeDescriptor.java b/idea/src/org/jetbrains/kotlin/idea/hierarchy/calls/KotlinCallHierarchyNodeDescriptor.java index ebf0f9351e7..9fe0eb50188 100644 --- a/idea/src/org/jetbrains/kotlin/idea/hierarchy/calls/KotlinCallHierarchyNodeDescriptor.java +++ b/idea/src/org/jetbrains/kotlin/idea/hierarchy/calls/KotlinCallHierarchyNodeDescriptor.java @@ -41,6 +41,7 @@ import org.jetbrains.kotlin.idea.caches.resolve.ResolvePackage; import org.jetbrains.kotlin.psi.*; import org.jetbrains.kotlin.renderer.DescriptorRenderer; import org.jetbrains.kotlin.resolve.BindingContext; +import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode; import javax.swing.*; import java.awt.*; @@ -161,7 +162,7 @@ public class KotlinCallHierarchyNodeDescriptor extends HierarchyNodeDescriptor i elementText = ((JetFile) element).getName(); } else if (element instanceof JetNamedDeclaration) { - BindingContext bindingContext = ResolvePackage.analyze((JetElement) element); + BindingContext bindingContext = ResolvePackage.analyze((JetElement) element, BodyResolveMode.FULL); DeclarationDescriptor descriptor = bindingContext.get(BindingContext.DECLARATION_TO_DESCRIPTOR, element); if (descriptor == null) return null; diff --git a/idea/src/org/jetbrains/kotlin/idea/hierarchy/calls/KotlinCalleeMethodsTreeStructure.java b/idea/src/org/jetbrains/kotlin/idea/hierarchy/calls/KotlinCalleeMethodsTreeStructure.java index d656bcb0d6b..c9b8e0a448d 100644 --- a/idea/src/org/jetbrains/kotlin/idea/hierarchy/calls/KotlinCalleeMethodsTreeStructure.java +++ b/idea/src/org/jetbrains/kotlin/idea/hierarchy/calls/KotlinCalleeMethodsTreeStructure.java @@ -28,6 +28,7 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.kotlin.asJava.KotlinLightMethod; import org.jetbrains.kotlin.idea.caches.resolve.ResolvePackage; import org.jetbrains.kotlin.psi.*; +import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode; import java.util.ArrayList; import java.util.HashMap; @@ -87,7 +88,7 @@ public class KotlinCalleeMethodsTreeStructure extends KotlinCallTreeStructure { final Map referencesToCalleeElements = new HashMap(); for (JetElement element : elementsToAnalyze) { element.accept( - new CalleeReferenceVisitorBase(ResolvePackage.analyze(element), false) { + new CalleeReferenceVisitorBase(ResolvePackage.analyze(element, BodyResolveMode.FULL), false) { @Override protected void processDeclaration(JetReferenceExpression reference, PsiElement declaration) { referencesToCalleeElements.put(reference.getReference(), declaration); diff --git a/idea/src/org/jetbrains/kotlin/idea/hierarchy/calls/KotlinCallerMethodsTreeStructure.java b/idea/src/org/jetbrains/kotlin/idea/hierarchy/calls/KotlinCallerMethodsTreeStructure.java index cdf936be87f..6a7770892e1 100644 --- a/idea/src/org/jetbrains/kotlin/idea/hierarchy/calls/KotlinCallerMethodsTreeStructure.java +++ b/idea/src/org/jetbrains/kotlin/idea/hierarchy/calls/KotlinCallerMethodsTreeStructure.java @@ -41,6 +41,7 @@ import org.jetbrains.kotlin.idea.references.JetReference; import org.jetbrains.kotlin.idea.search.usagesSearch.UsagesSearchPackage; import org.jetbrains.kotlin.psi.*; import org.jetbrains.kotlin.resolve.BindingContext; +import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode; import java.util.Collections; import java.util.HashSet; @@ -68,7 +69,7 @@ public class KotlinCallerMethodsTreeStructure extends KotlinCallTreeStructure { JetElement codeBlockForLocalDeclaration = getEnclosingElementForLocalDeclaration(element); if (codeBlockForLocalDeclaration != null) { - BindingContext bindingContext = ResolvePackage.analyze((JetElement) element); + BindingContext bindingContext = ResolvePackage.analyze((JetElement) element, BodyResolveMode.FULL); final Map referencesToElements = new HashMap(); codeBlockForLocalDeclaration.accept(new CalleeReferenceVisitorBase(bindingContext, true) { diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/ReconstructTypeInCastOrIsAction.java b/idea/src/org/jetbrains/kotlin/idea/intentions/ReconstructTypeInCastOrIsAction.java index e75bbabb377..c57f16ca46a 100644 --- a/idea/src/org/jetbrains/kotlin/idea/intentions/ReconstructTypeInCastOrIsAction.java +++ b/idea/src/org/jetbrains/kotlin/idea/intentions/ReconstructTypeInCastOrIsAction.java @@ -28,6 +28,7 @@ import org.jetbrains.kotlin.idea.util.IdeDescriptorRenderers; import org.jetbrains.kotlin.idea.util.ShortenReferences; import org.jetbrains.kotlin.psi.*; import org.jetbrains.kotlin.resolve.BindingContext; +import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode; import org.jetbrains.kotlin.types.JetType; import static org.jetbrains.kotlin.psi.PsiPackage.JetPsiFactory; @@ -81,6 +82,6 @@ public class ReconstructTypeInCastOrIsAction extends PsiElementBaseIntentionActi } private static JetType getReconstructedType(JetTypeReference typeRef) { - return ResolvePackage.analyze(typeRef).get(BindingContext.TYPE, typeRef); + return ResolvePackage.analyze(typeRef, BodyResolveMode.FULL).get(BindingContext.TYPE, typeRef); } } diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/declarations/DeclarationUtils.java b/idea/src/org/jetbrains/kotlin/idea/intentions/declarations/DeclarationUtils.java index 3ec1a5773bd..b17197ad86a 100644 --- a/idea/src/org/jetbrains/kotlin/idea/intentions/declarations/DeclarationUtils.java +++ b/idea/src/org/jetbrains/kotlin/idea/intentions/declarations/DeclarationUtils.java @@ -24,6 +24,7 @@ import org.jetbrains.kotlin.idea.util.IdeDescriptorRenderers; import org.jetbrains.kotlin.idea.util.ShortenReferences; import org.jetbrains.kotlin.psi.*; import org.jetbrains.kotlin.resolve.BindingContext; +import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode; import org.jetbrains.kotlin.types.JetType; import static org.jetbrains.kotlin.psi.PsiPackage.JetPsiFactory; @@ -44,7 +45,7 @@ public class DeclarationUtils { private static JetType getPropertyTypeIfNeeded(@NotNull JetProperty property) { if (property.getTypeReference() != null) return null; - JetType type = ResolvePackage.analyze(property).get( + JetType type = ResolvePackage.analyze(property, BodyResolveMode.FULL).get( BindingContext.EXPRESSION_TYPE, property.getInitializer() ); return type == null || type.isError() ? null : type; diff --git a/idea/src/org/jetbrains/kotlin/idea/liveTemplates/macro/AnonymousTemplateEditingListener.java b/idea/src/org/jetbrains/kotlin/idea/liveTemplates/macro/AnonymousTemplateEditingListener.java index d7e0bd2bd52..b79854134e1 100644 --- a/idea/src/org/jetbrains/kotlin/idea/liveTemplates/macro/AnonymousTemplateEditingListener.java +++ b/idea/src/org/jetbrains/kotlin/idea/liveTemplates/macro/AnonymousTemplateEditingListener.java @@ -34,6 +34,7 @@ import org.jetbrains.kotlin.idea.caches.resolve.ResolvePackage; import org.jetbrains.kotlin.idea.codeInsight.ImplementMethodsHandler; import org.jetbrains.kotlin.psi.JetReferenceExpression; import org.jetbrains.kotlin.resolve.BindingContext; +import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode; import java.util.HashMap; import java.util.Map; @@ -60,7 +61,7 @@ class AnonymousTemplateEditingListener extends TemplateEditingAdapter { PsiElement name = psiFile.findElementAt(variableRange.getStartOffset()); if (name != null && name.getParent() instanceof JetReferenceExpression) { JetReferenceExpression ref = (JetReferenceExpression) name.getParent(); - DeclarationDescriptor descriptor = ResolvePackage.analyze(ref).get(BindingContext.REFERENCE_TARGET, ref); + DeclarationDescriptor descriptor = ResolvePackage.analyze(ref, BodyResolveMode.FULL).get(BindingContext.REFERENCE_TARGET, ref); if (descriptor instanceof ClassDescriptor) { classRef = ref; classDescriptor = (ClassDescriptor) descriptor; diff --git a/idea/src/org/jetbrains/kotlin/idea/liveTemplates/macro/JetAnonymousSuperMacro.java b/idea/src/org/jetbrains/kotlin/idea/liveTemplates/macro/JetAnonymousSuperMacro.java index c0e7fee4847..27f6d7c5aa1 100644 --- a/idea/src/org/jetbrains/kotlin/idea/liveTemplates/macro/JetAnonymousSuperMacro.java +++ b/idea/src/org/jetbrains/kotlin/idea/liveTemplates/macro/JetAnonymousSuperMacro.java @@ -39,6 +39,7 @@ import org.jetbrains.kotlin.psi.JetExpression; import org.jetbrains.kotlin.psi.JetFile; import org.jetbrains.kotlin.resolve.BindingContext; import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils; +import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode; import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter; import org.jetbrains.kotlin.resolve.scopes.JetScope; @@ -91,7 +92,7 @@ public class JetAnonymousSuperMacro extends Macro { JetExpression expression = PsiTreeUtil.getParentOfType(psiFile.findElementAt(context.getStartOffset()), JetExpression.class); if (expression == null) return null; - BindingContext bc = ResolvePackage.analyze(expression); + BindingContext bc = ResolvePackage.analyze(expression, BodyResolveMode.FULL); JetScope scope = bc.get(BindingContext.RESOLUTION_SCOPE, expression); if (scope == null) return null; diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/JetNameSuggester.java b/idea/src/org/jetbrains/kotlin/idea/refactoring/JetNameSuggester.java index 547c0693673..306d67b10c5 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/JetNameSuggester.java +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/JetNameSuggester.java @@ -30,6 +30,7 @@ import org.jetbrains.kotlin.lexer.JetTokens; import org.jetbrains.kotlin.name.Name; import org.jetbrains.kotlin.psi.*; import org.jetbrains.kotlin.resolve.BindingContext; +import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode; import org.jetbrains.kotlin.types.ErrorUtils; import org.jetbrains.kotlin.types.JetType; import org.jetbrains.kotlin.types.TypeUtils; @@ -67,7 +68,7 @@ public class JetNameSuggester { public static @NotNull String[] suggestNames(@NotNull JetExpression expression, @NotNull JetNameValidator validator, @Nullable String defaultName) { ArrayList result = new ArrayList(); - BindingContext bindingContext = ResolvePackage.analyze(expression); + BindingContext bindingContext = ResolvePackage.analyze(expression, BodyResolveMode.FULL); JetType jetType = bindingContext.get(BindingContext.EXPRESSION_TYPE, expression); if (jetType != null) { addNamesForType(result, jetType, validator); diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/JetNameValidatorImpl.java b/idea/src/org/jetbrains/kotlin/idea/refactoring/JetNameValidatorImpl.java index 505e8585185..c725e36cd02 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/JetNameValidatorImpl.java +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/JetNameValidatorImpl.java @@ -25,6 +25,7 @@ import org.jetbrains.kotlin.psi.JetElement; import org.jetbrains.kotlin.psi.JetExpression; import org.jetbrains.kotlin.psi.JetVisitorVoid; import org.jetbrains.kotlin.resolve.BindingContext; +import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode; import org.jetbrains.kotlin.resolve.scopes.JetScope; import org.jetbrains.kotlin.resolve.scopes.JetScopeUtils; @@ -73,7 +74,7 @@ public class JetNameValidatorImpl extends JetNameValidator { private boolean checkElement(String name, PsiElement sibling, final Set visitedScopes) { if (!(sibling instanceof JetElement)) return true; - final BindingContext context = ResolvePackage.analyze((JetElement) sibling); + final BindingContext context = ResolvePackage.analyze((JetElement) sibling, BodyResolveMode.FULL); final Name identifier = Name.identifier(name); final Ref result = new Ref(true); diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/JetRefactoringUtil.java b/idea/src/org/jetbrains/kotlin/idea/refactoring/JetRefactoringUtil.java index 4d255829c59..9e249935d94 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/JetRefactoringUtil.java +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/JetRefactoringUtil.java @@ -56,6 +56,7 @@ import org.jetbrains.kotlin.renderer.DescriptorRenderer; import org.jetbrains.kotlin.resolve.BindingContext; import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils; import org.jetbrains.kotlin.resolve.DescriptorUtils; +import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode; import org.jetbrains.kotlin.types.JetType; import javax.swing.*; @@ -127,7 +128,7 @@ public class JetRefactoringUtil { @Nullable Collection ignore, @NotNull String actionStringKey ) { - BindingContext bindingContext = ResolvePackage.analyze(declaration); + BindingContext bindingContext = ResolvePackage.analyze(declaration, BodyResolveMode.FULL); CallableDescriptor declarationDescriptor = (CallableDescriptor)bindingContext.get(BindingContext.DECLARATION_TO_DESCRIPTOR, declaration); @@ -262,7 +263,7 @@ public class JetRefactoringUtil { PsiElement originalDeclaration = AsJavaPackage.getUnwrapped(method); if (originalDeclaration instanceof JetDeclaration) { JetDeclaration jetDeclaration = (JetDeclaration) originalDeclaration; - BindingContext bindingContext = ResolvePackage.analyze(jetDeclaration); + BindingContext bindingContext = ResolvePackage.analyze(jetDeclaration, BodyResolveMode.FULL); DeclarationDescriptor descriptor = bindingContext.get(BindingContext.DECLARATION_TO_DESCRIPTOR, jetDeclaration); if (descriptor != null) return formatFunctionDescriptor(descriptor); @@ -272,7 +273,7 @@ public class JetRefactoringUtil { @NotNull public static String formatClass(@NotNull JetClassOrObject classOrObject) { - BindingContext bindingContext = ResolvePackage.analyze(classOrObject); + BindingContext bindingContext = ResolvePackage.analyze(classOrObject, BodyResolveMode.FULL); DeclarationDescriptor descriptor = bindingContext.get(BindingContext.DECLARATION_TO_DESCRIPTOR, classOrObject); if (descriptor instanceof ClassDescriptor) return formatClassDescriptor(descriptor); @@ -425,7 +426,7 @@ public class JetRefactoringUtil { } if (addExpression) { JetExpression expression = (JetExpression)element; - BindingContext bindingContext = ResolvePackage.analyze(expression); + BindingContext bindingContext = ResolvePackage.analyze(expression, BodyResolveMode.FULL); JetType expressionType = bindingContext.get(BindingContext.EXPRESSION_TYPE, expression); if (expressionType == null || !KotlinBuiltIns.isUnit(expressionType)) { expressions.add(expression); diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/JetChangeSignatureHandler.java b/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/JetChangeSignatureHandler.java index 35ac390ba5f..1a3dfdaef17 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/JetChangeSignatureHandler.java +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/JetChangeSignatureHandler.java @@ -46,6 +46,7 @@ import org.jetbrains.kotlin.load.java.descriptors.JavaCallableMemberDescriptor; import org.jetbrains.kotlin.psi.*; import org.jetbrains.kotlin.resolve.BindingContext; import org.jetbrains.kotlin.resolve.calls.tasks.TasksPackage; +import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode; import java.util.Collection; @@ -90,7 +91,7 @@ public class JetChangeSignatureHandler implements ChangeSignatureHandler { JetElement jetElement = PsiTreeUtil.getParentOfType(element, JetElement.class); if (jetElement == null) return null; - BindingContext bindingContext = ResolvePackage.analyze(jetElement); + BindingContext bindingContext = ResolvePackage.analyze(jetElement, BodyResolveMode.FULL); DeclarationDescriptor descriptor = bindingContext.get(BindingContext.REFERENCE_TARGET, (JetReferenceExpression) receiverExpr); if (descriptor instanceof ClassDescriptor || descriptor instanceof FunctionDescriptor) return receiverExpr; @@ -105,7 +106,7 @@ public class JetChangeSignatureHandler implements ChangeSignatureHandler { @NotNull Project project, @Nullable Editor editor ) { - BindingContext bindingContext = ResolvePackage.analyze(element); + BindingContext bindingContext = ResolvePackage.analyze(element, BodyResolveMode.FULL); FunctionDescriptor functionDescriptor = findDescriptor(element, project, editor, bindingContext); if (functionDescriptor == null) { diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/JetChangeSignatureUsageProcessor.java b/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/JetChangeSignatureUsageProcessor.java index 5908d3305e6..203799d3b13 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/JetChangeSignatureUsageProcessor.java +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/JetChangeSignatureUsageProcessor.java @@ -56,6 +56,7 @@ import org.jetbrains.kotlin.resolve.BindingContext; import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils; import org.jetbrains.kotlin.resolve.calls.callUtil.CallUtilPackage; import org.jetbrains.kotlin.resolve.calls.model.ResolvedCall; +import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode; import org.jetbrains.kotlin.resolve.scopes.JetScope; import org.jetbrains.kotlin.resolve.scopes.receivers.ReceiverValue; import org.jetbrains.kotlin.resolve.scopes.receivers.ThisReceiver; @@ -183,12 +184,12 @@ public class JetChangeSignatureUsageProcessor implements ChangeSignatureUsagePro JetFunction jetFunction = (JetFunction) functionUsageInfo.getDeclaration(); JetExpression body = jetFunction.getBodyExpression(); if (body != null) { - body.accept(visitor, ResolvePackage.analyze(body)); + body.accept(visitor, ResolvePackage.analyze(body, BodyResolveMode.FULL)); } for (JetParameter parameter : jetFunction.getValueParameters()) { JetExpression defaultValue = parameter.getDefaultValue(); if (defaultValue != null) { - defaultValue.accept(visitor, ResolvePackage.analyze(defaultValue)); + defaultValue.accept(visitor, ResolvePackage.analyze(defaultValue, BodyResolveMode.FULL)); } } } @@ -287,7 +288,7 @@ public class JetChangeSignatureUsageProcessor implements ChangeSignatureUsagePro JetExpression argExpression = arguments.get(0).getArgumentExpression(); if (!(argExpression instanceof JetFunctionLiteralExpression)) continue; - BindingContext context = ResolvePackage.analyze(callExpression); + BindingContext context = ResolvePackage.analyze(callExpression, BodyResolveMode.FULL); JetFunctionLiteral functionLiteral = ((JetFunctionLiteralExpression) argExpression).getFunctionLiteral(); FunctionDescriptor functionDescriptor = context.get(BindingContext.FUNCTION, functionLiteral); @@ -332,7 +333,7 @@ public class JetChangeSignatureUsageProcessor implements ChangeSignatureUsagePro JetChangeInfo changeInfo = (JetChangeInfo) info; PsiElement function = info.getMethod(); PsiElement element = function != null ? function : changeInfo.getContext(); - BindingContext bindingContext = ResolvePackage.analyze((JetElement) element); + BindingContext bindingContext = ResolvePackage.analyze((JetElement) element, BodyResolveMode.FULL); FunctionDescriptor oldDescriptor = ChangeSignaturePackage.getOriginalBaseFunctionDescriptor(changeInfo); DeclarationDescriptor containingDeclaration = oldDescriptor.getContainingDeclaration(); @@ -455,7 +456,7 @@ public class JetChangeSignatureUsageProcessor implements ChangeSignatureUsagePro JetTypeReference receiverTypeRef = psiFactory.createType(newReceiverInfo.getCurrentTypeText()); TypeRefHelpersPackage.setReceiverTypeReference(functionWithReceiver, receiverTypeRef); //noinspection ConstantConditions - BindingContext newContext = ResolvePackage.analyze(functionWithReceiver.getBodyExpression()); + BindingContext newContext = ResolvePackage.analyze(functionWithReceiver.getBodyExpression(), BodyResolveMode.FULL); //noinspection ConstantConditions int originalOffset = ((JetNamedFunction) callable).getBodyExpression().getTextOffset(); diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/usages/JetFunctionCallUsage.java b/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/usages/JetFunctionCallUsage.java index 875a50d0182..a65c6522e68 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/usages/JetFunctionCallUsage.java +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/usages/JetFunctionCallUsage.java @@ -31,6 +31,7 @@ import org.jetbrains.kotlin.idea.util.psiModificationUtil.PsiModificationUtilPac import org.jetbrains.kotlin.psi.*; import org.jetbrains.kotlin.resolve.calls.callUtil.CallUtilPackage; import org.jetbrains.kotlin.resolve.calls.model.ResolvedCall; +import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode; import org.jetbrains.kotlin.resolve.scopes.receivers.ExpressionReceiver; import org.jetbrains.kotlin.resolve.scopes.receivers.ReceiverValue; import org.jetbrains.kotlin.resolve.scopes.receivers.ThisReceiver; @@ -48,7 +49,7 @@ public class JetFunctionCallUsage extends JetUsageInfo { public JetFunctionCallUsage(@NotNull JetCallElement element, JetFunctionDefinitionUsage callee) { super(element); this.callee = callee; - this.resolvedCall = CallUtilPackage.getResolvedCall(element, ResolvePackage.analyze(element)); + this.resolvedCall = CallUtilPackage.getResolvedCall(element, ResolvePackage.analyze(element, BodyResolveMode.FULL)); } @Override diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/inline/KotlinInlineValHandler.java b/idea/src/org/jetbrains/kotlin/idea/refactoring/inline/KotlinInlineValHandler.java index b3dc28537d2..96a5cb45556 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/inline/KotlinInlineValHandler.java +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/inline/KotlinInlineValHandler.java @@ -231,7 +231,7 @@ public class KotlinInlineValHandler extends InlineActionHandler { return null; } - BindingContext context = ResolvePackage.analyze(initializer); + BindingContext context = ResolvePackage.analyze(initializer, BodyResolveMode.FULL); SimpleFunctionDescriptor fun = context.get(BindingContext.FUNCTION, functionLiteralExpression.getFunctionLiteral()); if (fun == null || ErrorUtils.containsErrorType(fun)) { return null; @@ -343,7 +343,7 @@ public class KotlinInlineValHandler extends InlineActionHandler { @Nullable private static String getTypeArgumentsStringForCall(@NotNull JetExpression initializer) { - BindingContext context = ResolvePackage.analyze(initializer); + BindingContext context = ResolvePackage.analyze(initializer, BodyResolveMode.FULL); ResolvedCall call = CallUtilPackage.getResolvedCall(initializer, context); if (call == null) return null; diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/safeDelete/KotlinOverridingDialog.java b/idea/src/org/jetbrains/kotlin/idea/refactoring/safeDelete/KotlinOverridingDialog.java index c7ec77f5ff7..900c67a4f79 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/safeDelete/KotlinOverridingDialog.java +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/safeDelete/KotlinOverridingDialog.java @@ -46,6 +46,7 @@ import org.jetbrains.kotlin.psi.JetProperty; import org.jetbrains.kotlin.psi.JetPsiUtil; import org.jetbrains.kotlin.renderer.DescriptorRenderer; import org.jetbrains.kotlin.resolve.BindingContext; +import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode; import javax.swing.*; import javax.swing.event.ListSelectionEvent; @@ -93,7 +94,7 @@ class KotlinOverridingDialog extends DialogWrapper { private static String formatElement(PsiElement element) { element = JetPsiUtil.ascendIfPropertyAccessor(element); if (element instanceof JetNamedFunction || element instanceof JetProperty) { - BindingContext bindingContext = ResolvePackage.analyze((JetElement) element); + BindingContext bindingContext = ResolvePackage.analyze((JetElement) element, BodyResolveMode.FULL); DeclarationDescriptor declarationDescriptor = bindingContext.get(BindingContext.DECLARATION_TO_DESCRIPTOR, element); if (declarationDescriptor instanceof CallableMemberDescriptor) { diff --git a/idea/src/org/jetbrains/kotlin/idea/run/JetRunConfiguration.java b/idea/src/org/jetbrains/kotlin/idea/run/JetRunConfiguration.java index 25dc30f3135..ddb749042fb 100644 --- a/idea/src/org/jetbrains/kotlin/idea/run/JetRunConfiguration.java +++ b/idea/src/org/jetbrains/kotlin/idea/run/JetRunConfiguration.java @@ -52,6 +52,7 @@ import org.jetbrains.kotlin.name.Name; import org.jetbrains.kotlin.psi.JetDeclaration; import org.jetbrains.kotlin.psi.JetNamedFunction; import org.jetbrains.kotlin.resolve.BindingContext; +import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode; import java.util.*; @@ -310,7 +311,7 @@ public class JetRunConfiguration extends ModuleBasedConfiguration