Refactoring: use resolve session instead of binding context

This commit is contained in:
Nikolay Krasko
2014-10-02 19:25:24 +04:00
parent c80cdb4790
commit a0404b11b0
4 changed files with 9 additions and 19 deletions
@@ -30,7 +30,7 @@ import java.util.Set;
public class ImplementMethodsHandler extends OverrideImplementMethodsHandler implements IntentionAction {
@Override
protected Set<CallableMemberDescriptor> collectMethodsToGenerate(ClassDescriptor descriptor) {
protected Set<CallableMemberDescriptor> collectMethodsToGenerate(@NotNull ClassDescriptor descriptor) {
return OverrideResolver.getMissingImplementations(descriptor);
}
@@ -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<CallableMemberDescriptor> collectMethodsToGenerate(@NotNull JetClassOrObject classOrObject, BindingContext bindingContext) {
DeclarationDescriptor descriptor = bindingContext.get(BindingContext.DECLARATION_TO_DESCRIPTOR, classOrObject);
public Set<CallableMemberDescriptor> 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<CallableMemberDescriptor> collectMethodsToGenerate(ClassDescriptor descriptor);
protected abstract Set<CallableMemberDescriptor> collectMethodsToGenerate(@NotNull ClassDescriptor descriptor);
private MemberChooser<DescriptorClassMember> 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<CallableMemberDescriptor> missingImplementations = collectMethodsToGenerate(classOrObject, bindingContext);
Set<CallableMemberDescriptor> missingImplementations = collectMethodsToGenerate(classOrObject);
if (missingImplementations.isEmpty() && !implementAll) {
HintManager.getInstance().showErrorHint(editor, getNoMethodsFoundHint());
return;
@@ -35,7 +35,7 @@ import static org.jetbrains.jet.lang.resolve.OverridingUtil.OverrideCompatibilit
public class OverrideMethodsHandler extends OverrideImplementMethodsHandler {
@Override
protected Set<CallableMemberDescriptor> collectMethodsToGenerate(ClassDescriptor descriptor) {
protected Set<CallableMemberDescriptor> collectMethodsToGenerate(@NotNull ClassDescriptor descriptor) {
Set<CallableMemberDescriptor> superMethods = collectSuperMethods(descriptor);
for (DeclarationDescriptor member : descriptor.getDefaultType().getMemberScope().getAllDescriptors()) {
if (member instanceof CallableMemberDescriptor) {
@@ -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<CallableMemberDescriptor> descriptors =
handler.collectMethodsToGenerate(classOrObject, resolveSession.resolveToElement(classOrObject));
Set<CallableMemberDescriptor> 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<CallableMemberDescriptor> descriptors = handler.collectMethodsToGenerate(classOrObject, bindingContext);
Set<CallableMemberDescriptor> descriptors = handler.collectMethodsToGenerate(classOrObject);
final List<CallableMemberDescriptor> descriptorsList = new ArrayList<CallableMemberDescriptor>(descriptors);
Collections.sort(descriptorsList, new Comparator<CallableMemberDescriptor>() {