ignore serialVersionUID field when checking for lambda folding (IDEA-86549)

This commit is contained in:
peter
2012-05-24 19:29:49 +02:00
parent ea9d514c27
commit 382b5d03f8
5 changed files with 15 additions and 5 deletions
@@ -78,7 +78,7 @@ public class HighlightUtil {
private static final Map<String, Set<String>> ourClassInitializerIncompatibleModifiers;
private static final Set<String> ourConstructorNotAllowedModifiers;
@NonNls private static final String SERIAL_VERSION_UID_FIELD_NAME = "serialVersionUID";
@NonNls public static final String SERIAL_VERSION_UID_FIELD_NAME = "serialVersionUID";
@NonNls private static final String SERIAL_PERSISTENT_FIELDS_FIELD_NAME = "serialPersistentFields";
private static final QuickFixFactory QUICK_FIX_FACTORY = QuickFixFactory.getInstance();
@@ -16,6 +16,7 @@
package com.intellij.codeInsight.folding.impl;
import com.intellij.codeInsight.daemon.impl.CollectHighlightsUtil;
import com.intellij.codeInsight.daemon.impl.analysis.HighlightUtil;
import com.intellij.codeInsight.folding.JavaCodeFoldingSettings;
import com.intellij.codeInsight.generation.OverrideImplementUtil;
import com.intellij.lang.ASTNode;
@@ -565,8 +566,14 @@ public class JavaFoldingBuilder extends CustomFoldingBuilder implements DumbAwar
}
private static boolean hasOnlyOneMethod(@NotNull PsiAnonymousClass anonymousClass, boolean checkResolve) {
if (anonymousClass.getFields().length != 0) {
return false;
PsiField[] fields = anonymousClass.getFields();
if (fields.length != 0) {
if (fields.length == 1 && HighlightUtil.SERIAL_VERSION_UID_FIELD_NAME.equals(fields[0].getName()) &&
fields[0].hasModifierProperty(PsiModifier.STATIC)) {
//ok
} else {
return false;
}
}
if (anonymousClass.getInitializers().length != 0) {
return false;
@@ -30,6 +30,7 @@ import com.intellij.analysis.AnalysisScope;
import com.intellij.codeInsight.AnnotationUtil;
import com.intellij.codeInsight.daemon.GroupNames;
import com.intellij.codeInsight.daemon.ImplicitUsageProvider;
import com.intellij.codeInsight.daemon.impl.analysis.HighlightUtil;
import com.intellij.codeInsight.intention.IntentionAction;
import com.intellij.codeInspection.*;
import com.intellij.codeInspection.ex.*;
@@ -266,7 +267,7 @@ public class UnusedDeclarationInspection extends FilteringInspectionTool {
private static boolean isSerializationImplicitlyUsedField(PsiField field) {
@NonNls final String name = field.getName();
if (!"serialVersionUID".equals(name) && !"serialPersistentFields".equals(name)) return false;
if (!HighlightUtil.SERIAL_VERSION_UID_FIELD_NAME.equals(name) && !"serialPersistentFields".equals(name)) return false;
if (!field.hasModifierProperty(PsiModifier.STATIC)) return false;
PsiClass aClass = field.getContainingClass();
return aClass == null || isSerializable(aClass, null);
@@ -174,6 +174,7 @@ class Test {
class Test {
void test() {
new Runnable() {
static final long serialVersionUID = 42L;
public void run() {
System.out.println(<caret>);
}
@@ -15,6 +15,7 @@
*/
package com.siyeh;
import com.intellij.codeInsight.daemon.impl.analysis.HighlightUtil;
import org.jetbrains.annotations.NonNls;
/**
@@ -57,7 +58,7 @@ public class HardcodedMethodConstants {
public static final String PRINT_STACK_TRACE = "printStackTrace";
public static final String REMOVE = "remove";
public static final String RUN = "run";
public static final String SERIAL_VERSION_UID = "serialVersionUID";
public static final String SERIAL_VERSION_UID = HighlightUtil.SERIAL_VERSION_UID_FIELD_NAME;
public static final String SET = "set";
public static final String SIZE = "size";
public static final String STARTS_WITH = "startsWith";