From 5db84b0821bbad41ad0291aec7e6e583e59b2b29 Mon Sep 17 00:00:00 2001 From: anna Date: Sun, 21 Aug 2011 17:38:39 +0200 Subject: [PATCH] field can be local: preserve javadoc if any (IDEA-72663 ) --- .../FieldCanBeLocalInspection.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/java/java-impl/src/com/intellij/codeInspection/varScopeCanBeNarrowed/FieldCanBeLocalInspection.java b/java/java-impl/src/com/intellij/codeInspection/varScopeCanBeNarrowed/FieldCanBeLocalInspection.java index d16812c94366..bdd975abc162 100644 --- a/java/java-impl/src/com/intellij/codeInspection/varScopeCanBeNarrowed/FieldCanBeLocalInspection.java +++ b/java/java-impl/src/com/intellij/codeInspection/varScopeCanBeNarrowed/FieldCanBeLocalInspection.java @@ -25,6 +25,7 @@ import com.intellij.codeInspection.ProblemDescriptor; import com.intellij.codeInspection.ProblemsHolder; import com.intellij.codeInspection.ex.BaseLocalInspectionTool; import com.intellij.codeInspection.util.SpecialAnnotationsUtil; +import com.intellij.lang.java.JavaCommenter; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.editor.ScrollType; @@ -39,6 +40,7 @@ import com.intellij.psi.*; import com.intellij.psi.codeStyle.JavaCodeStyleManager; import com.intellij.psi.codeStyle.VariableKind; import com.intellij.psi.controlFlow.*; +import com.intellij.psi.javadoc.PsiDocComment; import com.intellij.psi.search.searches.ReferencesSearch; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.psi.util.PsiUtil; @@ -262,6 +264,7 @@ public class FieldCanBeLocalInspection extends BaseLocalInspectionTool { PsiField myField = PsiTreeUtil.getParentOfType(element, PsiField.class); if (myField == null || !myField.isValid()) return; //weird. should not get here when field becomes invalid + final PsiDocComment docComment = myField.getDocComment(); final Collection refs = ReferencesSearch.search(myField).findAll(); if (refs.isEmpty()) return; Set refsSet = new HashSet(refs); @@ -308,6 +311,20 @@ public class FieldCanBeLocalInspection extends BaseLocalInspectionTool { } if (newDeclaration != null) { + if (docComment != null) { + final StringBuilder buf = new StringBuilder(); + for (PsiElement psiElement : docComment.getDescriptionElements()) { + buf.append(psiElement.getText()); + } + if (buf.length() > 0) { + final JavaCommenter commenter = new JavaCommenter(); + final PsiComment comment = JavaPsiFacade.getElementFactory(project) + .createCommentFromText(commenter.getBlockCommentPrefix() + + buf.toString() + + commenter.getBlockCommentSuffix(), newDeclaration); + newDeclaration.getParent().addBefore(comment, newDeclaration); + } + } final PsiFile psiFile = myField.getContainingFile(); final Editor editor = FileEditorManager.getInstance(project).getSelectedTextEditor(); if (editor != null && IJSwingUtilities.hasFocus(editor.getComponent())) {