[java] Don't add redundant qualifier in introduce constant refactoring

Add initializer to the physical file instead of the non-physical field to make sure the context of the field is properly taken into account when doing the PSI replacement. #IDEA-385631 Fixed

GitOrigin-RevId: 2954ce938f6573b0422edfd5e0b59901f854381d
This commit is contained in:
Bart van Helvert
2026-02-05 23:45:54 +00:00
committed by intellij-monorepo-bot
parent 985077423b
commit 50c312aa91
6 changed files with 69 additions and 8 deletions
@@ -448,9 +448,6 @@ public abstract class BaseExpressionToFieldHandler extends IntroduceHandlerBase
final PsiTypeElement typeElement = factory.createTypeElement(type);
field.getTypeElement().replace(typeElement);
field = (PsiField)CodeStyleManager.getInstance(psiManager.getProject()).reformat(field);
if (includeInitializer) {
field.getInitializer().replace(initializerExpr);
}
return field;
}
catch (IncorrectOperationException e) {
@@ -758,11 +755,10 @@ public abstract class BaseExpressionToFieldHandler extends IntroduceHandlerBase
if (!CommonRefactoringUtil.checkReadOnlyStatus(myProject, destClass.getContainingFile())) return;
ChangeContextUtil.encodeContextInfo(destClass, true);
myField = mySettings.isIntroduceEnumConstant() ? EnumConstantsUtil.createEnumConstant(destClass, myFieldName, initializer) :
createField(myFieldName, type.getType(), initializer,
initializerPlace == InitializationPlace.IN_FIELD_DECLARATION && initializer != null,
myParentClass);
boolean includeInitializer = initializerPlace == InitializationPlace.IN_FIELD_DECLARATION && initializer != null;
myField = mySettings.isIntroduceEnumConstant()
? EnumConstantsUtil.createEnumConstant(destClass, myFieldName, initializer)
: createField(myFieldName, type.getType(), initializer, includeInitializer, myParentClass);
setModifiers(myField, mySettings);
PsiElement finalAnchorElement = null;
@@ -796,6 +792,9 @@ public abstract class BaseExpressionToFieldHandler extends IntroduceHandlerBase
anchorMember = null;
}
myField = appendField(initializer, initializerPlace, destClass, myParentClass, myField, anchorMember);
if (includeInitializer) {
myField.getInitializer().replace(initializer);
}
if (!mySettings.isIntroduceEnumConstant()) {
VisibilityUtil.fixVisibility(myOccurrences, myField, mySettings.getFieldVisibility());
}