diff --git a/java/java-psi-api/src/com/intellij/psi/augment/PsiAugmentProvider.java b/java/java-psi-api/src/com/intellij/psi/augment/PsiAugmentProvider.java index a105f446f288..767207ab5714 100644 --- a/java/java-psi-api/src/com/intellij/psi/augment/PsiAugmentProvider.java +++ b/java/java-psi-api/src/com/intellij/psi/augment/PsiAugmentProvider.java @@ -18,9 +18,10 @@ package com.intellij.psi.augment; import com.intellij.openapi.extensions.ExtensionPointName; import com.intellij.openapi.extensions.Extensions; import com.intellij.psi.PsiElement; +import com.intellij.util.containers.ContainerUtil; import org.jetbrains.annotations.NotNull; -import java.util.ArrayList; +import java.util.Collections; import java.util.List; @@ -32,10 +33,9 @@ public abstract class PsiAugmentProvider { @NotNull public static List collectAugments(@NotNull final PsiElement element, @NotNull final Class type) { - final List augments = new ArrayList(); + List augments = Collections.emptyList(); for (PsiAugmentProvider provider : Extensions.getExtensions(EP_NAME)) { - final List list = provider.getAugments(element, type); - augments.addAll(list); + augments = ContainerUtil.addAll(augments, provider.getAugments(element, type)); } return augments; diff --git a/platform/util/src/com/intellij/util/containers/ContainerUtil.java b/platform/util/src/com/intellij/util/containers/ContainerUtil.java index 74784b2dbd4d..421e9d93e4ba 100644 --- a/platform/util/src/com/intellij/util/containers/ContainerUtil.java +++ b/platform/util/src/com/intellij/util/containers/ContainerUtil.java @@ -1189,6 +1189,24 @@ public class ContainerUtil extends ContainerUtilRt { return findInstance(Arrays.asList(array), aClass); } + @NotNull + public static List addAll(@NotNull final List list1, @NotNull final List list2) { + if (list1.isEmpty() && list2.isEmpty()) { + return Collections.emptyList(); + } + else if (list1.isEmpty()) { + //noinspection unchecked + return list2; + } + else if (list2.isEmpty()) { + //noinspection unchecked + return list1; + } + + list1.addAll(list2); + return list1; + } + @NotNull @Contract(pure=true) public static List concat(@NotNull V[] array, @NotNull Function> fun) {