mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
introduce field/constant: do not suggest outer class as field target if it depends on inner class constants
This commit is contained in:
+10
-5
@@ -120,6 +120,8 @@ public abstract class BaseExpressionToFieldHandler extends IntroduceHandlerBase
|
||||
PsiClass aClass = myParentClass;
|
||||
while (aClass != null) {
|
||||
classes.add(aClass);
|
||||
final PsiField psiField = ConvertToFieldRunnable.checkForwardRefs(selectedExpr, aClass);
|
||||
if (psiField != null && psiField.getParent() == aClass) break;
|
||||
aClass = PsiTreeUtil.getParentOfType(aClass, PsiClass.class, true);
|
||||
}
|
||||
if (classes.size() == 1 || ApplicationManager.getApplication().isUnitTestMode()) {
|
||||
@@ -681,7 +683,7 @@ public abstract class BaseExpressionToFieldHandler extends IntroduceHandlerBase
|
||||
myParentClass);
|
||||
|
||||
setModifiers(myField, mySettings, mySettings.isDeclareStatic());
|
||||
myField = appendField(initializer, destClass, myParentClass, myAnchorElement, myField);
|
||||
myField = appendField(initializer, initializerPlace, destClass, myParentClass, myAnchorElement, myField);
|
||||
if (!mySettings.isIntroduceEnumConstant()) {
|
||||
VisibilityUtil.fixVisibility(myOccurrences, myField, mySettings.getFieldVisibility());
|
||||
}
|
||||
@@ -780,7 +782,7 @@ public abstract class BaseExpressionToFieldHandler extends IntroduceHandlerBase
|
||||
}
|
||||
|
||||
static PsiField appendField(final PsiExpression initializer,
|
||||
final PsiClass destClass,
|
||||
InitializationPlace initializerPlace, final PsiClass destClass,
|
||||
final PsiClass parentClass,
|
||||
final PsiElement anchorElement,
|
||||
final PsiField psiField) {
|
||||
@@ -805,9 +807,12 @@ public abstract class BaseExpressionToFieldHandler extends IntroduceHandlerBase
|
||||
return field;
|
||||
}
|
||||
else {
|
||||
final PsiField forwardReference = checkForwardRefs(initializer, parentClass);
|
||||
if (forwardReference != null) {
|
||||
return (PsiField)destClass.addAfter(psiField, forwardReference);
|
||||
final PsiField forwardReference = initializerPlace == InitializationPlace.IN_FIELD_DECLARATION
|
||||
? checkForwardRefs(initializer, parentClass) : null;
|
||||
if (forwardReference != null ) {
|
||||
return forwardReference.getParent() == destClass ?
|
||||
(PsiField)destClass.addAfter(psiField, forwardReference) :
|
||||
(PsiField)forwardReference.getParent().addAfter(psiField, forwardReference);
|
||||
} else {
|
||||
return (PsiField)destClass.add(psiField);
|
||||
}
|
||||
|
||||
+1
-1
@@ -311,7 +311,7 @@ public class InplaceIntroduceConstantPopup {
|
||||
if (visibility != null) {
|
||||
PsiUtil.setModifierProperty(field, visibility, true);
|
||||
}
|
||||
field = BaseExpressionToFieldHandler.ConvertToFieldRunnable.appendField(myExpr, myParentClass, myParentClass, myAnchorElementIfAll, field);
|
||||
field = BaseExpressionToFieldHandler.ConvertToFieldRunnable.appendField(myExpr, BaseExpressionToFieldHandler.InitializationPlace.IN_FIELD_DECLARATION, myParentClass, myParentClass, myAnchorElementIfAll, field);
|
||||
return field;
|
||||
}
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user