mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
generate getters/setters: prefer less visibility corresponding to containing class (IDEA-95697)
This commit is contained in:
+2
-2
@@ -16,15 +16,15 @@
|
||||
package com.intellij.codeInsight.daemon.impl.quickfix;
|
||||
|
||||
import com.intellij.codeInsight.daemon.QuickFixBundle;
|
||||
import com.intellij.codeInsight.generation.GenerateConstructorHandler;
|
||||
import com.intellij.psi.PsiClass;
|
||||
import com.intellij.psi.PsiModifier;
|
||||
import com.intellij.psi.util.PsiUtil;
|
||||
import com.intellij.util.VisibilityUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class AddDefaultConstructorFix extends AddMethodFix {
|
||||
public AddDefaultConstructorFix(PsiClass aClass) {
|
||||
this(aClass, GenerateConstructorHandler.getConstructorModifier(aClass));
|
||||
this(aClass, PsiUtil.getMaximumModifierForMember(aClass));
|
||||
}
|
||||
|
||||
public AddDefaultConstructorFix(PsiClass aClass, @NotNull @PsiModifier.ModifierConstant final String modifier) {
|
||||
|
||||
+16
-7
@@ -15,21 +15,22 @@
|
||||
*/
|
||||
package com.intellij.codeInsight.daemon.impl.quickfix;
|
||||
|
||||
import com.intellij.codeInsight.CodeInsightUtilBase;
|
||||
import com.intellij.codeInsight.daemon.QuickFixBundle;
|
||||
import com.intellij.codeInsight.intention.IntentionAction;
|
||||
import com.intellij.codeInsight.CodeInsightUtilBase;
|
||||
import com.intellij.codeInsight.intention.LowPriorityAction;
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.psi.PsiClass;
|
||||
import com.intellij.psi.PsiField;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.PsiModifier;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.util.PropertyUtil;
|
||||
import com.intellij.psi.util.PsiUtil;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author ven
|
||||
*/
|
||||
@@ -113,11 +114,19 @@ public class CreateGetterOrSetterFix implements IntentionAction, LowPriorityActi
|
||||
public void invoke(@NotNull Project project, Editor editor, PsiFile file) throws IncorrectOperationException {
|
||||
if (!CodeInsightUtilBase.preparePsiElementForWrite(myField)) return;
|
||||
PsiClass aClass = myField.getContainingClass();
|
||||
final List<PsiMethod> methods = new ArrayList<PsiMethod>();
|
||||
if (myCreateGetter) {
|
||||
aClass.add(PropertyUtil.generateGetterPrototype(myField));
|
||||
methods.add(PropertyUtil.generateGetterPrototype(myField));
|
||||
}
|
||||
if (myCreateSetter) {
|
||||
aClass.add(PropertyUtil.generateSetterPrototype(myField));
|
||||
methods.add(PropertyUtil.generateSetterPrototype(myField));
|
||||
}
|
||||
for (PsiMethod method : methods) {
|
||||
String modifier = PsiUtil.getMaximumModifierForMember(aClass);
|
||||
if (modifier != null) {
|
||||
PsiUtil.setModifierProperty(method, modifier, true);
|
||||
}
|
||||
aClass.add(method);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+1
-21
@@ -219,7 +219,7 @@ public class GenerateConstructorHandler extends GenerateMembersHandlerBase {
|
||||
CodeStyleManager codeStyleManager = CodeStyleManager.getInstance(manager.getProject());
|
||||
|
||||
PsiMethod constructor = factory.createConstructor(aClass.getName(), aClass);
|
||||
String modifier = getConstructorModifier(aClass);
|
||||
String modifier = PsiUtil.getMaximumModifierForMember(aClass);
|
||||
if (modifier != null) {
|
||||
PsiUtil.setModifierProperty(constructor, modifier, true);
|
||||
}
|
||||
@@ -297,26 +297,6 @@ public class GenerateConstructorHandler extends GenerateMembersHandlerBase {
|
||||
return constructor;
|
||||
}
|
||||
|
||||
@PsiModifier.ModifierConstant
|
||||
public static String getConstructorModifier(final PsiClass aClass) {
|
||||
String modifier = PsiModifier.PUBLIC;
|
||||
|
||||
if (aClass.hasModifierProperty(PsiModifier.ABSTRACT) && !aClass.isEnum()) {
|
||||
modifier = PsiModifier.PROTECTED;
|
||||
}
|
||||
else if (aClass.hasModifierProperty(PsiModifier.PACKAGE_LOCAL)) {
|
||||
modifier = PsiModifier.PACKAGE_LOCAL;
|
||||
}
|
||||
else if (aClass.hasModifierProperty(PsiModifier.PRIVATE)) {
|
||||
modifier = PsiModifier.PRIVATE;
|
||||
}
|
||||
else if (aClass.isEnum()) {
|
||||
modifier = PsiModifier.PRIVATE;
|
||||
}
|
||||
|
||||
return modifier;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected GenerationInfo[] generateMemberPrototypes(PsiClass aClass, ClassMember originalMember) {
|
||||
LOG.assertTrue(false);
|
||||
|
||||
@@ -19,6 +19,7 @@ import com.intellij.psi.*;
|
||||
import com.intellij.psi.util.PropertyUtil;
|
||||
import com.intellij.psi.util.PsiFormatUtil;
|
||||
import com.intellij.psi.util.PsiFormatUtilBase;
|
||||
import com.intellij.psi.util.PsiUtil;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
/**
|
||||
@@ -45,8 +46,20 @@ public class PsiFieldMember extends PsiElementClassMember<PsiField> implements E
|
||||
|
||||
@Nullable
|
||||
private static PsiMethod createMethodIfNotExists(final PsiField field, final PsiMethod template) {
|
||||
PsiMethod existing = field.getContainingClass().findMethodBySignature(template, false);
|
||||
return existing == null ? template : null;
|
||||
final PsiClass aClass = field.getContainingClass();
|
||||
PsiMethod existing = aClass.findMethodBySignature(template, false);
|
||||
if (existing == null) {
|
||||
if (template != null) {
|
||||
String modifier = PsiUtil.getMaximumModifierForMember(aClass);
|
||||
if (modifier != null) {
|
||||
PsiUtil.setModifierProperty(template, modifier, true);
|
||||
}
|
||||
}
|
||||
return template;
|
||||
}
|
||||
else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -702,6 +702,26 @@ public final class PsiUtil extends PsiUtilCore {
|
||||
return psiClass != null && psiClass.isAnnotationType();
|
||||
}
|
||||
|
||||
@PsiModifier.ModifierConstant
|
||||
public static String getMaximumModifierForMember(final PsiClass aClass) {
|
||||
String modifier = PsiModifier.PUBLIC;
|
||||
|
||||
if (aClass.hasModifierProperty(PsiModifier.ABSTRACT) && !aClass.isEnum()) {
|
||||
modifier = PsiModifier.PROTECTED;
|
||||
}
|
||||
else if (aClass.hasModifierProperty(PsiModifier.PACKAGE_LOCAL)) {
|
||||
modifier = PsiModifier.PACKAGE_LOCAL;
|
||||
}
|
||||
else if (aClass.hasModifierProperty(PsiModifier.PRIVATE)) {
|
||||
modifier = PsiModifier.PRIVATE;
|
||||
}
|
||||
else if (aClass.isEnum()) {
|
||||
modifier = PsiModifier.PRIVATE;
|
||||
}
|
||||
|
||||
return modifier;
|
||||
}
|
||||
|
||||
private static class TypeParameterIterator implements Iterator<PsiTypeParameter> {
|
||||
private int myIndex;
|
||||
private PsiTypeParameterListOwner myCurrentOwner;
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@
|
||||
class A {
|
||||
private String s;
|
||||
|
||||
public String getS() {
|
||||
String getS() {
|
||||
return s;
|
||||
}
|
||||
}
|
||||
+2
-2
@@ -2,11 +2,11 @@
|
||||
class A {
|
||||
private String s;
|
||||
|
||||
public String getS() {
|
||||
String getS() {
|
||||
return s;
|
||||
}
|
||||
|
||||
public void setS(String s) {
|
||||
void setS(String s) {
|
||||
this.s = s;
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -2,7 +2,7 @@
|
||||
class A {
|
||||
private String s;
|
||||
|
||||
public void setS(String s) {
|
||||
void setS(String s) {
|
||||
this.s = s;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user