From a0404b11b090ff3d7e0f93eff53cf1a9f9059fdc Mon Sep 17 00:00:00 2001 From: Nikolay Krasko Date: Thu, 2 Oct 2014 19:25:24 +0400 Subject: [PATCH] Refactoring: use resolve session instead of binding context --- .../plugin/codeInsight/ImplementMethodsHandler.java | 2 +- .../OverrideImplementMethodsHandler.java | 13 +++++-------- .../plugin/codeInsight/OverrideMethodsHandler.java | 2 +- .../codeInsight/AbstractOverrideImplementTest.java | 11 ++--------- 4 files changed, 9 insertions(+), 19 deletions(-) diff --git a/idea/src/org/jetbrains/jet/plugin/codeInsight/ImplementMethodsHandler.java b/idea/src/org/jetbrains/jet/plugin/codeInsight/ImplementMethodsHandler.java index b6feeb7aa1f..f3bf067589b 100644 --- a/idea/src/org/jetbrains/jet/plugin/codeInsight/ImplementMethodsHandler.java +++ b/idea/src/org/jetbrains/jet/plugin/codeInsight/ImplementMethodsHandler.java @@ -30,7 +30,7 @@ import java.util.Set; public class ImplementMethodsHandler extends OverrideImplementMethodsHandler implements IntentionAction { @Override - protected Set collectMethodsToGenerate(ClassDescriptor descriptor) { + protected Set collectMethodsToGenerate(@NotNull ClassDescriptor descriptor) { return OverrideResolver.getMissingImplementations(descriptor); } diff --git a/idea/src/org/jetbrains/jet/plugin/codeInsight/OverrideImplementMethodsHandler.java b/idea/src/org/jetbrains/jet/plugin/codeInsight/OverrideImplementMethodsHandler.java index 02f51961bce..22e9379fe97 100644 --- a/idea/src/org/jetbrains/jet/plugin/codeInsight/OverrideImplementMethodsHandler.java +++ b/idea/src/org/jetbrains/jet/plugin/codeInsight/OverrideImplementMethodsHandler.java @@ -33,12 +33,11 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.lang.descriptors.*; import org.jetbrains.jet.lang.psi.*; -import org.jetbrains.jet.lang.resolve.BindingContext; import org.jetbrains.jet.lang.types.JetType; import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns; -import org.jetbrains.jet.plugin.project.AnalyzerFacadeWithCache; import org.jetbrains.jet.renderer.DescriptorRenderer; import org.jetbrains.jet.renderer.DescriptorRendererBuilder; +import org.jetbrains.jet.plugin.caches.resolve.ResolvePackage; import java.util.ArrayList; import java.util.Collections; @@ -207,15 +206,15 @@ public abstract class OverrideImplementMethodsHandler implements LanguageCodeIns } @NotNull - public Set collectMethodsToGenerate(@NotNull JetClassOrObject classOrObject, BindingContext bindingContext) { - DeclarationDescriptor descriptor = bindingContext.get(BindingContext.DECLARATION_TO_DESCRIPTOR, classOrObject); + public Set collectMethodsToGenerate(@NotNull JetClassOrObject classOrObject) { + DeclarationDescriptor descriptor = ResolvePackage.getLazyResolveSession(classOrObject).resolveToDescriptor(classOrObject); if (descriptor instanceof ClassDescriptor) { return collectMethodsToGenerate((ClassDescriptor) descriptor); } return Collections.emptySet(); } - protected abstract Set collectMethodsToGenerate(ClassDescriptor descriptor); + protected abstract Set collectMethodsToGenerate(@NotNull ClassDescriptor descriptor); private MemberChooser showOverrideImplementChooser( Project project, @@ -248,9 +247,7 @@ public abstract class OverrideImplementMethodsHandler implements LanguageCodeIns assert classOrObject != null : "ClassObject should be checked in isValidFor method"; - BindingContext bindingContext = AnalyzerFacadeWithCache.getContextForElement(classOrObject); - - Set missingImplementations = collectMethodsToGenerate(classOrObject, bindingContext); + Set missingImplementations = collectMethodsToGenerate(classOrObject); if (missingImplementations.isEmpty() && !implementAll) { HintManager.getInstance().showErrorHint(editor, getNoMethodsFoundHint()); return; diff --git a/idea/src/org/jetbrains/jet/plugin/codeInsight/OverrideMethodsHandler.java b/idea/src/org/jetbrains/jet/plugin/codeInsight/OverrideMethodsHandler.java index 5b0cd68b63d..9819bf857b6 100644 --- a/idea/src/org/jetbrains/jet/plugin/codeInsight/OverrideMethodsHandler.java +++ b/idea/src/org/jetbrains/jet/plugin/codeInsight/OverrideMethodsHandler.java @@ -35,7 +35,7 @@ import static org.jetbrains.jet.lang.resolve.OverridingUtil.OverrideCompatibilit public class OverrideMethodsHandler extends OverrideImplementMethodsHandler { @Override - protected Set collectMethodsToGenerate(ClassDescriptor descriptor) { + protected Set collectMethodsToGenerate(@NotNull ClassDescriptor descriptor) { Set superMethods = collectSuperMethods(descriptor); for (DeclarationDescriptor member : descriptor.getDefaultType().getMemberScope().getAllDescriptors()) { if (member instanceof CallableMemberDescriptor) { diff --git a/idea/tests/org/jetbrains/jet/plugin/codeInsight/AbstractOverrideImplementTest.java b/idea/tests/org/jetbrains/jet/plugin/codeInsight/AbstractOverrideImplementTest.java index ba2ba7bfdce..fcf57e60bf4 100644 --- a/idea/tests/org/jetbrains/jet/plugin/codeInsight/AbstractOverrideImplementTest.java +++ b/idea/tests/org/jetbrains/jet/plugin/codeInsight/AbstractOverrideImplementTest.java @@ -35,14 +35,10 @@ import org.jetbrains.jet.lang.descriptors.CallableMemberDescriptor; import org.jetbrains.jet.lang.descriptors.ClassDescriptor; import org.jetbrains.jet.lang.psi.JetClassOrObject; import org.jetbrains.jet.lang.psi.JetFile; -import org.jetbrains.jet.lang.resolve.BindingContext; import org.jetbrains.jet.lang.resolve.OverrideResolver; import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns; import org.jetbrains.jet.plugin.JetLightCodeInsightFixtureTestCase; import org.jetbrains.jet.plugin.JetLightProjectDescriptor; -import org.jetbrains.jet.plugin.caches.resolve.ResolvePackage; -import org.jetbrains.jet.plugin.project.AnalyzerFacadeWithCache; -import org.jetbrains.jet.plugin.project.ResolveSessionForBodies; import org.junit.Assert; import java.util.*; @@ -124,9 +120,7 @@ public abstract class AbstractOverrideImplementTest extends JetLightCodeInsightF assertNotNull("Caret should be inside class or object", classOrObject); final JetFile jetFile = classOrObject.getContainingJetFile(); - ResolveSessionForBodies resolveSession = ResolvePackage.getLazyResolveSession(jetFile); - Set descriptors = - handler.collectMethodsToGenerate(classOrObject, resolveSession.resolveToElement(classOrObject)); + Set descriptors = handler.collectMethodsToGenerate(classOrObject); final CallableMemberDescriptor singleToOverride; if (memberToOverride == null) { @@ -178,8 +172,7 @@ public abstract class AbstractOverrideImplementTest extends JetLightCodeInsightF assertNotNull("Caret should be inside class or object", classOrObject); final JetFile jetFile = classOrObject.getContainingJetFile(); - BindingContext bindingContext = AnalyzerFacadeWithCache.getContextForElement(classOrObject); - Set descriptors = handler.collectMethodsToGenerate(classOrObject, bindingContext); + Set descriptors = handler.collectMethodsToGenerate(classOrObject); final List descriptorsList = new ArrayList(descriptors); Collections.sort(descriptorsList, new Comparator() {