From 677a5280eb871cce3430c313cf63d6e8d2cf0bc3 Mon Sep 17 00:00:00 2001 From: Alexey Kudravtsev Date: Mon, 24 Oct 2016 15:03:03 +0300 Subject: [PATCH] annotate varargs methods with SafeVarargs or add corresponding external annotation to get rid of yellow callsites --- .../compiler/util/InspectionValidator.java | 1 + .../HighlightExceptionsHandler.java | 3 +- .../HighlightOverridingMethodsHandler.java | 3 +- .../searches/AnnotatedElementsSearch.java | 9 +++-- .../com/intellij/patterns/annotations.xml | 6 +++ java/java-psi-api/java-psi-api.iml | 3 ++ .../com/intellij/patterns/annotations.xml | 18 +++++++++ .../com/intellij/psi/util/annotations.xml | 39 +++++++++++++++++++ .../impl/id/PlatformIdTableBuilding.java | 1 + .../frameworks/actions/AbstractAction.java | 3 +- .../parameterInfo/ParameterInfoUtils.java | 1 + .../src/com/intellij/semantic/SemKey.java | 10 +++-- .../impl/CompletionServiceImpl.java | 6 ++- .../highlighting/ChooseOneOrAllRunnable.java | 3 +- .../com/intellij/execution/RunManagerEx.java | 6 ++- .../lang/SmartEnterProcessorWithFixers.java | 3 +- .../lang/parser/GeneratedParserUtilBase.java | 1 + .../ui/popup/util/BaseListPopupStep.java | 3 +- .../com/intellij/ui/CollectionListModel.java | 3 +- .../intellij/ide/dnd/TransferableList.java | 3 +- .../mapping/CompositeDataProvider.java | 2 +- .../process/AnsiEscapeDecoderTest.java | 1 + .../history/core/LocalHistoryTestCase.java | 7 +++- .../impl/CodeInsightTestFixtureImpl.java | 3 +- .../intellij/util/containers/annotations.xml | 18 +++++++++ .../com/intellij/util/ArrayUtilTest.java | 4 +- .../src/com/siyeh/ig/BaseInspection.java | 2 + .../ig/migration/IfCanBeSwitchInspection.java | 1 + .../InconsistentResourceBundleInspection.java | 3 +- .../BasicDomElementsInspection.java | 1 + 30 files changed, 143 insertions(+), 24 deletions(-) create mode 100644 java/java-psi-api/anno/com/intellij/patterns/annotations.xml create mode 100644 platform/core-api/anno/com/intellij/patterns/annotations.xml create mode 100644 platform/util/anno/com/intellij/util/containers/annotations.xml diff --git a/java/compiler/openapi/src/com/intellij/openapi/compiler/util/InspectionValidator.java b/java/compiler/openapi/src/com/intellij/openapi/compiler/util/InspectionValidator.java index ece6f346905b..6830c006fa08 100644 --- a/java/compiler/openapi/src/com/intellij/openapi/compiler/util/InspectionValidator.java +++ b/java/compiler/openapi/src/com/intellij/openapi/compiler/util/InspectionValidator.java @@ -63,6 +63,7 @@ public abstract class InspectionValidator { /** * @deprecated Provide inspection classes via {@link #getInspectionToolClasses(CompileContext)} instead. */ + @SafeVarargs protected InspectionValidator(@NotNull final String description, @NotNull final String progressIndicatorText, final Class... inspectionToolClasses) { diff --git a/java/java-impl/src/com/intellij/codeInsight/highlighting/HighlightExceptionsHandler.java b/java/java-impl/src/com/intellij/codeInsight/highlighting/HighlightExceptionsHandler.java index c535c919d47e..65ce48ae3ee1 100644 --- a/java/java-impl/src/com/intellij/codeInsight/highlighting/HighlightExceptionsHandler.java +++ b/java/java-impl/src/com/intellij/codeInsight/highlighting/HighlightExceptionsHandler.java @@ -22,6 +22,7 @@ import com.intellij.openapi.editor.Editor; import com.intellij.openapi.util.Condition; import com.intellij.psi.*; import com.intellij.util.Consumer; +import org.jetbrains.annotations.NotNull; import java.util.Arrays; import java.util.List; @@ -56,7 +57,7 @@ public class HighlightExceptionsHandler extends HighlightUsagesHandlerBase targets, final Consumer> selectionConsumer) { new ChooseClassAndDoHighlightRunnable(myClassTypes, myEditor, CodeInsightBundle.message("highlight.exceptions.thrown.chooser.title")) { @Override - protected void selected(PsiClass... classes) { + protected void selected(@NotNull PsiClass... classes) { selectionConsumer.consume(Arrays.asList(classes)); } }.run(); diff --git a/java/java-impl/src/com/intellij/codeInsight/highlighting/HighlightOverridingMethodsHandler.java b/java/java-impl/src/com/intellij/codeInsight/highlighting/HighlightOverridingMethodsHandler.java index 215e0886ffe3..79b3508dd376 100644 --- a/java/java-impl/src/com/intellij/codeInsight/highlighting/HighlightOverridingMethodsHandler.java +++ b/java/java-impl/src/com/intellij/codeInsight/highlighting/HighlightOverridingMethodsHandler.java @@ -22,6 +22,7 @@ import com.intellij.openapi.editor.Editor; import com.intellij.psi.*; import com.intellij.psi.util.InheritanceUtil; import com.intellij.util.Consumer; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.Arrays; @@ -50,7 +51,7 @@ public class HighlightOverridingMethodsHandler extends HighlightUsagesHandlerBas protected void selectTargets(final List targets, final Consumer> selectionConsumer) { new ChooseClassAndDoHighlightRunnable(targets, myEditor, CodeInsightBundle.message("highlight.overridden.classes.chooser.title")) { @Override - protected void selected(PsiClass... classes) { + protected void selected(@NotNull PsiClass... classes) { selectionConsumer.consume(Arrays.asList(classes)); } }.run(); diff --git a/java/java-indexing-api/src/com/intellij/psi/search/searches/AnnotatedElementsSearch.java b/java/java-indexing-api/src/com/intellij/psi/search/searches/AnnotatedElementsSearch.java index 345ae253671e..9a2d0c3b15cf 100644 --- a/java/java-indexing-api/src/com/intellij/psi/search/searches/AnnotatedElementsSearch.java +++ b/java/java-indexing-api/src/com/intellij/psi/search/searches/AnnotatedElementsSearch.java @@ -33,11 +33,13 @@ public class AnnotatedElementsSearch extends ExtensibleQueryFactory[] myTypes; private final boolean myApproximate; - public Parameters(final PsiClass annotationClass, final SearchScope scope, Class... types) { + @SafeVarargs + public Parameters(final PsiClass annotationClass, final SearchScope scope, @NotNull Class... types) { this(annotationClass, scope, false, types); } - public Parameters(final PsiClass annotationClass, final SearchScope scope, boolean approximate, Class... types) { + @SafeVarargs + public Parameters(final PsiClass annotationClass, final SearchScope scope, boolean approximate, @NotNull Class... types) { myAnnotationClass = annotationClass; myScope = scope; myTypes = types; @@ -65,7 +67,8 @@ public class AnnotatedElementsSearch extends ExtensibleQueryFactory Query searchElements(@NotNull PsiClass annotationClass, @NotNull SearchScope scope, Class... types) { + @SafeVarargs + public static Query searchElements(@NotNull PsiClass annotationClass, @NotNull SearchScope scope, @NotNull Class... types) { //noinspection unchecked return (Query)searchElements(new Parameters(annotationClass, scope, types)); } diff --git a/java/java-psi-api/anno/com/intellij/patterns/annotations.xml b/java/java-psi-api/anno/com/intellij/patterns/annotations.xml new file mode 100644 index 000000000000..32e2972fcf37 --- /dev/null +++ b/java/java-psi-api/anno/com/intellij/patterns/annotations.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/java/java-psi-api/java-psi-api.iml b/java/java-psi-api/java-psi-api.iml index 743b9d4e9676..77f33f529ea1 100644 --- a/java/java-psi-api/java-psi-api.iml +++ b/java/java-psi-api/java-psi-api.iml @@ -2,6 +2,9 @@ + + + diff --git a/platform/core-api/anno/com/intellij/patterns/annotations.xml b/platform/core-api/anno/com/intellij/patterns/annotations.xml new file mode 100644 index 000000000000..d8c1fb0df7d7 --- /dev/null +++ b/platform/core-api/anno/com/intellij/patterns/annotations.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/platform/core-api/anno/com/intellij/psi/util/annotations.xml b/platform/core-api/anno/com/intellij/psi/util/annotations.xml index cfb206df8997..f34c69802be4 100644 --- a/platform/core-api/anno/com/intellij/psi/util/annotations.xml +++ b/platform/core-api/anno/com/intellij/psi/util/annotations.xml @@ -3,4 +3,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/platform/editor-ui-ex/src/com/intellij/psi/impl/cache/impl/id/PlatformIdTableBuilding.java b/platform/editor-ui-ex/src/com/intellij/psi/impl/cache/impl/id/PlatformIdTableBuilding.java index 7ecf50ec7747..3f1211be6a50 100644 --- a/platform/editor-ui-ex/src/com/intellij/psi/impl/cache/impl/id/PlatformIdTableBuilding.java +++ b/platform/editor-ui-ex/src/com/intellij/psi/impl/cache/impl/id/PlatformIdTableBuilding.java @@ -108,6 +108,7 @@ public abstract class PlatformIdTableBuilding { private static class CompositeTodoIndexer extends VersionedTodoIndexer { private final DataIndexer[] indexers; + @SafeVarargs public CompositeTodoIndexer(@NotNull DataIndexer... indexers) { this.indexers = indexers; } diff --git a/platform/lang-api/src/com/intellij/facet/frameworks/actions/AbstractAction.java b/platform/lang-api/src/com/intellij/facet/frameworks/actions/AbstractAction.java index 3dfef6858e12..058504a831d2 100644 --- a/platform/lang-api/src/com/intellij/facet/frameworks/actions/AbstractAction.java +++ b/platform/lang-api/src/com/intellij/facet/frameworks/actions/AbstractAction.java @@ -30,7 +30,8 @@ public abstract class AbstractAction { private static final String SERVER_URL = Registry.get("frameworks.download.libraries.server.url").asString(); private final Pair[] myParams; - protected AbstractAction(Pair... params) { + @SafeVarargs + protected AbstractAction(@NotNull Pair... params) { myParams = params; } diff --git a/platform/lang-api/src/com/intellij/lang/parameterInfo/ParameterInfoUtils.java b/platform/lang-api/src/com/intellij/lang/parameterInfo/ParameterInfoUtils.java index 7e1e0bebf62e..a001abc60cc0 100644 --- a/platform/lang-api/src/com/intellij/lang/parameterInfo/ParameterInfoUtils.java +++ b/platform/lang-api/src/com/intellij/lang/parameterInfo/ParameterInfoUtils.java @@ -42,6 +42,7 @@ public class ParameterInfoUtils { return findParentOfTypeWithStopElements(file, offset, parentClass); } + @SafeVarargs @Nullable public static T findParentOfTypeWithStopElements (PsiFile file, int offset, Class parentClass, @NotNull Class... stopAt) { PsiElement element = file.findElementAt(offset); diff --git a/platform/lang-api/src/com/intellij/semantic/SemKey.java b/platform/lang-api/src/com/intellij/semantic/SemKey.java index 0a5d06a097d6..7a0bcf82b20b 100644 --- a/platform/lang-api/src/com/intellij/semantic/SemKey.java +++ b/platform/lang-api/src/com/intellij/semantic/SemKey.java @@ -18,6 +18,7 @@ package com.intellij.semantic; import com.intellij.util.ArrayUtil; import com.intellij.util.containers.ContainerUtil; import org.jetbrains.annotations.NonNls; +import org.jetbrains.annotations.NotNull; import java.util.List; import java.util.concurrent.atomic.AtomicInteger; @@ -37,7 +38,8 @@ public class SemKey { private final List myInheritors = ContainerUtil.createEmptyCOWList(); private final int myUniqueId; - private SemKey(String debugName, SemKey... supers) { + @SafeVarargs + private SemKey(String debugName, @NotNull SemKey... supers) { myDebugName = debugName; mySupers = supers; myUniqueId = counter.getAndIncrement(); @@ -75,7 +77,8 @@ public class SemKey { return myDebugName; } - public static SemKey createKey(String debugName, SemKey... supers) { + @SafeVarargs + public static SemKey createKey(String debugName, @NotNull SemKey... supers) { return new SemKey<>(debugName, supers); } @@ -88,7 +91,8 @@ public class SemKey { return myUniqueId; } - public SemKey subKey(@NonNls String debugName, SemKey... otherSupers) { + @SafeVarargs + public final SemKey subKey(@NonNls String debugName, @NotNull SemKey... otherSupers) { if (otherSupers.length == 0) { return new SemKey<>(debugName, this); } diff --git a/platform/lang-impl/src/com/intellij/codeInsight/completion/impl/CompletionServiceImpl.java b/platform/lang-impl/src/com/intellij/codeInsight/completion/impl/CompletionServiceImpl.java index 6077026e1ecf..9cee5a2902a9 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/completion/impl/CompletionServiceImpl.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/completion/impl/CompletionServiceImpl.java @@ -192,7 +192,8 @@ public final class CompletionServiceImpl extends CompletionService{ } } - public static boolean assertPhase(Class... possibilities) { + @SafeVarargs + public static boolean assertPhase(@NotNull Class... possibilities) { if (!isPhase(possibilities)) { LOG.error(ourPhase + "; set at " + ourPhaseTrace); return false; @@ -200,7 +201,8 @@ public final class CompletionServiceImpl extends CompletionService{ return true; } - public static boolean isPhase(Class... possibilities) { + @SafeVarargs + public static boolean isPhase(@NotNull Class... possibilities) { CompletionPhase phase = getCompletionPhase(); for (Class possibility : possibilities) { if (possibility.isInstance(phase)) { diff --git a/platform/lang-impl/src/com/intellij/codeInsight/highlighting/ChooseOneOrAllRunnable.java b/platform/lang-impl/src/com/intellij/codeInsight/highlighting/ChooseOneOrAllRunnable.java index c4af528c64e4..8d50619d9df6 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/highlighting/ChooseOneOrAllRunnable.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/highlighting/ChooseOneOrAllRunnable.java @@ -23,6 +23,7 @@ import com.intellij.openapi.ui.popup.PopupChooserBuilder; import com.intellij.psi.PsiElement; import com.intellij.ui.components.JBList; import com.intellij.util.ArrayUtil; +import org.jetbrains.annotations.NotNull; import javax.swing.*; import java.util.Arrays; @@ -41,7 +42,7 @@ public abstract class ChooseOneOrAllRunnable implements Ru myTitle = title; } - protected abstract void selected(T... classes); + protected abstract void selected(@NotNull T... classes); @Override public void run() { diff --git a/platform/lang-impl/src/com/intellij/execution/RunManagerEx.java b/platform/lang-impl/src/com/intellij/execution/RunManagerEx.java index 705734a0b059..d4e5c2f53bf1 100644 --- a/platform/lang-impl/src/com/intellij/execution/RunManagerEx.java +++ b/platform/lang-impl/src/com/intellij/execution/RunManagerEx.java @@ -94,7 +94,8 @@ public abstract class RunManagerEx extends RunManager { @NotNull public abstract Map> getStructure(@NotNull ConfigurationType type); - public static void disableTasks(Project project, RunConfiguration settings, Key... keys) { + @SafeVarargs + public static void disableTasks(Project project, RunConfiguration settings, @NotNull Key... keys) { for (Key key : keys) { List tasks = getInstanceEx(project).getBeforeRunTasks(settings, key); for (BeforeRunTask task : tasks) { @@ -103,7 +104,8 @@ public abstract class RunManagerEx extends RunManager { } } - public static int getTasksCount(Project project, RunConfiguration settings, Key... keys) { + @SafeVarargs + public static int getTasksCount(Project project, RunConfiguration settings, @NotNull Key... keys) { return Arrays.stream(keys).mapToInt(key -> getInstanceEx(project).getBeforeRunTasks(settings, key).size()).sum(); } } \ No newline at end of file diff --git a/platform/lang-impl/src/com/intellij/lang/SmartEnterProcessorWithFixers.java b/platform/lang-impl/src/com/intellij/lang/SmartEnterProcessorWithFixers.java index 090fa5642ba2..ba2bb8b0e5e7 100644 --- a/platform/lang-impl/src/com/intellij/lang/SmartEnterProcessorWithFixers.java +++ b/platform/lang-impl/src/com/intellij/lang/SmartEnterProcessorWithFixers.java @@ -231,7 +231,8 @@ public abstract class SmartEnterProcessorWithFixers extends SmartEnterProcessor ContainerUtil.addAllNotNull(myAfterEnterProcessors, processors); } - protected void addFixers(Fixer... fixers) { + @SafeVarargs + protected final void addFixers(@NotNull Fixer... fixers) { ContainerUtil.addAllNotNull(myFixers, fixers); } diff --git a/platform/lang-impl/src/com/intellij/lang/parser/GeneratedParserUtilBase.java b/platform/lang-impl/src/com/intellij/lang/parser/GeneratedParserUtilBase.java index 59a56024009b..a02b458fb343 100644 --- a/platform/lang-impl/src/com/intellij/lang/parser/GeneratedParserUtilBase.java +++ b/platform/lang-impl/src/com/intellij/lang/parser/GeneratedParserUtilBase.java @@ -555,6 +555,7 @@ public class GeneratedParserUtilBase { state.hooks = Hooks.concat(hook, param, state.level, state.hooks); } + @SafeVarargs public static void register_hook_(PsiBuilder builder, Hook hook, T... param) { ErrorState state = ErrorState.get(builder); state.hooks = Hooks.concat(hook, param, state.level, state.hooks); diff --git a/platform/platform-api/src/com/intellij/openapi/ui/popup/util/BaseListPopupStep.java b/platform/platform-api/src/com/intellij/openapi/ui/popup/util/BaseListPopupStep.java index 529ecd22993d..fe13dd7973b4 100644 --- a/platform/platform-api/src/com/intellij/openapi/ui/popup/util/BaseListPopupStep.java +++ b/platform/platform-api/src/com/intellij/openapi/ui/popup/util/BaseListPopupStep.java @@ -33,7 +33,8 @@ public class BaseListPopupStep extends BaseStep implements ListPopupStep myIcons; private int myDefaultOptionIndex = -1; - public BaseListPopupStep(@Nullable String title, T... values) { + @SafeVarargs + public BaseListPopupStep(@Nullable String title, @NotNull T... values) { this(title, values, new Icon[]{}); } diff --git a/platform/platform-api/src/com/intellij/ui/CollectionListModel.java b/platform/platform-api/src/com/intellij/ui/CollectionListModel.java index 47a1bbc7480f..c0b111105bb3 100644 --- a/platform/platform-api/src/com/intellij/ui/CollectionListModel.java +++ b/platform/platform-api/src/com/intellij/ui/CollectionListModel.java @@ -44,7 +44,8 @@ public class CollectionListModel extends AbstractListModel implements Edit myItems = new ArrayList<>(items); } - public CollectionListModel(final T... items) { + @SafeVarargs + public CollectionListModel(@NotNull T... items) { myItems = ContainerUtilRt.newArrayList(items); } diff --git a/platform/platform-impl/src/com/intellij/ide/dnd/TransferableList.java b/platform/platform-impl/src/com/intellij/ide/dnd/TransferableList.java index e79b3f4469ca..0b0ddad2350e 100644 --- a/platform/platform-impl/src/com/intellij/ide/dnd/TransferableList.java +++ b/platform/platform-impl/src/com/intellij/ide/dnd/TransferableList.java @@ -35,7 +35,8 @@ abstract public class TransferableList implements Transferable { private final List myList; - public TransferableList(T... array) { + @SafeVarargs + public TransferableList(@NotNull T... array) { this(Arrays.asList(array)); } diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/impl/softwrap/mapping/CompositeDataProvider.java b/platform/platform-impl/src/com/intellij/openapi/editor/impl/softwrap/mapping/CompositeDataProvider.java index 2f4a5df0d4e1..96581e65e0cd 100644 --- a/platform/platform-impl/src/com/intellij/openapi/editor/impl/softwrap/mapping/CompositeDataProvider.java +++ b/platform/platform-impl/src/com/intellij/openapi/editor/impl/softwrap/mapping/CompositeDataProvider.java @@ -15,7 +15,6 @@ */ package com.intellij.openapi.editor.impl.softwrap.mapping; -import com.intellij.openapi.editor.impl.softwrap.mapping.DataProvider; import com.intellij.openapi.util.Pair; import org.jetbrains.annotations.NotNull; @@ -46,6 +45,7 @@ public class CompositeDataProvider { * * @param providers providers to register within the current composite provider */ + @SafeVarargs public CompositeDataProvider(@NotNull DataProvider, ?> ... providers) { // We assume here that given array ownership belongs to the current object now. for (int i = 0; i < providers.length; i++) { diff --git a/platform/platform-tests/testSrc/com/intellij/execution/process/AnsiEscapeDecoderTest.java b/platform/platform-tests/testSrc/com/intellij/execution/process/AnsiEscapeDecoderTest.java index 7853654c7458..99d2ce52c87b 100644 --- a/platform/platform-tests/testSrc/com/intellij/execution/process/AnsiEscapeDecoderTest.java +++ b/platform/platform-tests/testSrc/com/intellij/execution/process/AnsiEscapeDecoderTest.java @@ -75,6 +75,7 @@ public class AnsiEscapeDecoderTest extends PlatformTestCase { return ContainerUtil.map(list, pair -> Pair.create(pair.first, pair.second.toString())); } + @SafeVarargs private static AnsiEscapeDecoder.ColoredChunksAcceptor createExpectedAcceptor(@NotNull final Pair... expected) { return new AnsiEscapeDecoder.ColoredChunksAcceptor() { @Override diff --git a/platform/platform-tests/testSrc/com/intellij/history/core/LocalHistoryTestCase.java b/platform/platform-tests/testSrc/com/intellij/history/core/LocalHistoryTestCase.java index 8eed69c4b5e1..2a075fcdadab 100644 --- a/platform/platform-tests/testSrc/com/intellij/history/core/LocalHistoryTestCase.java +++ b/platform/platform-tests/testSrc/com/intellij/history/core/LocalHistoryTestCase.java @@ -25,6 +25,7 @@ import com.intellij.history.core.tree.RootEntry; import com.intellij.history.integration.TestVirtualFile; import com.intellij.openapi.util.Clock; import com.intellij.openapi.vfs.newvfs.persistent.FSRecords; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.junit.Assert; @@ -142,11 +143,13 @@ public abstract class LocalHistoryTestCase extends Assert { return v.getChanges(); } - public static T[] array(T... objects) { + @SafeVarargs + public static T[] array(@NotNull T... objects) { return objects; } - public static List list(T... objects) { + @SafeVarargs + public static List list(@NotNull T... objects) { return Arrays.asList(objects); } diff --git a/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/CodeInsightTestFixtureImpl.java b/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/CodeInsightTestFixtureImpl.java index 84b7850e8dd5..e337a472ee45 100644 --- a/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/CodeInsightTestFixtureImpl.java +++ b/platform/testFramework/src/com/intellij/testFramework/fixtures/impl/CodeInsightTestFixtureImpl.java @@ -341,8 +341,9 @@ public class CodeInsightTestFixtureImpl extends BaseFixture implements CodeInsig InspectionsKt.enableInspectionTools(getProject(), getTestRootDisposable(), inspections); } + @SafeVarargs @Override - public void enableInspections(@NotNull final Class... inspections) { + public final void enableInspections(@NotNull final Class... inspections) { enableInspections(Arrays.asList(inspections)); } diff --git a/platform/util/anno/com/intellij/util/containers/annotations.xml b/platform/util/anno/com/intellij/util/containers/annotations.xml new file mode 100644 index 000000000000..fade09d3017b --- /dev/null +++ b/platform/util/anno/com/intellij/util/containers/annotations.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/platform/util/testSrc/com/intellij/util/ArrayUtilTest.java b/platform/util/testSrc/com/intellij/util/ArrayUtilTest.java index af2b93c6a2bc..fb2312e1bf5f 100644 --- a/platform/util/testSrc/com/intellij/util/ArrayUtilTest.java +++ b/platform/util/testSrc/com/intellij/util/ArrayUtilTest.java @@ -16,6 +16,7 @@ package com.intellij.util; import junit.framework.TestCase; +import org.jetbrains.annotations.NotNull; import java.util.Arrays; @@ -63,7 +64,8 @@ public class ArrayUtilTest extends TestCase { } } - private static void assertEqualsArray(T[] actual, T... expected) { + @SafeVarargs + private static void assertEqualsArray(T[] actual, @NotNull T... expected) { assertEquals(expected.length, actual.length); for (int i = 0; i < actual.length; i++) { assertEquals(expected[i], actual[i]); diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/BaseInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/BaseInspection.java index 404f90983597..26833e0a514f 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/BaseInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/BaseInspection.java @@ -170,6 +170,7 @@ public abstract class BaseInspection extends BaseJavaBatchLocalInspectionTool { return valueField; } + @SafeVarargs public static void parseString(String string, List... outs) { final List strings = StringUtil.split(string, ","); for (List out : outs) { @@ -189,6 +190,7 @@ public abstract class BaseInspection extends BaseJavaBatchLocalInspectionTool { } } + @SafeVarargs public static String formatString(List... strings) { final StringBuilder buffer = new StringBuilder(); final int size = strings[0].size(); diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/migration/IfCanBeSwitchInspection.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/migration/IfCanBeSwitchInspection.java index a1f2d339f39a..446d533a1372 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/migration/IfCanBeSwitchInspection.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/migration/IfCanBeSwitchInspection.java @@ -253,6 +253,7 @@ public class IfCanBeSwitchInspection extends BaseInspection { } } + @SafeVarargs @Nullable public static T getPrevSiblingOfType(@Nullable PsiElement element, @NotNull Class aClass, @NotNull Class... stopAt) { diff --git a/plugins/java-i18n/src/com/intellij/codeInspection/i18n/inconsistentResourceBundle/InconsistentResourceBundleInspection.java b/plugins/java-i18n/src/com/intellij/codeInspection/i18n/inconsistentResourceBundle/InconsistentResourceBundleInspection.java index c3c5943fd9ba..5fcd724e62e7 100644 --- a/plugins/java-i18n/src/com/intellij/codeInspection/i18n/inconsistentResourceBundle/InconsistentResourceBundleInspection.java +++ b/plugins/java-i18n/src/com/intellij/codeInspection/i18n/inconsistentResourceBundle/InconsistentResourceBundleInspection.java @@ -185,8 +185,9 @@ public class InconsistentResourceBundleInspection extends GlobalSimpleInspection return ContainerUtil.getOrElse(mySettings, providerName, true); } + @SafeVarargs @TestOnly - public void enableProviders(final Class... providerClasses) { + public final void enableProviders(final Class... providerClasses) { Set> providersToEnable = ContainerUtil.newHashSet(providerClasses); for (InconsistentResourceBundleInspectionProvider inspectionProvider : myInspectionProviders.getValue()) { if (providersToEnable.contains(inspectionProvider.getClass())) { diff --git a/xml/dom-openapi/src/com/intellij/util/xml/highlighting/BasicDomElementsInspection.java b/xml/dom-openapi/src/com/intellij/util/xml/highlighting/BasicDomElementsInspection.java index d62ef2d37433..bc5e41fcd5ac 100644 --- a/xml/dom-openapi/src/com/intellij/util/xml/highlighting/BasicDomElementsInspection.java +++ b/xml/dom-openapi/src/com/intellij/util/xml/highlighting/BasicDomElementsInspection.java @@ -27,6 +27,7 @@ import org.jetbrains.annotations.NotNull; */ public abstract class BasicDomElementsInspection extends DomElementsInspection { + @SafeVarargs public BasicDomElementsInspection(@NotNull Class domClass, Class... additionalClasses) { super(domClass, additionalClasses); }