mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-21 14:37:45 +07:00
inline field: preserve context for diamonds (IDEA-158604)
This commit is contained in:
+10
-4
@@ -139,8 +139,9 @@ public class InlineConstantFieldProcessor extends BaseRefactoringProcessor {
|
||||
protected void performRefactoring(@NotNull UsageInfo[] usages) {
|
||||
PsiExpression initializer = InlineConstantFieldHandler.getInitializer(myField);
|
||||
LOG.assertTrue(initializer != null);
|
||||
initializer = normalize (initializer);
|
||||
|
||||
initializer = normalize ((PsiExpression)initializer.copy());
|
||||
final Set<PsiAssignmentExpression> assignments = new HashSet<>();
|
||||
for (UsageInfo info : usages) {
|
||||
if (info instanceof UsageFromJavaDoc) continue;
|
||||
if (info instanceof NonCodeUsageInfo) continue;
|
||||
@@ -148,7 +149,7 @@ public class InlineConstantFieldProcessor extends BaseRefactoringProcessor {
|
||||
if (element == null) continue;
|
||||
try {
|
||||
if (element instanceof PsiExpression) {
|
||||
inlineExpressionUsage((PsiExpression)element, initializer);
|
||||
inlineExpressionUsage((PsiExpression)element, initializer, assignments);
|
||||
}
|
||||
else {
|
||||
PsiImportStaticStatement importStaticStatement = PsiTreeUtil.getParentOfType(element, PsiImportStaticStatement.class);
|
||||
@@ -161,6 +162,10 @@ public class InlineConstantFieldProcessor extends BaseRefactoringProcessor {
|
||||
}
|
||||
}
|
||||
|
||||
for (PsiAssignmentExpression assignment : assignments) {
|
||||
assignment.delete();
|
||||
}
|
||||
|
||||
if (!myInlineThisOnly) {
|
||||
try {
|
||||
myField.delete();
|
||||
@@ -186,7 +191,8 @@ public class InlineConstantFieldProcessor extends BaseRefactoringProcessor {
|
||||
}
|
||||
|
||||
private void inlineExpressionUsage(PsiExpression expr,
|
||||
PsiExpression initializer1) throws IncorrectOperationException {
|
||||
PsiExpression initializer1,
|
||||
Set<PsiAssignmentExpression> assignments) throws IncorrectOperationException {
|
||||
if (myField.isWritable()) {
|
||||
myField.normalizeDeclaration();
|
||||
}
|
||||
@@ -194,7 +200,7 @@ public class InlineConstantFieldProcessor extends BaseRefactoringProcessor {
|
||||
if (isAccessedForWriting(expr)) {
|
||||
PsiAssignmentExpression assignmentExpression = PsiTreeUtil.getParentOfType(expr, PsiAssignmentExpression.class);
|
||||
if (assignmentExpression != null) {
|
||||
assignmentExpression.delete();
|
||||
assignments.add(assignmentExpression);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user