mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
encapsulate fields: preserve comments inside (IDEA-124747)
This commit is contained in:
+14
-21
@@ -236,19 +236,10 @@ public class JavaEncapsulateFieldHelper extends EncapsulateFieldHelper {
|
||||
PsiReferenceExpression expr,
|
||||
PsiClass aClass,
|
||||
PsiMethod setter) throws IncorrectOperationException {
|
||||
PsiElementFactory factory = JavaPsiFacade.getInstance(expr.getProject()).getElementFactory();
|
||||
final String setterName = fieldDescriptor.getSetterName();
|
||||
@NonNls String text = setterName + "(a)";
|
||||
PsiExpression qualifier = expr.getQualifierExpression();
|
||||
if (qualifier != null){
|
||||
text = "q." + text;
|
||||
}
|
||||
PsiMethodCallExpression methodCall = (PsiMethodCallExpression)factory.createExpressionFromText(text, expr);
|
||||
|
||||
PsiMethodCallExpression methodCall = prepareMethodCall(expr, text);
|
||||
methodCall.getArgumentList().getExpressions()[0].replace(setterArgument);
|
||||
if (qualifier != null){
|
||||
methodCall.getMethodExpression().getQualifierExpression().replace(qualifier);
|
||||
}
|
||||
methodCall = checkMethodResolvable(methodCall, setter, expr, aClass);
|
||||
if (methodCall == null) {
|
||||
VisibilityUtil.escalateVisibility(fieldDescriptor.getField(), expr);
|
||||
@@ -261,19 +252,9 @@ public class JavaEncapsulateFieldHelper extends EncapsulateFieldHelper {
|
||||
PsiReferenceExpression expr,
|
||||
PsiClass aClass,
|
||||
PsiMethod getter) throws IncorrectOperationException {
|
||||
PsiElementFactory factory = JavaPsiFacade.getInstance(expr.getProject()).getElementFactory();
|
||||
final String getterName = fieldDescriptor.getGetterName();
|
||||
@NonNls String text = getterName + "()";
|
||||
PsiExpression qualifier = expr.getQualifierExpression();
|
||||
if (qualifier != null) {
|
||||
text = "q." + text;
|
||||
}
|
||||
PsiMethodCallExpression methodCall = (PsiMethodCallExpression)factory.createExpressionFromText(text, expr);
|
||||
|
||||
if (qualifier != null) {
|
||||
methodCall.getMethodExpression().getQualifierExpression().replace(qualifier);
|
||||
}
|
||||
|
||||
PsiMethodCallExpression methodCall = prepareMethodCall(expr, text);
|
||||
methodCall = checkMethodResolvable(methodCall, getter, expr, aClass);
|
||||
if (methodCall == null) {
|
||||
VisibilityUtil.escalateVisibility(fieldDescriptor.getField(), expr);
|
||||
@@ -281,6 +262,18 @@ public class JavaEncapsulateFieldHelper extends EncapsulateFieldHelper {
|
||||
return methodCall;
|
||||
}
|
||||
|
||||
private static PsiMethodCallExpression prepareMethodCall(PsiReferenceExpression expr, String text) {
|
||||
PsiExpression qualifier = expr.getQualifierExpression();
|
||||
if (qualifier != null) {
|
||||
final PsiElement referenceNameElement = expr.getReferenceNameElement();
|
||||
if (referenceNameElement != null) {
|
||||
text = expr.getText().substring(0, referenceNameElement.getStartOffsetInParent()) + text;
|
||||
}
|
||||
}
|
||||
final PsiElementFactory factory = JavaPsiFacade.getInstance(expr.getProject()).getElementFactory();
|
||||
return (PsiMethodCallExpression)factory.createExpressionFromText(text, expr);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private static PsiMethodCallExpression checkMethodResolvable(PsiMethodCallExpression methodCall,
|
||||
PsiMethod targetMethod,
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
public class A {
|
||||
public int i;
|
||||
|
||||
void foo(A a) {
|
||||
System.out.println(a./*comment*/getI());
|
||||
a/*comment*/.setI(42);
|
||||
}
|
||||
|
||||
public int getI() {
|
||||
return i;
|
||||
}
|
||||
|
||||
public void setI(int i) {
|
||||
this.i = i;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
public class A {
|
||||
public int i;
|
||||
|
||||
void foo(A a) {
|
||||
System.out.println(a./*comment*/i);
|
||||
a/*comment*/.i = 42;
|
||||
}
|
||||
}
|
||||
@@ -59,6 +59,10 @@ public class EncapsulateFieldsTest extends MultiFileTestCase{
|
||||
doTest("i", "A.B", "There is already a method <b><code>A.getI()</code></b> which would be hidden by generated getter");
|
||||
}
|
||||
|
||||
public void testCommentsInside() throws Exception {
|
||||
doTest("i", "A", null);
|
||||
}
|
||||
|
||||
public void testMoveJavadocToGetter() throws Exception {
|
||||
doTest(new PerformAction() {
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user