From 346f3fe6aa08c11c1cbbaf1e9c154ebc3a5f46b7 Mon Sep 17 00:00:00 2001 From: Max Medvedev Date: Fri, 29 Aug 2025 17:32:15 +0200 Subject: [PATCH] nullability GitOrigin-RevId: 7fca257306cc93461ffe872d9a53acf830c88235 --- .../completion/CompletionResultSet.java | 6 ++-- .../completion/CompletionService.java | 30 ++++++++++--------- .../completion/BaseCompletionService.java | 20 ++++++------- .../completion/CompletionData.java | 9 ++++-- .../completion/impl/CompletionSorterImpl.java | 5 ++-- .../completion/FilteringResultSet.kt | 2 +- .../completion/impl/CompletionServiceImpl.kt | 6 ++-- 7 files changed, 41 insertions(+), 37 deletions(-) diff --git a/platform/analysis-api/src/com/intellij/codeInsight/completion/CompletionResultSet.java b/platform/analysis-api/src/com/intellij/codeInsight/completion/CompletionResultSet.java index b9c9ac125913..86851c68c7de 100644 --- a/platform/analysis-api/src/com/intellij/codeInsight/completion/CompletionResultSet.java +++ b/platform/analysis-api/src/com/intellij/codeInsight/completion/CompletionResultSet.java @@ -31,12 +31,12 @@ public abstract class CompletionResultSet implements Consumer { private final java.util.function.Consumer consumer; protected final CompletionService myCompletionService = CompletionService.getCompletionService(); @ApiStatus.Internal - public final CompletionContributor contributor; + public final @Nullable CompletionContributor contributor; private boolean myStopped; protected CompletionResultSet(@NotNull PrefixMatcher prefixMatcher, - java.util.function.Consumer consumer, - CompletionContributor contributor) { + @NotNull java.util.function.Consumer consumer, + @Nullable CompletionContributor contributor) { this.prefixMatcher = prefixMatcher; this.consumer = consumer; this.contributor = contributor; diff --git a/platform/analysis-api/src/com/intellij/codeInsight/completion/CompletionService.java b/platform/analysis-api/src/com/intellij/codeInsight/completion/CompletionService.java index 89224e45f76f..040db1f9f8e9 100644 --- a/platform/analysis-api/src/com/intellij/codeInsight/completion/CompletionService.java +++ b/platform/analysis-api/src/com/intellij/codeInsight/completion/CompletionService.java @@ -51,14 +51,14 @@ public abstract class CompletionService { */ public void getVariantsFromContributors(@NotNull CompletionParameters parameters, @Nullable CompletionContributor from, - Consumer consumer) { + @NotNull Consumer consumer) { getVariantsFromContributors(parameters, from, createMatcher(suggestPrefix(parameters), false), consumer); } protected void getVariantsFromContributors(@NotNull CompletionParameters parameters, @Nullable CompletionContributor from, - PrefixMatcher matcher, - Consumer consumer) { + @NotNull PrefixMatcher matcher, + @NotNull Consumer consumer) { getVariantsFromContributors(parameters, from, matcher, consumer, null); } @@ -106,8 +106,8 @@ public abstract class CompletionService { protected void getVariantsFromContributors(@NotNull CompletionParameters parameters, @Nullable CompletionContributor from, - PrefixMatcher matcher, - Consumer consumer, + @NotNull PrefixMatcher matcher, + @NotNull Consumer consumer, @Nullable CompletionSorter customSorter) { List contributors = CompletionContributor.forParameters(parameters); boolean groupEnabledInApp = GroupedCompletionContributor.isGroupEnabledInApp(); @@ -137,17 +137,19 @@ public abstract class CompletionService { } @ApiStatus.Internal - public void getVariantsFromContributor(CompletionParameters params, CompletionContributor contributor, CompletionResultSet result) { + public void getVariantsFromContributor(@NotNull CompletionParameters params, + @NotNull CompletionContributor contributor, + @NotNull CompletionResultSet result) { contributor.fillCompletionVariants(params, result); } @ApiStatus.Internal - public abstract @NotNull CompletionResultSet createResultSet(CompletionParameters parameters, - Consumer consumer, + public abstract @NotNull CompletionResultSet createResultSet(@NotNull CompletionParameters parameters, + @NotNull Consumer consumer, @NotNull CompletionContributor contributor, - PrefixMatcher matcher); + @NotNull PrefixMatcher matcher); - protected abstract String suggestPrefix(CompletionParameters parameters); + protected abstract @NotNull String suggestPrefix(@NotNull CompletionParameters parameters); protected abstract @NotNull PrefixMatcher createMatcher(String prefix, boolean typoTolerant); @@ -199,17 +201,17 @@ public abstract class CompletionService { } } - public abstract CompletionSorter defaultSorter(CompletionParameters parameters, PrefixMatcher matcher); + public abstract @NotNull CompletionSorter defaultSorter(@NotNull CompletionParameters parameters, @NotNull PrefixMatcher matcher); - public abstract CompletionSorter emptySorter(); + public abstract @NotNull CompletionSorter emptySorter(); @ApiStatus.Internal - public static boolean isStartMatch(LookupElement element, WeighingContext context) { + public static boolean isStartMatch(@NotNull LookupElement element, @NotNull WeighingContext context) { return getItemMatcher(element, context).isStartMatch(element); } @ApiStatus.Internal - public static PrefixMatcher getItemMatcher(LookupElement element, WeighingContext context) { + public static PrefixMatcher getItemMatcher(@NotNull LookupElement element, @NotNull WeighingContext context) { PrefixMatcher itemMatcher = context.itemMatcher(element); String pattern = context.itemPattern(element); if (!pattern.equals(itemMatcher.getPrefix())) { diff --git a/platform/analysis-impl/src/com/intellij/codeInsight/completion/BaseCompletionService.java b/platform/analysis-impl/src/com/intellij/codeInsight/completion/BaseCompletionService.java index 08f72bdcb5c1..afd0d0417882 100644 --- a/platform/analysis-impl/src/com/intellij/codeInsight/completion/BaseCompletionService.java +++ b/platform/analysis-impl/src/com/intellij/codeInsight/completion/BaseCompletionService.java @@ -62,7 +62,7 @@ public class BaseCompletionService extends CompletionService { } @Override - protected String suggestPrefix(@NotNull CompletionParameters parameters) { + protected @NotNull String suggestPrefix(@NotNull CompletionParameters parameters) { final PsiElement position = parameters.getPosition(); final int offset = parameters.getOffset(); TextRange range = position.getTextRange(); @@ -82,10 +82,10 @@ public class BaseCompletionService extends CompletionService { @Override @ApiStatus.Internal - public @NotNull CompletionResultSet createResultSet(CompletionParameters parameters, - Consumer consumer, + public @NotNull CompletionResultSet createResultSet(@NotNull CompletionParameters parameters, + @NotNull Consumer consumer, @NotNull CompletionContributor contributor, - PrefixMatcher matcher) { + @NotNull PrefixMatcher matcher) { return new BaseCompletionResultSet(consumer, matcher, contributor, parameters, null, null); } @@ -100,10 +100,10 @@ public class BaseCompletionService extends CompletionService { protected final @Nullable BaseCompletionService.BaseCompletionResultSet myOriginal; private int itemCounter = 0; - protected BaseCompletionResultSet(java.util.function.Consumer consumer, - PrefixMatcher prefixMatcher, - CompletionContributor contributor, - CompletionParameters parameters, + protected BaseCompletionResultSet(@NotNull java.util.function.Consumer consumer, + @NotNull PrefixMatcher prefixMatcher, + @Nullable CompletionContributor contributor, + @NotNull CompletionParameters parameters, @Nullable CompletionSorter sorter, @Nullable BaseCompletionService.BaseCompletionResultSet original) { super(prefixMatcher, consumer, contributor); @@ -200,7 +200,7 @@ public class BaseCompletionService extends CompletionService { } @Override - public CompletionSorter defaultSorter(CompletionParameters parameters, PrefixMatcher matcher) { + public @NotNull CompletionSorter defaultSorter(@NotNull CompletionParameters parameters, @NotNull PrefixMatcher matcher) { CompletionLocation location = new CompletionLocation(parameters); CompletionSorterImpl sorter = emptySorter(); @@ -235,7 +235,7 @@ public class BaseCompletionService extends CompletionService { } @Override - public CompletionSorterImpl emptySorter() { + public @NotNull CompletionSorterImpl emptySorter() { return new CompletionSorterImpl(new ArrayList<>()); } } diff --git a/platform/analysis-impl/src/com/intellij/codeInsight/completion/CompletionData.java b/platform/analysis-impl/src/com/intellij/codeInsight/completion/CompletionData.java index 31649b80916a..1deff712979d 100644 --- a/platform/analysis-impl/src/com/intellij/codeInsight/completion/CompletionData.java +++ b/platform/analysis-impl/src/com/intellij/codeInsight/completion/CompletionData.java @@ -23,6 +23,7 @@ import com.intellij.psi.meta.PsiMetaData; import com.intellij.psi.util.PsiUtilCore; import com.intellij.util.containers.ContainerUtil; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.*; @@ -122,7 +123,9 @@ public class CompletionData { } }; - private static String findPrefixStatic(final PsiElement insertedElement, final int offsetInFile, ElementPattern prefixStartTrim) { + private static @NotNull String findPrefixStatic(@Nullable PsiElement insertedElement, + int offsetInFile, + @NotNull ElementPattern prefixStartTrim) { if(insertedElement == null) return ""; final Document document = insertedElement.getContainingFile().getViewProvider().getDocument(); @@ -143,11 +146,11 @@ public class CompletionData { * @deprecated Use {@link CompletionUtil} methods instead */ @Deprecated(forRemoval = true) - public static String findPrefixStatic(final PsiElement insertedElement, final int offsetInFile) { + public static @NotNull String findPrefixStatic(final PsiElement insertedElement, final int offsetInFile) { return findPrefixStatic(insertedElement, offsetInFile, NOT_JAVA_ID); } - private static String findPrefixDefault(final PsiElement insertedElement, final int offset, final @NotNull ElementPattern trimStart) { + private static @NotNull String findPrefixDefault(@NotNull PsiElement insertedElement, int offset, @NotNull ElementPattern trimStart) { String substr = insertedElement.getText().substring(0, offset - insertedElement.getTextRange().getStartOffset()); if (substr.isEmpty() || Character.isWhitespace(substr.charAt(substr.length() - 1))) return ""; diff --git a/platform/analysis-impl/src/com/intellij/codeInsight/completion/impl/CompletionSorterImpl.java b/platform/analysis-impl/src/com/intellij/codeInsight/completion/impl/CompletionSorterImpl.java index 783ae7f88d8b..ffdd74ae82ce 100644 --- a/platform/analysis-impl/src/com/intellij/codeInsight/completion/impl/CompletionSorterImpl.java +++ b/platform/analysis-impl/src/com/intellij/codeInsight/completion/impl/CompletionSorterImpl.java @@ -60,7 +60,7 @@ public class CompletionSorterImpl extends CompletionSorter { return enhanced(classifierFactory, myMembers.size()); } - public CompletionSorterImpl withClassifier(@NotNull String anchorId, + public @NotNull CompletionSorterImpl withClassifier(@NotNull String anchorId, boolean beforeAnchor, ClassifierFactory classifierFactory) { final int i = idIndex(anchorId); return enhanced(classifierFactory, beforeAnchor ? Math.max(0, i) : i + 1); @@ -70,13 +70,12 @@ public class CompletionSorterImpl extends CompletionSorter { return new CompletionSorterImpl(ContainerUtil.filter(myMembers, t -> !removeCondition.test(t))); } - private CompletionSorterImpl enhanced(ClassifierFactory classifierFactory, int index) { + private @NotNull CompletionSorterImpl enhanced(ClassifierFactory classifierFactory, int index) { final List> copy = new ArrayList<>(myMembers); copy.add(index, classifierFactory); return new CompletionSorterImpl(copy); } - private int idIndex(final String id) { return ContainerUtil.indexOf(myMembers, factory -> id.equals(factory.getId())); } diff --git a/platform/lang-impl/src/com/intellij/codeInsight/completion/FilteringResultSet.kt b/platform/lang-impl/src/com/intellij/codeInsight/completion/FilteringResultSet.kt index 574d61ca10bd..eccf10e96392 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/completion/FilteringResultSet.kt +++ b/platform/lang-impl/src/com/intellij/codeInsight/completion/FilteringResultSet.kt @@ -79,7 +79,7 @@ class FilteringResultSet( companion object { private fun CompletionService.getVariantsFromContributors( parameters: CompletionParameters, - from: CompletionContributor, + from: CompletionContributor?, matcher: PrefixMatcher, consumer: Consumer, customSorter: CompletionSorter?, diff --git a/platform/lang-impl/src/com/intellij/codeInsight/completion/impl/CompletionServiceImpl.kt b/platform/lang-impl/src/com/intellij/codeInsight/completion/impl/CompletionServiceImpl.kt index 2ef1ec992ad9..227c1a053a8b 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/completion/impl/CompletionServiceImpl.kt +++ b/platform/lang-impl/src/com/intellij/codeInsight/completion/impl/CompletionServiceImpl.kt @@ -136,10 +136,10 @@ open class CompletionServiceImpl : BaseCompletionService() { return if (isCurrentlyUnderLocalId) apiCompletionProcess else null } - private class CompletionResultSetImpl(consumer: java.util.function.Consumer?, - prefixMatcher: PrefixMatcher?, + private class CompletionResultSetImpl(consumer: java.util.function.Consumer, + prefixMatcher: PrefixMatcher, contributor: CompletionContributor?, - parameters: CompletionParameters?, + parameters: CompletionParameters, sorter: CompletionSorter?, original: CompletionResultSetImpl?) : BaseCompletionResultSet(consumer, prefixMatcher, contributor, parameters, sorter, original) {