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 {
|
||||
@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>() {
|
||||
|
||||
Reference in New Issue
Block a user