mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
CommentTracker: support removal of reference qualifier; used in AddSingleMemberStaticImportAction
This commit is contained in:
+21
-5
@@ -87,10 +87,7 @@ public class CommentTracker {
|
||||
* @param element element to delete
|
||||
*/
|
||||
public void delete(@NotNull PsiElement element) {
|
||||
if (element instanceof PsiExpression && element.getParent() instanceof PsiExpressionStatement) {
|
||||
element = element.getParent();
|
||||
}
|
||||
grabComments(element);
|
||||
grabCommentsOnDelete(element);
|
||||
element.delete();
|
||||
}
|
||||
|
||||
@@ -114,7 +111,7 @@ public class CommentTracker {
|
||||
* @param element element to delete
|
||||
*/
|
||||
public void deleteAndRestoreComments(@NotNull PsiElement element) {
|
||||
grabComments(element);
|
||||
grabCommentsOnDelete(element);
|
||||
insertCommentsBefore(element instanceof PsiVariable ? element.getParent() : element);
|
||||
element.delete();
|
||||
}
|
||||
@@ -264,6 +261,25 @@ public class CommentTracker {
|
||||
return ignoredParents.stream().anyMatch(p -> PsiTreeUtil.isAncestor(p, comment, false));
|
||||
}
|
||||
|
||||
private void grabCommentsOnDelete(PsiElement element) {
|
||||
if (element instanceof PsiExpression && element.getParent() instanceof PsiExpressionStatement) {
|
||||
element = element.getParent();
|
||||
}
|
||||
if (element.getParent() instanceof PsiJavaCodeReferenceElement) {
|
||||
PsiJavaCodeReferenceElement ref = (PsiJavaCodeReferenceElement)element.getParent();
|
||||
if (element == ref.getQualifier()) {
|
||||
for (PsiElement child : ref.getChildren()) {
|
||||
if(child.textMatches(".")) {
|
||||
break;
|
||||
}
|
||||
grabComments(child);
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
grabComments(element);
|
||||
}
|
||||
|
||||
private void grabComments(PsiElement element) {
|
||||
checkState();
|
||||
for (PsiComment comment : PsiTreeUtil.collectElementsOfType(element, PsiComment.class)) {
|
||||
|
||||
Reference in New Issue
Block a user