Extract Function: Choose default visibility at analysis phase

This commit is contained in:
Alexey Sedunov
2014-07-28 16:24:05 +04:00
parent 8af173bd4b
commit cb3328c052
131 changed files with 139 additions and 135 deletions
@@ -581,6 +581,13 @@ private fun ExtractionData.getLocalInstructions(pseudocode: Pseudocode): List<In
return instructions
}
fun ExtractionData.isVisibilityApplicable(): Boolean {
return when (targetSibling.getParent()) {
is JetClassBody, is JetFile -> true
else -> false
}
}
fun ExtractionData.performAnalysis(): AnalysisResult {
if (originalElements.empty) {
return AnalysisResult(null, Status.CRITICAL_ERROR, listOf(ErrorMessage.NO_EXPRESSION))
@@ -664,7 +671,7 @@ fun ExtractionData.performAnalysis(): AnalysisResult {
ExtractableCodeDescriptor(
this,
functionName,
"",
if (isVisibilityApplicable()) "private" else "",
adjustedParameters.sortBy { it.name },
receiverParameter,
paramsInfo.typeParameters.sortBy { it.originalDeclaration.getName()!! },
@@ -29,8 +29,6 @@ import kotlin.Function0;
import kotlin.Function1;
import kotlin.Unit;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.lang.psi.JetClassBody;
import org.jetbrains.jet.lang.psi.JetFile;
import org.jetbrains.jet.plugin.refactoring.JetNameSuggester;
import org.jetbrains.jet.plugin.refactoring.JetRefactoringBundle;
import org.jetbrains.jet.plugin.refactoring.RefactoringPackage;
@@ -81,8 +79,7 @@ public class KotlinExtractFunctionDialog extends DialogWrapper {
}
private boolean isVisibilitySectionAvailable() {
PsiElement target = originalDescriptor.getDescriptor().getExtractionData().getTargetSibling().getParent();
return target instanceof JetClassBody || target instanceof JetFile;
return ExtractFunctionPackage.isVisibilityApplicable(originalDescriptor.getDescriptor().getExtractionData());
}
private String getFunctionName() {
@@ -132,7 +129,7 @@ public class KotlinExtractFunctionDialog extends DialogWrapper {
boolean enableVisibility = isVisibilitySectionAvailable();
visibilityBox.setEnabled(enableVisibility);
if (enableVisibility) {
visibilityBox.setSelectedItem("private");
visibilityBox.setSelectedItem(originalDescriptor.getDescriptor().getVisibility());
}
visibilityBox.addItemListener(
new ItemListener() {