Saved service implementations to constant for performance.
This commit is contained in:
@@ -21,6 +21,7 @@ import com.google.common.collect.HashBiMap;
|
|||||||
import com.google.common.collect.Maps;
|
import com.google.common.collect.Maps;
|
||||||
import com.google.common.collect.Sets;
|
import com.google.common.collect.Sets;
|
||||||
import com.intellij.util.Function;
|
import com.intellij.util.Function;
|
||||||
|
import com.intellij.util.containers.ContainerUtil;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.jetbrains.jet.lang.descriptors.*;
|
import org.jetbrains.jet.lang.descriptors.*;
|
||||||
@@ -31,6 +32,12 @@ import java.util.*;
|
|||||||
|
|
||||||
public class OverridingUtil {
|
public class OverridingUtil {
|
||||||
|
|
||||||
|
private static final List<ExternalOverridabilityCondition> EXTERNAL_CONDITIONS =
|
||||||
|
ContainerUtil.collect(ServiceLoader.load(
|
||||||
|
ExternalOverridabilityCondition.class,
|
||||||
|
ExternalOverridabilityCondition.class.getClassLoader()).iterator()
|
||||||
|
);
|
||||||
|
|
||||||
private OverridingUtil() {
|
private OverridingUtil() {
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -183,8 +190,7 @@ public class OverridingUtil {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (ExternalOverridabilityCondition externalCondition : ServiceLoader
|
for (ExternalOverridabilityCondition externalCondition : EXTERNAL_CONDITIONS) {
|
||||||
.load(ExternalOverridabilityCondition.class, ExternalOverridabilityCondition.class.getClassLoader())) {
|
|
||||||
if (!externalCondition.isOverridable(superDescriptor, subDescriptor)) {
|
if (!externalCondition.isOverridable(superDescriptor, subDescriptor)) {
|
||||||
return OverrideCompatibilityInfo.externalConditionFailed(externalCondition.getClass());
|
return OverrideCompatibilityInfo.externalConditionFailed(externalCondition.getClass());
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user