introduce constant: don't miss comments (IDEA-140623)

This commit is contained in:
Anna Kozlova
2015-06-25 20:58:22 +03:00
parent c343396fde
commit 98713f26a8
2 changed files with 17 additions and 9 deletions
@@ -203,6 +203,7 @@ public abstract class LocalToFieldHandler {
} else {
assignment = (PsiStatement)body.add(assignment);
}
appendComments(local, assignment);
local.delete();
return assignment;
}
@@ -228,14 +229,18 @@ public abstract class LocalToFieldHandler {
continue;
}
if ("super".equals(text) && enclosingConstructor == null && PsiTreeUtil.isAncestor(constructor, local, false)) {
final PsiStatement statement = (PsiStatement)body.addAfter(assignment, first);
appendComments(local, statement);
local.delete();
return (PsiStatement)body.addAfter(assignment, first);
return statement;
}
}
}
if (enclosingConstructor == null && PsiTreeUtil.isAncestor(constructor, local, false)) {
final PsiStatement statement = (PsiStatement)body.addBefore(assignment, first);
appendComments(local, statement);
local.delete();
return (PsiStatement)body.addBefore(assignment, first);
return statement;
}
}
@@ -252,7 +257,10 @@ public abstract class LocalToFieldHandler {
}
}
if (enclosingConstructor == null) local.delete();
if (enclosingConstructor == null) {
appendComments(assignment, local);
local.delete();
}
return assignment;
}
@@ -319,14 +327,14 @@ public abstract class LocalToFieldHandler {
switch (finalInitializerPlace) {
case IN_FIELD_DECLARATION:
appendComments(declarationStatement);
appendComments(declarationStatement, myField);
declarationStatement.delete();
break;
case IN_CURRENT_METHOD:
PsiExpressionStatement statement = createAssignment(myLocal, myFieldName, factory);
appendComments(declarationStatement, declarationStatement);
if (declarationStatement instanceof PsiDeclarationStatement) {
appendComments(declarationStatement);
declarationStatement.replace(statement);
} else {
myLocal.replace(statement.getExpression());
@@ -367,11 +375,11 @@ public abstract class LocalToFieldHandler {
}
}
private static void appendComments(PsiElement declarationStatement) {
private static void appendComments(PsiElement declarationStatement, PsiElement element) {
final Collection<PsiComment> comments = PsiTreeUtil.findChildrenOfType(declarationStatement, PsiComment.class);
final PsiElement parent = declarationStatement.getParent();
final PsiElement parent = element.getParent();
for (PsiComment comment : comments) {
parent.addBefore(comment, declarationStatement);
parent.addBefore(comment, element);
}
}
}
@@ -1,7 +1,7 @@
class Test {
/*and comment here*///comment
public static final String xxx = "";
{
/*and comment here*///comment
}
}