Refactoring: use resolve session instead of binding context
This commit is contained in:
@@ -30,7 +30,7 @@ import java.util.Set;
|
|||||||
|
|
||||||
public class ImplementMethodsHandler extends OverrideImplementMethodsHandler implements IntentionAction {
|
public class ImplementMethodsHandler extends OverrideImplementMethodsHandler implements IntentionAction {
|
||||||
@Override
|
@Override
|
||||||
protected Set<CallableMemberDescriptor> collectMethodsToGenerate(ClassDescriptor descriptor) {
|
protected Set<CallableMemberDescriptor> collectMethodsToGenerate(@NotNull ClassDescriptor descriptor) {
|
||||||
return OverrideResolver.getMissingImplementations(descriptor);
|
return OverrideResolver.getMissingImplementations(descriptor);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -33,12 +33,11 @@ import org.jetbrains.annotations.NotNull;
|
|||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.jetbrains.jet.lang.descriptors.*;
|
import org.jetbrains.jet.lang.descriptors.*;
|
||||||
import org.jetbrains.jet.lang.psi.*;
|
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.JetType;
|
||||||
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
|
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.DescriptorRenderer;
|
||||||
import org.jetbrains.jet.renderer.DescriptorRendererBuilder;
|
import org.jetbrains.jet.renderer.DescriptorRendererBuilder;
|
||||||
|
import org.jetbrains.jet.plugin.caches.resolve.ResolvePackage;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
@@ -207,15 +206,15 @@ public abstract class OverrideImplementMethodsHandler implements LanguageCodeIns
|
|||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
public Set<CallableMemberDescriptor> collectMethodsToGenerate(@NotNull JetClassOrObject classOrObject, BindingContext bindingContext) {
|
public Set<CallableMemberDescriptor> collectMethodsToGenerate(@NotNull JetClassOrObject classOrObject) {
|
||||||
DeclarationDescriptor descriptor = bindingContext.get(BindingContext.DECLARATION_TO_DESCRIPTOR, classOrObject);
|
DeclarationDescriptor descriptor = ResolvePackage.getLazyResolveSession(classOrObject).resolveToDescriptor(classOrObject);
|
||||||
if (descriptor instanceof ClassDescriptor) {
|
if (descriptor instanceof ClassDescriptor) {
|
||||||
return collectMethodsToGenerate((ClassDescriptor) descriptor);
|
return collectMethodsToGenerate((ClassDescriptor) descriptor);
|
||||||
}
|
}
|
||||||
return Collections.emptySet();
|
return Collections.emptySet();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected abstract Set<CallableMemberDescriptor> collectMethodsToGenerate(ClassDescriptor descriptor);
|
protected abstract Set<CallableMemberDescriptor> collectMethodsToGenerate(@NotNull ClassDescriptor descriptor);
|
||||||
|
|
||||||
private MemberChooser<DescriptorClassMember> showOverrideImplementChooser(
|
private MemberChooser<DescriptorClassMember> showOverrideImplementChooser(
|
||||||
Project project,
|
Project project,
|
||||||
@@ -248,9 +247,7 @@ public abstract class OverrideImplementMethodsHandler implements LanguageCodeIns
|
|||||||
|
|
||||||
assert classOrObject != null : "ClassObject should be checked in isValidFor method";
|
assert classOrObject != null : "ClassObject should be checked in isValidFor method";
|
||||||
|
|
||||||
BindingContext bindingContext = AnalyzerFacadeWithCache.getContextForElement(classOrObject);
|
Set<CallableMemberDescriptor> missingImplementations = collectMethodsToGenerate(classOrObject);
|
||||||
|
|
||||||
Set<CallableMemberDescriptor> missingImplementations = collectMethodsToGenerate(classOrObject, bindingContext);
|
|
||||||
if (missingImplementations.isEmpty() && !implementAll) {
|
if (missingImplementations.isEmpty() && !implementAll) {
|
||||||
HintManager.getInstance().showErrorHint(editor, getNoMethodsFoundHint());
|
HintManager.getInstance().showErrorHint(editor, getNoMethodsFoundHint());
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -35,7 +35,7 @@ import static org.jetbrains.jet.lang.resolve.OverridingUtil.OverrideCompatibilit
|
|||||||
|
|
||||||
public class OverrideMethodsHandler extends OverrideImplementMethodsHandler {
|
public class OverrideMethodsHandler extends OverrideImplementMethodsHandler {
|
||||||
@Override
|
@Override
|
||||||
protected Set<CallableMemberDescriptor> collectMethodsToGenerate(ClassDescriptor descriptor) {
|
protected Set<CallableMemberDescriptor> collectMethodsToGenerate(@NotNull ClassDescriptor descriptor) {
|
||||||
Set<CallableMemberDescriptor> superMethods = collectSuperMethods(descriptor);
|
Set<CallableMemberDescriptor> superMethods = collectSuperMethods(descriptor);
|
||||||
for (DeclarationDescriptor member : descriptor.getDefaultType().getMemberScope().getAllDescriptors()) {
|
for (DeclarationDescriptor member : descriptor.getDefaultType().getMemberScope().getAllDescriptors()) {
|
||||||
if (member instanceof CallableMemberDescriptor) {
|
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.descriptors.ClassDescriptor;
|
||||||
import org.jetbrains.jet.lang.psi.JetClassOrObject;
|
import org.jetbrains.jet.lang.psi.JetClassOrObject;
|
||||||
import org.jetbrains.jet.lang.psi.JetFile;
|
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.resolve.OverrideResolver;
|
||||||
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
|
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
|
||||||
import org.jetbrains.jet.plugin.JetLightCodeInsightFixtureTestCase;
|
import org.jetbrains.jet.plugin.JetLightCodeInsightFixtureTestCase;
|
||||||
import org.jetbrains.jet.plugin.JetLightProjectDescriptor;
|
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 org.junit.Assert;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
@@ -124,9 +120,7 @@ public abstract class AbstractOverrideImplementTest extends JetLightCodeInsightF
|
|||||||
assertNotNull("Caret should be inside class or object", classOrObject);
|
assertNotNull("Caret should be inside class or object", classOrObject);
|
||||||
|
|
||||||
final JetFile jetFile = classOrObject.getContainingJetFile();
|
final JetFile jetFile = classOrObject.getContainingJetFile();
|
||||||
ResolveSessionForBodies resolveSession = ResolvePackage.getLazyResolveSession(jetFile);
|
Set<CallableMemberDescriptor> descriptors = handler.collectMethodsToGenerate(classOrObject);
|
||||||
Set<CallableMemberDescriptor> descriptors =
|
|
||||||
handler.collectMethodsToGenerate(classOrObject, resolveSession.resolveToElement(classOrObject));
|
|
||||||
|
|
||||||
final CallableMemberDescriptor singleToOverride;
|
final CallableMemberDescriptor singleToOverride;
|
||||||
if (memberToOverride == null) {
|
if (memberToOverride == null) {
|
||||||
@@ -178,8 +172,7 @@ public abstract class AbstractOverrideImplementTest extends JetLightCodeInsightF
|
|||||||
assertNotNull("Caret should be inside class or object", classOrObject);
|
assertNotNull("Caret should be inside class or object", classOrObject);
|
||||||
|
|
||||||
final JetFile jetFile = classOrObject.getContainingJetFile();
|
final JetFile jetFile = classOrObject.getContainingJetFile();
|
||||||
BindingContext bindingContext = AnalyzerFacadeWithCache.getContextForElement(classOrObject);
|
Set<CallableMemberDescriptor> descriptors = handler.collectMethodsToGenerate(classOrObject);
|
||||||
Set<CallableMemberDescriptor> descriptors = handler.collectMethodsToGenerate(classOrObject, bindingContext);
|
|
||||||
|
|
||||||
final List<CallableMemberDescriptor> descriptorsList = new ArrayList<CallableMemberDescriptor>(descriptors);
|
final List<CallableMemberDescriptor> descriptorsList = new ArrayList<CallableMemberDescriptor>(descriptors);
|
||||||
Collections.sort(descriptorsList, new Comparator<CallableMemberDescriptor>() {
|
Collections.sort(descriptorsList, new Comparator<CallableMemberDescriptor>() {
|
||||||
|
|||||||
Reference in New Issue
Block a user