extract light method object: make all private file members public to ensure direct access from 'magic' inner class

This commit is contained in:
Anna Kozlova
2014-09-12 12:38:16 +04:00
parent 39ce553e6d
commit a25b50b5fe
2 changed files with 22 additions and 1 deletions
@@ -34,6 +34,7 @@ import com.intellij.refactoring.util.VariableData;
import com.intellij.usageView.UsageInfo;
import com.intellij.util.Function;
import com.intellij.util.IncorrectOperationException;
import com.intellij.util.VisibilityUtil;
import com.intellij.util.containers.ContainerUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -148,6 +149,26 @@ public class ExtractLightMethodObjectHandler {
PsiStatement outStatement = elementFactory.createStatementFromText("System.out.println(" + outputVariables + ");", anchor);
outStatement = (PsiStatement)container.addAfter(outStatement, elementsCopy[elementsCopy.length - 1]);
copy.accept(new JavaRecursiveElementWalkingVisitor() {
private void makePublic(PsiMember method) {
if (method.hasModifierProperty(PsiModifier.PRIVATE)) {
VisibilityUtil.setVisibility(method.getModifierList(), PsiModifier.PUBLIC);
}
}
@Override
public void visitMethod(PsiMethod method) {
super.visitMethod(method);
makePublic(method);
}
@Override
public void visitField(PsiField field) {
super.visitField(field);
makePublic(field);
}
});
final ExtractMethodObjectProcessor extractMethodObjectProcessor = new ExtractMethodObjectProcessor(project, null, elementsCopy, "") {
@Override
protected AbstractExtractDialog createExtractMethodObjectDialog(MyExtractMethodProcessor processor) {
@@ -19,7 +19,7 @@ class Sample {
System.out.println("<caret>");
}
int foo() {
private int foo() {
return 1;
}
}