diff --git a/platform/lang-api/src/com/intellij/semantic/SemRegistrar.java b/platform/lang-api/src/com/intellij/semantic/SemRegistrar.java index 7d2c9c836222..922031a6a536 100644 --- a/platform/lang-api/src/com/intellij/semantic/SemRegistrar.java +++ b/platform/lang-api/src/com/intellij/semantic/SemRegistrar.java @@ -4,12 +4,13 @@ package com.intellij.semantic; import com.intellij.openapi.project.Project; import com.intellij.patterns.ElementPattern; import com.intellij.psi.PsiElement; -import com.intellij.util.NullableFunction; import com.intellij.util.ProcessingContext; +import org.jetbrains.annotations.Nullable; import java.util.Collection; import java.util.Collections; import java.util.function.BiFunction; +import java.util.function.Function; import static java.util.Collections.emptyList; @@ -20,10 +21,10 @@ public interface SemRegistrar { @SuppressWarnings("unchecked") default void registerSemElementProvider(SemKey key, ElementPattern place, - NullableFunction provider) { + Function provider) { registerSemProvider(key, (element, context) -> { if (place.accepts(element, context)) { - return Collections.singleton(provider.fun((V)element)); + return Collections.singleton(provider.apply((V)element)); } return emptyList(); }); @@ -32,10 +33,10 @@ public interface SemRegistrar { @SuppressWarnings("unchecked") default void registerRepeatableSemElementProvider(SemKey key, ElementPattern place, - NullableFunction> provider) { + Function> provider) { registerSemProvider(key, (element, context) -> { if (place.accepts(element, context)) { - return provider.fun((V)element); + return provider.apply((V)element); } return null; }); diff --git a/platform/lang-impl/src/com/intellij/semantic/SemServiceImpl.java b/platform/lang-impl/src/com/intellij/semantic/SemServiceImpl.java index 19fff1191113..2b02d8d2c715 100644 --- a/platform/lang-impl/src/com/intellij/semantic/SemServiceImpl.java +++ b/platform/lang-impl/src/com/intellij/semantic/SemServiceImpl.java @@ -43,7 +43,7 @@ public final class SemServiceImpl extends SemService implements Disposable { Result.create(createSemCache(), PsiModificationTracker.MODIFICATION_COUNT); private final Object lock = ObjectUtils.sentinel(getClass().getName()); - private volatile MultiMap, BiFunction>> producers; + private volatile MultiMap, BiFunction>> producers; private final Project project; private final CachedValuesManager myCVManager; @@ -67,8 +67,8 @@ public final class SemServiceImpl extends SemService implements Disposable { }); } - private MultiMap, BiFunction>> collectProducers() { - MultiMap, BiFunction>> map = new MultiMap<>(); + private MultiMap, BiFunction>> collectProducers() { + var map = new MultiMap, BiFunction>>(); SemRegistrar registrar = new SemRegistrar() { @Override @@ -76,7 +76,7 @@ public final class SemServiceImpl extends SemService implements Disposable { SemKey key, BiFunction> provider ) { - map.putValue(key, provider::apply); + map.putValue(key, provider); } }; @@ -114,7 +114,7 @@ public final class SemServiceImpl extends SemService implements Disposable { @SuppressWarnings("unchecked") private @NotNull List createSemElements(@NotNull SemKey key, @NotNull PsiElement psi, IntObjectMap> chunk) { - MultiMap, BiFunction>> currentProducers = ensureInitialized(); + var currentProducers = ensureInitialized(); RecursionGuard.StackStamp stamp = RecursionManager.markStack(); @@ -146,8 +146,8 @@ public final class SemServiceImpl extends SemService implements Disposable { return List.copyOf(result); } - private MultiMap, BiFunction>> ensureInitialized() { - MultiMap, BiFunction>> current = producers; + private MultiMap, BiFunction>> ensureInitialized() { + var current = producers; if (current != null) { return current; } @@ -158,20 +158,20 @@ public final class SemServiceImpl extends SemService implements Disposable { return current; } - MultiMap, BiFunction>> newProducers = collectProducers(); + var newProducers = collectProducers(); producers = newProducers; return newProducers; } } private static @NotNull List createSemElements( - MultiMap, BiFunction>> producers, + MultiMap, BiFunction>> producers, SemKey key, PsiElement psi, ProcessingContext processingContext ) { List result = null; - Collection>> functions = producers.get(key); + Collection>> functions = producers.get(key); if (!functions.isEmpty()) { - for (BiFunction> producer : functions) { + for (var producer : functions) { Collection elements = producer.apply(psi, processingContext); if (elements != null && !elements.isEmpty()) { if (result == null) result = new SmartList<>();