diff --git a/platform/analysis-impl/src/com/intellij/codeInsight/daemon/impl/DefaultHighlightVisitor.java b/platform/analysis-impl/src/com/intellij/codeInsight/daemon/impl/DefaultHighlightVisitor.java index baee760e8571..dbb8066f7769 100644 --- a/platform/analysis-impl/src/com/intellij/codeInsight/daemon/impl/DefaultHighlightVisitor.java +++ b/platform/analysis-impl/src/com/intellij/codeInsight/daemon/impl/DefaultHighlightVisitor.java @@ -135,8 +135,9 @@ class DefaultHighlightVisitor implements HighlightVisitor, DumbAware { TextRange range = element.getTextRange(); String errorDescription = element.getErrorDescription(); if (!range.isEmpty()) { - final HighlightInfo info = HighlightInfo.newHighlightInfo(HighlightInfoType.ERROR).range(range) - .descriptionAndTooltip(errorDescription).create(); + HighlightInfo.Builder builder = HighlightInfo.newHighlightInfo(HighlightInfoType.ERROR).range(range); + builder.descriptionAndTooltip(errorDescription); + final HighlightInfo info = builder.create(); if (info != null) { for(ErrorQuickFixProvider provider: ErrorQuickFixProvider.EP_NAME.getExtensionList()) { provider.registerErrorQuickFix(element, info); @@ -152,8 +153,9 @@ class DefaultHighlightVisitor implements HighlightVisitor, DumbAware { String text = elementAtOffset == null ? null : elementAtOffset.getText(); HighlightInfo info; if (offset < fileLength && text != null && !StringUtil.startsWithChar(text, '\n') && !StringUtil.startsWithChar(text, '\r')) { - info = HighlightInfo.newHighlightInfo(HighlightInfoType.ERROR).range(offset, offset + 1).descriptionAndTooltip(errorDescription) - .create(); + HighlightInfo.Builder builder = HighlightInfo.newHighlightInfo(HighlightInfoType.ERROR).range(offset, offset + 1); + builder.descriptionAndTooltip(errorDescription); + info = builder.create(); } else { int start; @@ -166,8 +168,10 @@ class DefaultHighlightVisitor implements HighlightVisitor, DumbAware { start = offset; end = offset < fileLength ? offset + 1 : offset; } - info = HighlightInfo.newHighlightInfo(HighlightInfoType.ERROR).range(element, start, end).descriptionAndTooltip(errorDescription) - .endOfLine().create(); + HighlightInfo.Builder builder = HighlightInfo.newHighlightInfo(HighlightInfoType.ERROR).range(element, start, end); + builder.descriptionAndTooltip(errorDescription); + builder.endOfLine(); + info = builder.create(); } return info; } diff --git a/platform/util-rt/src/com/intellij/openapi/util/Comparing.java b/platform/util-rt/src/com/intellij/openapi/util/Comparing.java index cd775277afbd..3e7f510cb4a3 100644 --- a/platform/util-rt/src/com/intellij/openapi/util/Comparing.java +++ b/platform/util-rt/src/com/intellij/openapi/util/Comparing.java @@ -48,6 +48,7 @@ public class Comparing { @Contract(value = "null,!null -> false; !null,null -> false; null,null -> true", pure = true) public static boolean equal(@Nullable T[] arr1, @Nullable T[] arr2) { if (arr1 == null || arr2 == null) { + //noinspection ArrayEquality return arr1 == arr2; } return Arrays.equals(arr1, arr2); @@ -91,6 +92,7 @@ public class Comparing { @Contract("null,!null,_ -> false; !null,null,_ -> false; null,null,_ -> true") public static boolean equal(@Nullable String arg1, @Nullable String arg2, boolean caseSensitive) { if (arg1 == null || arg2 == null) { + //noinspection StringEquality return arg1 == arg2; } else { @@ -123,6 +125,7 @@ public class Comparing { public static boolean haveEqualElements(@Nullable T[] a, @Nullable T[] b) { if (a == null || b == null) { + //noinspection ArrayEquality return a == b; } @@ -170,6 +173,7 @@ public class Comparing { } public static int compare(@Nullable byte[] o1, @Nullable byte[] o2) { + //noinspection ArrayEquality if (o1 == o2) return 0; if (o1 == null) return 1; if (o2 == null) return -1; @@ -192,7 +196,7 @@ public class Comparing { return o1.compareTo(o2); } - public static int compare(@Nullable T o1, @Nullable T o2, @NotNull Comparator notNullComparator) { + public static int compare(@Nullable T o1, @Nullable T o2, @NotNull Comparator notNullComparator) { if (o1 == o2) return 0; if (o1 == null) return -1; if (o2 == null) return 1; diff --git a/platform/util/src/com/intellij/util/DeprecatedMethodException.java b/platform/util/src/com/intellij/util/DeprecatedMethodException.java index 3be0a21c34b0..e522bf26d3c2 100644 --- a/platform/util/src/com/intellij/util/DeprecatedMethodException.java +++ b/platform/util/src/com/intellij/util/DeprecatedMethodException.java @@ -13,6 +13,6 @@ public class DeprecatedMethodException extends RuntimeException { public static void report(@NotNull String message) { LOG.warn(new DeprecatedMethodException("This method in " + ReflectionUtil.findCallerClass(2) + - " is going to be removed soon. "+message)); + " is deprecated and going to be removed soon. "+message)); } } diff --git a/platform/util/src/com/intellij/util/containers/ConcurrentInstanceMap.java b/platform/util/src/com/intellij/util/containers/ConcurrentInstanceMap.java index 58837d44e869..77e4ce85af91 100644 --- a/platform/util/src/com/intellij/util/containers/ConcurrentInstanceMap.java +++ b/platform/util/src/com/intellij/util/containers/ConcurrentInstanceMap.java @@ -17,6 +17,7 @@ package com.intellij.util.containers; import com.intellij.util.Function; +import org.jetbrains.annotations.NotNull; import java.util.Map; @@ -24,6 +25,10 @@ import java.util.Map; * @author peter */ public class ConcurrentInstanceMap { + private ConcurrentInstanceMap() { + } + + @NotNull public static Map,T> create() { return ConcurrentFactoryMap.createMap(new Function, T>() { @Override @@ -33,7 +38,8 @@ public class ConcurrentInstanceMap { }); } - public static T calculate(Class key) { + @NotNull + public static T calculate(@NotNull Class key) { try { return key.newInstance(); } diff --git a/platform/util/src/com/intellij/util/containers/ConcurrentRefHashMap.java b/platform/util/src/com/intellij/util/containers/ConcurrentRefHashMap.java index f69c9c311f22..f953613047c2 100644 --- a/platform/util/src/com/intellij/util/containers/ConcurrentRefHashMap.java +++ b/platform/util/src/com/intellij/util/containers/ConcurrentRefHashMap.java @@ -42,8 +42,10 @@ abstract class ConcurrentRefHashMap extends AbstractMap implements C V getValue(); // MUST work even with gced references for the code in processQueue to work + @Override boolean equals(Object o); + @Override int hashCode(); } @@ -83,7 +85,8 @@ abstract class ConcurrentRefHashMap extends AbstractMap implements C return processed; } private static final float LOAD_FACTOR = 0.75f; - private static final int DEFAULT_CAPACITY = 16; + static final int DEFAULT_CAPACITY = 16; + static final int DEFAULT_CONCURRENCY_LEVEL = Math.min(Runtime.getRuntime().availableProcessors(), 4); ConcurrentRefHashMap() { this(DEFAULT_CAPACITY); @@ -106,11 +109,11 @@ abstract class ConcurrentRefHashMap extends AbstractMap implements C }; private ConcurrentRefHashMap(int initialCapacity, float loadFactor) { //noinspection unchecked - this(initialCapacity, loadFactor, 4, THIS); + this(initialCapacity, loadFactor, DEFAULT_CONCURRENCY_LEVEL, THIS); } ConcurrentRefHashMap(@NotNull final TObjectHashingStrategy hashingStrategy) { - this(DEFAULT_CAPACITY, LOAD_FACTOR, 2, hashingStrategy); + this(DEFAULT_CAPACITY, LOAD_FACTOR, DEFAULT_CONCURRENCY_LEVEL, hashingStrategy); } ConcurrentRefHashMap(int initialCapacity, @@ -171,6 +174,7 @@ abstract class ConcurrentRefHashMap extends AbstractMap implements C return o.equals(this); // see com.intellij.util.containers.ConcurrentSoftHashMap.SoftKey or com.intellij.util.containers.ConcurrentWeakHashMap.WeakKey } + @Override public int hashCode() { return myHash; } @@ -259,12 +263,14 @@ abstract class ConcurrentRefHashMap extends AbstractMap implements C return o1 == null ? o2 == null : o1.equals(o2); } + @Override public boolean equals(Object o) { if (!(o instanceof Map.Entry)) return false; Map.Entry e = (Map.Entry)o; return valEquals(key, e.getKey()) && valEquals(getValue(), e.getValue()); } + @Override public int hashCode() { Object v; return (key == null ? 0 : key.hashCode()) ^ ((v = getValue()) == null ? 0 : v.hashCode()); @@ -347,6 +353,7 @@ abstract class ConcurrentRefHashMap extends AbstractMap implements C return toRemove; } + @Override public int hashCode() { int h = 0; for (Object aHashEntrySet : hashEntrySet) { diff --git a/platform/util/src/com/intellij/util/containers/ConcurrentWeakHashMap.java b/platform/util/src/com/intellij/util/containers/ConcurrentWeakHashMap.java index 900675424b7d..875be7188e9a 100644 --- a/platform/util/src/com/intellij/util/containers/ConcurrentWeakHashMap.java +++ b/platform/util/src/com/intellij/util/containers/ConcurrentWeakHashMap.java @@ -82,6 +82,7 @@ public final class ConcurrentWeakHashMap extends ConcurrentRefHashMap