Refactoring: extract method
This commit is contained in:
+27
-22
@@ -39,6 +39,7 @@ 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.utils.UtilsPackage;
|
||||
import org.junit.Assert;
|
||||
|
||||
import java.util.*;
|
||||
@@ -116,13 +117,13 @@ public abstract class AbstractOverrideImplementTest extends JetLightCodeInsightF
|
||||
|
||||
private void doOverrideImplement(OverrideImplementMethodsHandler handler, @Nullable String memberToOverride) {
|
||||
PsiElement elementAtCaret = myFixture.getFile().findElementAt(myFixture.getEditor().getCaretModel().getOffset());
|
||||
final JetClassOrObject classOrObject = PsiTreeUtil.getParentOfType(elementAtCaret, JetClassOrObject.class);
|
||||
JetClassOrObject classOrObject = PsiTreeUtil.getParentOfType(elementAtCaret, JetClassOrObject.class);
|
||||
assertNotNull("Caret should be inside class or object", classOrObject);
|
||||
|
||||
final JetFile jetFile = classOrObject.getContainingJetFile();
|
||||
JetFile jetFile = classOrObject.getContainingJetFile();
|
||||
Set<CallableMemberDescriptor> descriptors = handler.collectMethodsToGenerate(classOrObject);
|
||||
|
||||
final CallableMemberDescriptor singleToOverride;
|
||||
CallableMemberDescriptor singleToOverride;
|
||||
if (memberToOverride == null) {
|
||||
// Filter out fake overrides of members of Any (equals, hashCode, toString)
|
||||
List<CallableMemberDescriptor> filtered = KotlinPackage.filter(descriptors, new Function1<CallableMemberDescriptor, Boolean>() {
|
||||
@@ -156,25 +157,19 @@ public abstract class AbstractOverrideImplementTest extends JetLightCodeInsightF
|
||||
singleToOverride = candidateToOverride;
|
||||
}
|
||||
|
||||
new WriteCommandAction(myFixture.getProject(), myFixture.getFile()) {
|
||||
@Override
|
||||
protected void run(@NotNull Result result) throws Throwable {
|
||||
OverrideImplementMethodsHandler.generateMethods(myFixture.getEditor(), classOrObject,
|
||||
OverrideImplementMethodsHandler.membersFromDescriptors(jetFile, Collections.singletonList(singleToOverride))
|
||||
);
|
||||
}
|
||||
}.execute();
|
||||
performGenerateCommand(classOrObject,
|
||||
OverrideImplementMethodsHandler.membersFromDescriptors(jetFile, Collections.singletonList(singleToOverride)));
|
||||
}
|
||||
|
||||
private void doMultiOverrideImplement(OverrideImplementMethodsHandler handler) {
|
||||
PsiElement elementAtCaret = myFixture.getFile().findElementAt(myFixture.getEditor().getCaretModel().getOffset());
|
||||
final JetClassOrObject classOrObject = PsiTreeUtil.getParentOfType(elementAtCaret, JetClassOrObject.class);
|
||||
JetClassOrObject classOrObject = PsiTreeUtil.getParentOfType(elementAtCaret, JetClassOrObject.class);
|
||||
assertNotNull("Caret should be inside class or object", classOrObject);
|
||||
|
||||
final JetFile jetFile = classOrObject.getContainingJetFile();
|
||||
JetFile jetFile = classOrObject.getContainingJetFile();
|
||||
Set<CallableMemberDescriptor> descriptors = handler.collectMethodsToGenerate(classOrObject);
|
||||
|
||||
final List<CallableMemberDescriptor> descriptorsList = new ArrayList<CallableMemberDescriptor>(descriptors);
|
||||
List<CallableMemberDescriptor> descriptorsList = new ArrayList<CallableMemberDescriptor>(descriptors);
|
||||
Collections.sort(descriptorsList, new Comparator<CallableMemberDescriptor>() {
|
||||
@Override
|
||||
public int compare(@NotNull CallableMemberDescriptor desc1, @NotNull CallableMemberDescriptor desc2) {
|
||||
@@ -182,14 +177,7 @@ public abstract class AbstractOverrideImplementTest extends JetLightCodeInsightF
|
||||
}
|
||||
});
|
||||
|
||||
new WriteCommandAction(myFixture.getProject(), myFixture.getFile()) {
|
||||
@Override
|
||||
protected void run(@NotNull Result result) throws Throwable {
|
||||
OverrideImplementMethodsHandler.generateMethods(
|
||||
myFixture.getEditor(), classOrObject,
|
||||
OverrideImplementMethodsHandler.membersFromDescriptors(jetFile, descriptorsList));
|
||||
}
|
||||
}.execute();
|
||||
performGenerateCommand(classOrObject, OverrideImplementMethodsHandler.membersFromDescriptors(jetFile, descriptorsList));
|
||||
}
|
||||
|
||||
private void generateImplementation(@NotNull final PsiMethod method) {
|
||||
@@ -207,4 +195,21 @@ public abstract class AbstractOverrideImplementTest extends JetLightCodeInsightF
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void performGenerateCommand(
|
||||
final JetClassOrObject classOrObject,
|
||||
final List<DescriptorClassMember> descriptorsToGenerate
|
||||
) {
|
||||
try {
|
||||
new WriteCommandAction(myFixture.getProject(), myFixture.getFile()) {
|
||||
@Override
|
||||
protected void run(@NotNull Result result) throws Throwable {
|
||||
OverrideImplementMethodsHandler.generateMethods(myFixture.getEditor(), classOrObject, descriptorsToGenerate);
|
||||
}
|
||||
}.performCommand();
|
||||
}
|
||||
catch (Throwable throwable) {
|
||||
throw UtilsPackage.rethrow(throwable);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user