mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-04-21 22:11:40 +07:00
ChangeUIDAction: do not show intention in presence of initializers: IDEA-195234
This commit is contained in:
@@ -9,6 +9,8 @@ import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.search.LocalSearchScope;
|
||||
import com.intellij.psi.search.searches.ReferencesSearch;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import com.siyeh.ig.psiutils.CommentTracker;
|
||||
@@ -16,6 +18,7 @@ import org.jetbrains.annotations.Nls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.security.SecureRandom;
|
||||
import java.util.Arrays;
|
||||
import java.util.Random;
|
||||
|
||||
|
||||
@@ -54,6 +57,15 @@ public class ChangeUIDAction extends PsiElementBaseIntentionAction {
|
||||
PsiField field = PsiTreeUtil.getParentOfType(element, PsiField.class);
|
||||
if (field == null) return false;
|
||||
if (!field.getType().equals(PsiType.LONG)) return false;
|
||||
if (field.hasModifierProperty(PsiModifier.FINAL)) {
|
||||
PsiClass aClass = field.getContainingClass();
|
||||
if (aClass == null) return false;
|
||||
boolean initializersHasReferencesToField = Arrays.stream(aClass.getInitializers())
|
||||
.anyMatch(initializer -> ReferencesSearch.search(field, new LocalSearchScope(initializer)).findFirst() != null);
|
||||
if (initializersHasReferencesToField) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return "serialVersionUID".equals(field.getName());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
// "Randomly change 'serialVersionUID' initializer" "false"
|
||||
|
||||
import java.util.function.BinaryOperator;
|
||||
import java.util.function.Function;
|
||||
import java.util.function.UnaryOperator;
|
||||
|
||||
public class Main {
|
||||
static final long serialVersionUID<caret>;
|
||||
static {
|
||||
serialVersionUID = 12L;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user