Propagate @Unmodifiable to enable data-flow inspection to analyze more code

GitOrigin-RevId: 288358515ebebd840b45244cd3d5b251385ff1b8
This commit is contained in:
Alexey Kudravtsev
2024-12-03 15:50:19 +00:00
committed by intellij-monorepo-bot
parent c71d8dd467
commit 31185c6576
190 changed files with 375 additions and 24 deletions
@@ -34,6 +34,7 @@ import com.intellij.util.containers.ContainerUtil;
import org.jetbrains.annotations.Nls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.Unmodifiable;
import java.io.DataInput;
import java.io.IOException;
@@ -79,6 +80,7 @@ public class InspectionValidatorWrapper implements Validator {
return ourCompilationThreads.get().booleanValue();
}
@Unmodifiable
private static List<ProblemDescriptor> runInspectionOnFile(@NotNull PsiFile file, @NotNull LocalInspectionTool inspectionTool) {
InspectionManager inspectionManager = InspectionManager.getInstance(file.getProject());
GlobalInspectionContext context = inspectionManager.createNewGlobalContext();
@@ -17,6 +17,7 @@ import com.intellij.packaging.ui.PackagingElementPropertiesPanel;
import com.intellij.ui.DocumentAdapter;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.Unmodifiable;
import javax.swing.*;
import javax.swing.event.DocumentEvent;
@@ -144,6 +145,7 @@ public abstract class ElementWithManifestPropertiesPanel<E extends CompositeElem
}
}
@Unmodifiable
private List<String> getConfiguredClasspath() {
return StringUtil.split(myClasspathField.getText(), " ");
}
@@ -70,6 +70,7 @@ public final class ModuleCompilerUtil {
}));
}
@Unmodifiable
public static @NotNull List<Chunk<ModuleSourceSet>> computeSourceSetCycles(@NotNull ModulesProvider provider) {
Graph<ModuleSourceSet> graph = createModuleSourceDependenciesGraph(provider);
Collection<Chunk<ModuleSourceSet>> chunks = GraphAlgorithms.getInstance().computeStronglyConnectedComponents(graph);
@@ -40,6 +40,7 @@ import com.sun.jdi.request.ClassPrepareRequest;
import one.util.streamex.StreamEx;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.Unmodifiable;
import org.jetbrains.org.objectweb.asm.Opcodes;
import java.util.*;
@@ -429,6 +430,7 @@ public class PositionManagerImpl implements PositionManager, MultiRequestPositio
@Override
@NotNull
@Unmodifiable
public List<ReferenceType> getAllClasses(@NotNull final SourcePosition position) throws NoDataException {
Set<PsiClass> lineClasses = ReadAction.compute(() -> getLineClasses(position.getFile(), position.getLine()));
return ContainerUtil.flatMap(lineClasses, aClass -> getClassReferences(aClass, position));
@@ -10,6 +10,7 @@ import com.intellij.openapi.diagnostic.Logger;
import com.intellij.util.containers.ContainerUtil;
import com.sun.jdi.ThreadGroupReference;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.Unmodifiable;
import java.util.List;
@@ -59,10 +60,12 @@ public class ThreadGroupReferenceProxyImpl extends ObjectReferenceProxyImpl impl
getThreadGroupReference().resume();
}
@Unmodifiable
public List<ThreadReferenceProxyImpl> threads() {
return ContainerUtil.map(getThreadGroupReference().threads(), getVirtualMachineProxy()::getThreadReferenceProxy);
}
@Unmodifiable
public List<ThreadGroupReferenceProxyImpl> threadGroups() {
return ContainerUtil.map(getThreadGroupReference().threadGroups(), getVirtualMachineProxy()::getThreadGroupReferenceProxy);
}
@@ -254,6 +254,7 @@ public class VirtualMachineProxyImpl implements JdiTimer, VirtualMachineProxy {
/**
* @return a list of threadGroupProxies
*/
@Unmodifiable
public List<ThreadGroupReferenceProxyImpl> topLevelThreadGroups() {
return ContainerUtil.map(getVirtualMachine().topLevelThreadGroups(), this::getThreadGroupReferenceProxy);
}
@@ -8,6 +8,7 @@ import com.intellij.debugger.engine.evaluation.EvaluationContextImpl;
import com.intellij.openapi.util.registry.Registry;
import com.sun.jdi.ObjectReference;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Unmodifiable;
import java.util.HashMap;
import java.util.List;
@@ -29,6 +30,7 @@ public class MemoryAgentPathsToClosestGCRootsProvider implements ReferringObject
@NotNull
@Override
@Unmodifiable
public List<ReferringObject> getReferringObjects(@NotNull EvaluationContextImpl evaluationContext,
@NotNull ObjectReference value,
long limit) throws EvaluateException {
@@ -50,6 +50,7 @@ public class JavaDebuggerEditorsProvider extends XDebuggerEditorsProviderBase {
@NotNull
@Override
@Unmodifiable
public Collection<Language> getSupportedLanguages(@NotNull Project project, @Nullable XSourcePosition sourcePosition) {
if (sourcePosition != null) {
return getSupportedLanguages(getContextElement(sourcePosition.getFile(), sourcePosition.getOffset(), project));
@@ -23,6 +23,7 @@ import com.sun.jdi.ReferenceType;
import com.sun.jdi.request.ClassPrepareRequest;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.Unmodifiable;
import java.util.List;
import java.util.Set;
@@ -54,6 +55,7 @@ public interface PositionManager {
* @see com.intellij.debugger.engine.jdi.VirtualMachineProxy#classesByName
*/
@NotNull
@Unmodifiable
List<ReferenceType> getAllClasses(@NotNull SourcePosition classPosition) throws NoDataException;
/**
@@ -18,6 +18,7 @@ import com.sun.jdi.ReferenceType;
import com.sun.jdi.request.ClassPrepareRequest;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.Unmodifiable;
import java.util.List;
@@ -49,6 +50,7 @@ public class JavaScratchPositionManager extends PositionManagerImpl{
@NotNull
@Override
@Unmodifiable
public List<ReferenceType> getAllClasses(@NotNull SourcePosition position) throws NoDataException {
checkPosition(position);
return super.getAllClasses(position);
@@ -20,6 +20,7 @@ import com.intellij.openapi.roots.OrderRootType;
import com.intellij.openapi.roots.libraries.ui.RootDetector;
import com.intellij.openapi.vfs.VirtualFile;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Unmodifiable;
import java.util.Collection;
@@ -30,6 +31,7 @@ public final class LibraryJavaSourceRootDetector extends RootDetector {
@NotNull
@Override
@Unmodifiable
public Collection<VirtualFile> detectRoots(@NotNull VirtualFile rootCandidate,
@NotNull ProgressIndicator progressIndicator) {
return JavaVfsSourceRootDetectionUtil.suggestRoots(rootCandidate, progressIndicator);
@@ -430,6 +430,7 @@ public abstract class QuickFixFactory {
public abstract IntentionAction createNotIterableForEachLoopFix(@NotNull PsiExpression expression);
@NotNull
@Unmodifiable
public abstract List<IntentionAction> createAddAnnotationAttributeNameFixes(@NotNull PsiNameValuePair pair);
@NotNull
@@ -169,6 +169,7 @@ public interface RefMethod extends RefJavaElement, RefOverridable {
@NotNull
@Override
@Unmodifiable
default Collection<? extends RefOverridable> getDerivedReferences() {
return getDerivedMethods();
}
@@ -2,6 +2,7 @@
package com.intellij.codeInspection.reference;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Unmodifiable;
import java.util.Collection;
@@ -13,6 +14,7 @@ public interface RefOverridable extends RefJavaElement {
* @return the collection of derived references, e.g. RefMethod may contain at least RefMethod, RefFunctionalExpression as derived reference,
* RefFunctionalExpression contains nothing.
*/
@Unmodifiable
@NotNull Collection<? extends RefOverridable> getDerivedReferences();
/**
@@ -264,6 +264,7 @@ class ContractInferenceInterpreter {
}
@NotNull
@Unmodifiable
private List<PreContract> visitPolyadic(List<ValueConstraint[]> states, @NotNull LighterASTNode expr) {
if (firstChildOfType(myTree, expr, JavaTokenType.PLUS) != null) {
return asPreContracts(ContainerUtil.map(states, s -> new StandardMethodContract(s, returnNotNull())));
@@ -10,6 +10,7 @@ import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiResourceList;
import com.intellij.util.containers.FList;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Unmodifiable;
import java.util.ArrayList;
import java.util.List;
@@ -34,6 +35,7 @@ public class EnterFinallyTrap implements DfaControlTransferValue.Trap {
}
@Override
@Unmodifiable
public @NotNull List<DfaInstructionState> dispatch(@NotNull DfaMemoryState state,
@NotNull DataFlowInterpreter interpreter,
DfaControlTransferValue.@NotNull TransferTarget target,
@@ -68,6 +70,7 @@ public class EnterFinallyTrap implements DfaControlTransferValue.Trap {
}
@Override
@Unmodifiable
public @NotNull List<DfaInstructionState> dispatch(@NotNull DfaMemoryState state,
@NotNull DataFlowInterpreter interpreter,
DfaControlTransferValue.@NotNull TransferTarget target,
@@ -9,6 +9,7 @@ import com.intellij.codeInspection.dataFlow.value.DfaValue;
import com.intellij.psi.PsiElement;
import com.intellij.util.containers.FList;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Unmodifiable;
import java.util.List;
@@ -20,6 +21,7 @@ public class InsideFinallyTrap implements DfaControlTransferValue.Trap {
}
@Override
@Unmodifiable
public @NotNull List<DfaInstructionState> dispatch(@NotNull DfaMemoryState state,
@NotNull DataFlowInterpreter interpreter,
DfaControlTransferValue.@NotNull TransferTarget target,
@@ -6,10 +6,10 @@ import com.intellij.codeInspection.dataFlow.lang.ir.DfaInstructionState;
import com.intellij.codeInspection.dataFlow.memory.DfaMemoryState;
import com.intellij.codeInspection.dataFlow.value.DfaControlTransferValue;
import com.intellij.codeInspection.dataFlow.value.DfaValue;
import com.intellij.psi.PsiCodeBlock;
import com.intellij.psi.PsiElement;
import com.intellij.util.containers.FList;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Unmodifiable;
import java.util.List;
@@ -21,6 +21,7 @@ public class InsideInlinedBlockTrap implements DfaControlTransferValue.Trap {
}
@Override
@Unmodifiable
public @NotNull List<DfaInstructionState> dispatch(@NotNull DfaMemoryState state,
@NotNull DataFlowInterpreter interpreter,
DfaControlTransferValue.@NotNull TransferTarget target,
@@ -9,6 +9,7 @@ import com.intellij.codeInspection.dataFlow.value.DfaControlTransferValue;
import com.intellij.psi.PsiElement;
import com.intellij.util.containers.FList;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Unmodifiable;
import java.util.List;
@@ -22,6 +23,7 @@ public class TryCatchAllTrap implements DfaControlTransferValue.Trap {
}
@Override
@Unmodifiable
public @NotNull List<DfaInstructionState> dispatch(@NotNull DfaMemoryState state,
@NotNull DataFlowInterpreter interpreter,
DfaControlTransferValue.@NotNull TransferTarget target,
@@ -34,6 +34,7 @@ import one.util.streamex.EntryStream;
import one.util.streamex.StreamEx;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.Unmodifiable;
import java.util.*;
@@ -187,6 +188,7 @@ public final class SuspiciousInvocationHandlerImplementationInspection extends A
}
@Override
@Unmodifiable
protected @NotNull List<DfaInstructionState> createInitialInstructionStates(@NotNull PsiElement psiBlock,
@NotNull Collection<? extends DfaMemoryState> memStates,
@NotNull ControlFlow flow) {
@@ -34,6 +34,7 @@ import com.siyeh.ig.psiutils.CommentTracker;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.Unmodifiable;
import java.util.ArrayList;
import java.util.Collection;
@@ -91,6 +92,7 @@ public final class VarargParameterInspection extends BaseInspection {
}
@NotNull
@Unmodifiable
private static List<PsiElement> getReferences(@NotNull PsiMethod method) {
if (IntentionPreviewUtils.isIntentionPreviewActive()) {
return SyntaxTraverser.psiTraverser(method.getContainingFile())
@@ -160,6 +160,7 @@ public final class MakeInferredAnnotationExplicit extends BaseIntentionAction {
() -> doMakeAnnotationExplicit(project, owner, annotations)), file);
}
@Unmodifiable
private @NotNull List<PsiAnnotation> getAnnotationsToAdd(@NotNull PsiModifierListOwner owner) {
List<PsiAnnotation> allAnnotations = StreamEx.of(InferredAnnotationsManager.getInstance(owner.getProject()).findInferredAnnotations(owner))
.remove(DefaultInferredAnnotationProvider::isExperimentalInferredAnnotation)
@@ -567,6 +567,7 @@ public final class JavaCompletionUtil {
return false;
}
@Unmodifiable
static @NotNull Iterable<? extends LookupElement> createLookupElements(@NotNull CompletionElement completionElement, @NotNull PsiJavaReference reference) {
Object completion = completionElement.getElement();
assert !(completion instanceof LookupElement);
@@ -162,6 +162,7 @@ public final class JavaConstructorCallElement extends LookupElementDecorator<Loo
return aClass;
}
@Unmodifiable
static List<? extends LookupElement> wrap(@NotNull JavaPsiClassReferenceElement classItem, @NotNull PsiElement position) {
PsiClass psiClass = classItem.getObject();
return wrap(classItem, psiClass, position, () -> JavaPsiFacade.getElementFactory(psiClass.getProject()).createType(psiClass, PsiSubstitutor.EMPTY));
@@ -32,6 +32,7 @@ import static com.intellij.psi.CommonClassNames.*;
final class StreamConversion {
@Unmodifiable
static List<LookupElement> addToStreamConversion(PsiReferenceExpression ref, CompletionParameters parameters) {
PsiExpression qualifier = ref.getQualifierExpression();
if (qualifier == null) return Collections.emptyList();
@@ -28,10 +28,7 @@ import com.intellij.psi.util.PsiUtilCore;
import com.intellij.util.containers.ContainerUtil;
import com.siyeh.ig.psiutils.SealedUtils;
import it.unimi.dsi.fastutil.objects.ReferenceOpenHashSet;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.Contract;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.*;
import java.util.*;
@@ -351,6 +348,7 @@ public final class JavaCompletionProcessor implements PsiScopeProcessor, Element
}
}
@Unmodifiable
public Iterable<CompletionElement> getResults() {
if (mySecondRateResults.size() == myResults.size()) {
return mySecondRateResults;
@@ -15,6 +15,7 @@ import com.intellij.psi.util.PsiUtil;
import com.intellij.util.containers.ContainerUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.Unmodifiable;
import java.util.*;
@@ -129,6 +130,7 @@ public class ImportClassFix extends ImportClassFixBase<PsiJavaCodeReferenceEleme
}
@Override
@Unmodifiable
protected @NotNull Collection<PsiClass> filterByContext(@NotNull Collection<PsiClass> candidates, @NotNull PsiJavaCodeReferenceElement referenceElement) {
if (referenceElement instanceof PsiReferenceExpression) {
return Collections.emptyList();
@@ -16,6 +16,7 @@ import com.intellij.psi.*;
import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.util.IncorrectOperationException;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Unmodifiable;
import java.util.List;
@@ -115,6 +116,7 @@ public class GenerateEqualsHandler extends GenerateMembersHandlerBase {
}
@Override
@Unmodifiable
protected @NotNull List<? extends GenerationInfo> generateMemberPrototypes(PsiClass aClass, ClassMember[] originalMembers) {
final boolean useInstanceofToCheckParameterType = CodeInsightSettings.getInstance().USE_INSTANCEOF_ON_EQUALS_PARAMETER;
final boolean useAccessors = CodeInsightSettings.getInstance().USE_ACCESSORS_IN_EQUALS_HASHCODE;
@@ -269,6 +269,7 @@ public final class OverrideImplementUtil extends OverrideImplementExploreUtil {
}
}
@Unmodifiable
public static @NotNull List<PsiGenerationInfo<PsiMethod>> overrideOrImplementMethods(@NotNull PsiClass aClass,
@NotNull Collection<? extends PsiMethodMember> candidates,
boolean toCopyJavaDoc,
@@ -779,6 +779,7 @@ public final class QuickFixFactoryImpl extends QuickFixFactory {
}
@Override
@Unmodifiable
public @NotNull List<IntentionAction> createAddAnnotationAttributeNameFixes(@NotNull PsiNameValuePair pair) {
return AddAnnotationAttributeNameFix.createFixes(pair);
}
@@ -31,6 +31,7 @@ import com.intellij.util.Processor;
import com.intellij.util.containers.ContainerUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.Unmodifiable;
import java.util.*;
@@ -217,6 +218,7 @@ public class JavaFindUsagesHandler extends FindUsagesHandler {
}
@Override
@Unmodifiable
public @NotNull Collection<PsiReference> findReferencesToHighlight(final @NotNull PsiElement target, final @NotNull SearchScope searchScope) {
if (target instanceof PsiMethod) {
Set<PsiMethod> superTargets = new LinkedHashSet<>();
@@ -19,6 +19,7 @@ import com.intellij.psi.util.PsiUtil;
import com.intellij.util.LocalTimeCounter;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.Unmodifiable;
import java.lang.reflect.Field;
import java.util.Collections;
@@ -491,6 +492,7 @@ public final class JavaLanguageCodeStyleSettingsProvider extends LanguageCodeSty
}
@Override
@Unmodifiable
protected List<String> parseString(@NotNull String string) {
return CodeStylePropertiesUtil.getValueList(string);
}
@@ -14,6 +14,7 @@ import com.intellij.psi.PsiManager;
import com.intellij.psi.PsiPackage;
import com.intellij.util.ArrayUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Unmodifiable;
import java.util.*;
@@ -41,6 +42,7 @@ public class PackageViewProjectNode extends AbstractProjectNode {
}
@Override
@Unmodifiable
public @NotNull Collection<AbstractTreeNode<?>> getChildren() {
if (getSettings().isShowModules()) {
return modulesAndGroups(moduleDescriptions(myProject));
@@ -40,6 +40,7 @@ import com.intellij.util.containers.ContainerUtil;
import com.intellij.util.containers.SmartHashSet;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.Unmodifiable;
import javax.swing.*;
import java.io.*;
@@ -329,6 +330,7 @@ public final class JavadocGeneratorRunProfile implements ModuleRunProfile {
return argsFile;
}
@Unmodifiable
private @NotNull List<VirtualFile> findSourceRoots(@NotNull Set<Module> modules) {
OrderEnumerator sourcePathEnumerator = ProjectRootManager.getInstance(myProject).orderEntries(modules);
if (!myConfiguration.OPTION_INCLUDE_LIBS) {
@@ -340,6 +342,7 @@ public final class JavadocGeneratorRunProfile implements ModuleRunProfile {
return sourcePathEnumerator.getSourcePathsList().getRootDirs();
}
@Unmodifiable
private @NotNull List<VirtualFile> findClassRoots(@NotNull Set<Module> modules, @NotNull Sdk jdk) {
OrderEnumerator classPathEnumerator = ProjectRootManager.getInstance(myProject).orderEntries(modules).withoutModuleSourceEntries();
if (jdk.getSdkType() instanceof JavaSdk) {
@@ -5,11 +5,13 @@ import com.intellij.codeInsight.daemon.impl.focusMode.FocusModeProvider;
import com.intellij.openapi.util.Segment;
import com.intellij.psi.*;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Unmodifiable;
import java.util.List;
public final class JavaFocusModeProvider implements FocusModeProvider {
@Override
@Unmodifiable
public @NotNull List<? extends Segment> calcFocusZones(@NotNull PsiFile file) {
return SyntaxTraverser.psiTraverser(file)
.postOrderDfsTraversal()
@@ -46,6 +46,7 @@ import org.jdom.Element;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.Unmodifiable;
import org.jetbrains.concurrency.Promise;
import org.jetbrains.jps.model.java.JdkVersionDetector;
import org.jetbrains.jps.model.java.impl.JavaSdkUtil;
@@ -493,6 +494,7 @@ public final class JavaSdkImpl extends JavaSdk {
* Tries to load the list of modules in the JDK from the 'release' file. Returns null if the 'release' file is not there
* or doesn't contain the expected information.
*/
@Unmodifiable
private static @Nullable List<String> readModulesFromReleaseFile(@NotNull Path jrtBaseDir) {
try (InputStream stream = Files.newInputStream(jrtBaseDir.resolve("release"))) {
Properties p = new Properties();
@@ -19,6 +19,7 @@ import com.intellij.extapi.psi.ASTWrapperPsiElement;
import com.intellij.lang.ASTNode;
import com.intellij.spi.parsing.SPIElementTypes;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Unmodifiable;
import java.util.List;
@@ -27,6 +28,7 @@ public class SPIClassProvidersElementList extends ASTWrapperPsiElement {
super(node);
}
@Unmodifiable
public List<SPIClassProviderReferenceElement> getElements() {
return findChildrenByType(SPIElementTypes.PROVIDER);
}
@@ -8,6 +8,7 @@ import com.siyeh.ig.psiutils.SwitchUtils;
import one.util.streamex.StreamEx;
import org.jetbrains.annotations.Nls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Unmodifiable;
import java.util.List;
import java.util.Set;
@@ -29,7 +30,7 @@ public final class CreateEnumMissingSwitchBranchesFix extends CreateMissingSwitc
}
@Override
protected @NotNull Function<PsiSwitchLabelStatementBase, List<String>> getCaseExtractor() {
protected @NotNull Function<PsiSwitchLabelStatementBase, @Unmodifiable List<String>> getCaseExtractor() {
return label -> ContainerUtil.map(SwitchUtils.findEnumConstants(label), PsiEnumConstant::getName);
}
}
@@ -10,6 +10,7 @@ import com.siyeh.ig.psiutils.SwitchUtils;
import org.jetbrains.annotations.Nls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.Unmodifiable;
import java.util.*;
import java.util.function.Function;
@@ -72,7 +73,7 @@ public final class CreateMissingBooleanPrimitiveBranchesFix extends CreateMissin
}
@Override
protected @NotNull Function<PsiSwitchLabelStatementBase, List<String>> getCaseExtractor() {
protected @NotNull Function<PsiSwitchLabelStatementBase, @Unmodifiable List<String>> getCaseExtractor() {
return label -> {
PsiCaseLabelElementList list = label.getCaseLabelElementList();
if (list == null) return Collections.emptyList();
@@ -14,6 +14,7 @@ import com.siyeh.ig.psiutils.VariableNameGenerator;
import org.jetbrains.annotations.Nls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.Unmodifiable;
import java.util.*;
import java.util.function.Function;
@@ -48,7 +49,7 @@ public final class CreateMissingDeconstructionRecordClassBranchesFix extends Cre
}
@Override
protected @NotNull Function<PsiSwitchLabelStatementBase, List<String>> getCaseExtractor() {
protected @NotNull Function<PsiSwitchLabelStatementBase, @Unmodifiable List<String>> getCaseExtractor() {
return label -> {
PsiCaseLabelElementList list = label.getCaseLabelElementList();
if (list == null) return Collections.emptyList();
@@ -50,5 +50,5 @@ public abstract class CreateMissingSwitchBranchesFix extends BaseSwitchFix {
@Unmodifiable
protected abstract @NotNull List<String> getAllNames(@NotNull PsiClass aClass, @NotNull PsiSwitchBlock switchBlock);
protected abstract @NotNull Function<PsiSwitchLabelStatementBase, List<String>> getCaseExtractor();
protected abstract @NotNull Function<PsiSwitchLabelStatementBase, @Unmodifiable List<String>> getCaseExtractor();
}
@@ -88,7 +88,7 @@ public class CreateSealedClassMissingSwitchBranchesFix extends CreateMissingSwit
}
@Override
protected @NotNull Function<PsiSwitchLabelStatementBase, List<String>> getCaseExtractor() {
protected @NotNull Function<PsiSwitchLabelStatementBase, @Unmodifiable List<String>> getCaseExtractor() {
return label -> {
PsiCaseLabelElementList list = label.getCaseLabelElementList();
if (list == null) return Collections.emptyList();
@@ -9,12 +9,14 @@ import com.intellij.psi.PsiLiteralExpression;
import com.intellij.psi.SyntaxTraverser;
import com.intellij.util.Function;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Unmodifiable;
import java.util.Collection;
import java.util.List;
public final class StringFormatUsageSearcher implements UsageSearcher {
@Override
@Unmodifiable
public @NotNull Collection<? extends Usage> collectImmediateResults(@NotNull UsageSearchParameters parameters) {
SearchTarget target = parameters.getTarget();
if (target instanceof StringFormatSymbolReferenceProvider.JavaFormatArgumentSymbol symbol) {
@@ -26,6 +28,7 @@ public final class StringFormatUsageSearcher implements UsageSearcher {
return List.of();
}
@Unmodifiable
private static @NotNull List<Usage> getFormatUsages(@NotNull Symbol symbol,
@NotNull PsiExpression expression,
@NotNull PsiExpression arg,
@@ -35,6 +35,7 @@ import org.jdom.Element;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.Unmodifiable;
import java.util.*;
@@ -242,6 +243,7 @@ public final class IfCanBeSwitchInspection extends BaseInspection {
}
}
@Unmodifiable
private static @NotNull List<PsiTypeCastExpression> getRelatesCastExpressions(PsiElement expression, PsiInstanceOfExpression targetInstanceOf) {
return SyntaxTraverser.psiTraverser(expression)
.filter(PsiTypeCastExpression.class)
@@ -54,10 +54,11 @@ public final class CreateSwitchBranchesUtil {
* thus some kind of normalization could be necessary.
* @return a list of created branches
*/
@Unmodifiable
public static List<PsiSwitchLabelStatementBase> createMissingBranches(@NotNull PsiSwitchBlock switchBlock,
@NotNull List<String> allNames,
@NotNull @Unmodifiable Collection<String> missingNames,
@NotNull Function<? super PsiSwitchLabelStatementBase, ? extends List<String>> caseExtractor) {
@NotNull Function<? super PsiSwitchLabelStatementBase, ? extends @Unmodifiable List<String>> caseExtractor) {
final JavaCodeStyleManager javaCodeStyleManager = JavaCodeStyleManager.getInstance(switchBlock.getProject());
boolean isRuleBasedFormat = SwitchUtils.isRuleFormatSwitch(switchBlock);
final PsiCodeBlock body = switchBlock.getBody();
@@ -2,6 +2,7 @@
package com.intellij.lang.jvm.annotation;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Unmodifiable;
import java.util.List;
@@ -11,5 +12,6 @@ import java.util.List;
public interface JvmAnnotationArrayValue extends JvmAnnotationAttributeValue {
@NotNull
@Unmodifiable
List<JvmAnnotationAttributeValue> getValues();
}
@@ -10,6 +10,7 @@ import com.intellij.psi.util.PsiUtil;
import org.jetbrains.annotations.Contract;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.Unmodifiable;
import static com.intellij.util.containers.ContainerUtil.mapNotNull;
@@ -21,6 +22,7 @@ public final class JvmUtil {
private JvmUtil() {}
@NotNull
@Unmodifiable
static Iterable<JvmClass> resolveClasses(JvmReferenceType @NotNull [] types) {
return mapNotNull(types, JvmUtil::resolveClass);
}
@@ -7,6 +7,7 @@ import com.intellij.lang.jvm.JvmEnumField;
import com.intellij.lang.jvm.annotation.*;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.Unmodifiable;
import java.util.List;
@@ -99,6 +100,7 @@ class PsiAnnotationArrayValue extends PsiAnnotationAttributeValue<PsiArrayInitia
@NotNull
@Override
@Unmodifiable
public List<JvmAnnotationAttributeValue> getValues() {
return map(myElement.getInitializers(), PsiJvmConversionHelper::getAnnotationAttributeValue);
}
@@ -13,6 +13,7 @@ import com.intellij.util.IncorrectOperationException;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.Unmodifiable;
import java.util.Collection;
import java.util.List;
@@ -273,6 +274,7 @@ public interface PsiClass
* @return the found methods and their substitutors, or an empty list if no methods are found.
*/
@NotNull
@Unmodifiable
List<Pair<PsiMethod, PsiSubstitutor>> findMethodsAndTheirSubstitutorsByName(@NonNls @NotNull String name, boolean checkBases);
/**
@@ -282,6 +284,7 @@ public interface PsiClass
* @return the list of methods and their substitutors
*/
@NotNull
@Unmodifiable
List<Pair<PsiMethod, PsiSubstitutor>> getAllMethodsAndTheirSubstitutors();
/**
@@ -167,6 +167,7 @@ public class PropertyUtilBase {
}
@NotNull
@Unmodifiable
public static List<PsiMethod> getAccessors(@NotNull final PsiClass psiClass, final String propertyName) {
return getAccessors(psiClass, propertyName, false, ONLY_PUBLIC);
}
@@ -159,6 +159,7 @@ public final class PsiClassImplUtil {
: ContainerUtil.filter(type.getMembers(aClass), member -> name.equals(member.getName()));
}
@Unmodifiable
public static @NotNull <T extends PsiMember> List<Pair<T, PsiSubstitutor>> getAllWithSubstitutorsByMap(@NotNull PsiClass aClass, @NotNull MemberType type) {
return withSubstitutors(aClass, getMap(aClass).getAllMembers(type, null));
}
@@ -923,6 +924,7 @@ public final class PsiClassImplUtil {
return resolved;
}
@Unmodifiable
public static @NotNull List<Pair<PsiMethod, PsiSubstitutor>> findMethodsAndTheirSubstitutorsByName(@NotNull PsiClass psiClass,
@NotNull String name,
boolean checkBases) {
@@ -31,6 +31,7 @@ import com.intellij.util.containers.ContainerUtil;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.Unmodifiable;
import javax.swing.*;
import java.util.*;
@@ -269,11 +270,13 @@ public class ClsClassImpl extends ClsMemberImpl<PsiClassStub<?>> implements PsiE
}
@Override
@Unmodifiable
public @NotNull List<Pair<PsiMethod, PsiSubstitutor>> findMethodsAndTheirSubstitutorsByName(@NotNull String name, boolean checkBases) {
return PsiClassImplUtil.findMethodsAndTheirSubstitutorsByName(this, name, checkBases);
}
@Override
@Unmodifiable
public @NotNull List<Pair<PsiMethod, PsiSubstitutor>> getAllMethodsAndTheirSubstitutors() {
return PsiClassImplUtil.getAllWithSubstitutorsByMap(this, PsiClassImplUtil.MemberType.METHOD);
}
@@ -21,6 +21,7 @@ import com.intellij.util.IncorrectOperationException;
import com.intellij.util.containers.ContainerUtil;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Unmodifiable;
import javax.swing.*;
import java.util.Collection;
@@ -85,11 +86,13 @@ public class ClsTypeParameterImpl extends ClsRepositoryPsiElement<PsiTypeParamet
}
@Override
@Unmodifiable
public @NotNull List<Pair<PsiMethod, PsiSubstitutor>> findMethodsAndTheirSubstitutorsByName(@NotNull String name, boolean checkBases) {
return PsiClassImplUtil.findMethodsAndTheirSubstitutorsByName(this, name, checkBases);
}
@Override
@Unmodifiable
public @NotNull List<Pair<PsiMethod, PsiSubstitutor>> getAllMethodsAndTheirSubstitutors() {
return PsiClassImplUtil.getAllWithSubstitutorsByMap(this, PsiClassImplUtil.MemberType.METHOD);
}
@@ -14,6 +14,7 @@ import com.intellij.util.IncorrectOperationException;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.Unmodifiable;
import java.util.Collection;
import java.util.List;
@@ -206,11 +207,13 @@ public abstract class AbstractLightClass extends LightElement implements PsiClas
}
@Override
@Unmodifiable
public @NotNull List<Pair<PsiMethod, PsiSubstitutor>> findMethodsAndTheirSubstitutorsByName(@NonNls @NotNull String name, boolean checkBases) {
return PsiClassImplUtil.findMethodsAndTheirSubstitutorsByName(this, name, checkBases);
}
@Override
@Unmodifiable
public @NotNull List<Pair<PsiMethod, PsiSubstitutor>> getAllMethodsAndTheirSubstitutors() {
return PsiClassImplUtil.getAllWithSubstitutorsByMap(this, PsiClassImplUtil.MemberType.METHOD);
}
@@ -16,6 +16,7 @@ import com.intellij.util.IncorrectOperationException;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.Unmodifiable;
import java.util.Collection;
import java.util.List;
@@ -152,11 +153,13 @@ public abstract class LightPsiClassBase extends LightElement implements PsiClass
}
@Override
@Unmodifiable
public @NotNull List<Pair<PsiMethod, PsiSubstitutor>> findMethodsAndTheirSubstitutorsByName(@NonNls @NotNull String name, boolean checkBases) {
return PsiClassImplUtil.findMethodsAndTheirSubstitutorsByName(this, name, checkBases);
}
@Override
@Unmodifiable
public @NotNull List<Pair<PsiMethod, PsiSubstitutor>> getAllMethodsAndTheirSubstitutors() {
return PsiClassImplUtil.getAllWithSubstitutorsByMap(this, PsiClassImplUtil.MemberType.METHOD);
}
@@ -29,6 +29,7 @@ import com.intellij.util.IncorrectOperationException;
import com.intellij.util.containers.ContainerUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.Unmodifiable;
import javax.swing.*;
import java.util.*;
@@ -361,11 +362,13 @@ public class PsiClassImpl extends JavaStubPsiElement<PsiClassStub<?>> implements
}
@Override
@Unmodifiable
public @NotNull List<Pair<PsiMethod, PsiSubstitutor>> findMethodsAndTheirSubstitutorsByName(@NotNull String name, boolean checkBases) {
return PsiClassImplUtil.findMethodsAndTheirSubstitutorsByName(this, name, checkBases);
}
@Override
@Unmodifiable
public @NotNull List<Pair<PsiMethod, PsiSubstitutor>> getAllMethodsAndTheirSubstitutors() {
return PsiClassImplUtil.getAllWithSubstitutorsByMap(this, PsiClassImplUtil.MemberType.METHOD);
}
@@ -22,6 +22,7 @@ import com.intellij.psi.util.PsiUtil;
import com.intellij.util.IncorrectOperationException;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.Unmodifiable;
import javax.swing.*;
import java.util.Arrays;
@@ -172,11 +173,13 @@ public class PsiImplicitClassImpl extends JavaStubPsiElement<PsiClassStub<?>> im
}
@Override
@Unmodifiable
public @NotNull List<Pair<PsiMethod, PsiSubstitutor>> findMethodsAndTheirSubstitutorsByName(@NotNull String name, boolean checkBases) {
return PsiClassImplUtil.findMethodsAndTheirSubstitutorsByName(this, name, checkBases);
}
@Override
@Unmodifiable
public @NotNull List<Pair<PsiMethod, PsiSubstitutor>> getAllMethodsAndTheirSubstitutors() {
return PsiClassImplUtil.getAllWithSubstitutorsByMap(this, PsiClassImplUtil.MemberType.METHOD);
}
@@ -16,6 +16,7 @@ import com.intellij.psi.util.PsiUtil;
import com.intellij.util.IncorrectOperationException;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.Unmodifiable;
import java.util.Collection;
import java.util.List;
@@ -179,11 +180,13 @@ public class PsiJShellRootClassImpl extends ASTWrapperPsiElement implements PsiJ
}
@Override
@Unmodifiable
public @NotNull List<Pair<PsiMethod, PsiSubstitutor>> findMethodsAndTheirSubstitutorsByName(@NotNull String name, boolean checkBases) {
return PsiClassImplUtil.findMethodsAndTheirSubstitutorsByName(this, name, checkBases);
}
@Override
@Unmodifiable
public @NotNull List<Pair<PsiMethod, PsiSubstitutor>> getAllMethodsAndTheirSubstitutors() {
return PsiClassImplUtil.getAllWithSubstitutorsByMap(this, PsiClassImplUtil.MemberType.METHOD);
}
@@ -20,6 +20,7 @@ import com.intellij.util.SmartList;
import com.intellij.util.containers.ContainerUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.Unmodifiable;
import java.util.ArrayList;
import java.util.Collection;
@@ -67,6 +68,7 @@ public class PsiCatchSectionImpl extends CompositePsiElement implements PsiCatch
);
}
@Unmodifiable
private List<PsiType> computePreciseCatchTypes(final @Nullable PsiParameter parameter) {
if (parameter == null) {
return ContainerUtil.emptyList();
@@ -21,6 +21,7 @@ import com.intellij.psi.util.PsiUtil;
import com.intellij.util.IncorrectOperationException;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Unmodifiable;
import javax.swing.*;
import java.util.Collection;
@@ -86,11 +87,13 @@ public class PsiTypeParameterImpl extends JavaStubPsiElement<PsiTypeParameterStu
}
@Override
@Unmodifiable
public @NotNull List<Pair<PsiMethod, PsiSubstitutor>> findMethodsAndTheirSubstitutorsByName(@NotNull String name, boolean checkBases) {
return PsiClassImplUtil.findMethodsAndTheirSubstitutorsByName(this, name, checkBases);
}
@Override
@Unmodifiable
public @NotNull List<Pair<PsiMethod, PsiSubstitutor>> getAllMethodsAndTheirSubstitutors() {
return PsiClassImplUtil.getAllWithSubstitutorsByMap(this, PsiClassImplUtil.MemberType.METHOD);
}
@@ -18,6 +18,7 @@ import com.intellij.psi.PsiMember;
import com.intellij.psi.SyntaxTraverser;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Unmodifiable;
import java.util.Collections;
import java.util.List;
@@ -28,6 +29,7 @@ public class JavaLambdaNodeProvider implements FileStructureNodeProvider<JavaLam
@NotNull
@Override
@Unmodifiable
public List<JavaLambdaTreeElement> provideNodes(@NotNull TreeElement node) {
if (!(node instanceof PsiTreeElementBase)) {
return Collections.emptyList();
@@ -27,6 +27,7 @@ package org.jetbrains.lang.manifest.psi;
import com.intellij.psi.PsiNamedElement;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.Unmodifiable;
import java.util.List;
@@ -51,5 +52,6 @@ public interface Header extends PsiNamedElement {
* Returns a list of all header value elements.
*/
@NotNull
@Unmodifiable
List<HeaderValue> getHeaderValues();
}
@@ -27,6 +27,7 @@ package org.jetbrains.lang.manifest.psi;
import com.intellij.psi.PsiFile;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.Unmodifiable;
import java.util.List;
@@ -38,6 +39,7 @@ public interface ManifestFile extends PsiFile {
* Returns all sections of the file.
*/
@NotNull
@Unmodifiable
List<Section> getSections();
/**
@@ -50,6 +52,7 @@ public interface ManifestFile extends PsiFile {
* Returns all headers from the main section in this file.
*/
@NotNull
@Unmodifiable
List<Header> getHeaders();
/**
@@ -32,6 +32,7 @@ import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.util.IncorrectOperationException;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.Unmodifiable;
import org.jetbrains.lang.manifest.psi.*;
import java.util.List;
@@ -72,6 +73,7 @@ public class HeaderImpl extends ASTWrapperPsiElement implements Header {
@NotNull
@Override
@Unmodifiable
public List<HeaderValue> getHeaderValues() {
return PsiTreeUtil.getChildrenOfTypeAsList(this, HeaderValue.class);
}
@@ -30,6 +30,7 @@ import com.intellij.psi.FileViewProvider;
import com.intellij.psi.util.PsiTreeUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.Unmodifiable;
import org.jetbrains.lang.manifest.ManifestFileType;
import org.jetbrains.lang.manifest.ManifestLanguage;
import org.jetbrains.lang.manifest.psi.Header;
@@ -54,6 +55,7 @@ public class ManifestFileImpl extends PsiFileBase implements ManifestFile {
@NotNull
@Override
@Unmodifiable
public List<Section> getSections() {
return PsiTreeUtil.getChildrenOfTypeAsList(this, Section.class);
}
@@ -66,6 +68,7 @@ public class ManifestFileImpl extends PsiFileBase implements ManifestFile {
@NotNull
@Override
@Unmodifiable
public List<Header> getHeaders() {
return PsiTreeUtil.getChildrenOfTypeAsList(getFirstChild(), Header.class);
}
@@ -214,6 +214,7 @@ public abstract class DaemonAnalyzerTestCase extends JavaCodeInsightTestCase {
}
@NotNull
@Unmodifiable
protected Collection<HighlightInfo> doDoTest(boolean checkWarnings, boolean checkInfos) {
return doDoTest(checkWarnings, checkInfos, false);
}
@@ -282,16 +283,19 @@ public abstract class DaemonAnalyzerTestCase extends JavaCodeInsightTestCase {
}
@NotNull
@Unmodifiable
protected final List<HighlightInfo> highlightErrors() {
return doHighlighting(HighlightSeverity.ERROR);
}
@NotNull
@Unmodifiable
protected final List<HighlightInfo> doHighlighting(@NotNull HighlightSeverity minSeverity) {
return filter(doHighlighting(), minSeverity);
}
@NotNull
@Unmodifiable
protected final List<HighlightInfo> doHighlighting() {
PsiDocumentManager.getInstance(myProject).commitAllDocuments();
@@ -23,6 +23,7 @@ import it.unimi.dsi.fastutil.ints.IntList;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.Unmodifiable;
import java.util.Collection;
import java.util.List;
@@ -120,11 +121,13 @@ public abstract class LightDaemonAnalyzerTestCase extends LightJavaCodeInsightTe
}
@NotNull
@Unmodifiable
protected List<HighlightInfo> highlightErrors() {
return doHighlighting(HighlightSeverity.ERROR);
}
@NotNull
@Unmodifiable
protected List<HighlightInfo> doHighlighting() {
PsiDocumentManager.getInstance(getProject()).commitAllDocuments();
@@ -150,6 +153,7 @@ public abstract class LightDaemonAnalyzerTestCase extends LightJavaCodeInsightTe
return annotatedWith(DaemonAnalyzerTestCase.CanChangeDocumentDuringHighlighting.class);
}
@Unmodifiable
protected List<HighlightInfo> doHighlighting(HighlightSeverity minSeverity) {
return DaemonAnalyzerTestCase.filter(doHighlighting(), minSeverity);
}
@@ -28,6 +28,7 @@ import com.intellij.util.ui.UIUtil;
import one.util.streamex.StreamEx;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Unmodifiable;
import java.io.File;
import java.nio.charset.StandardCharsets;
@@ -315,12 +316,14 @@ public abstract class LightQuickFixTestCase extends LightDaemonAnalyzerTestCase
@NotNull
@Override
@Unmodifiable
public List<HighlightInfo> doHighlighting() {
return LightQuickFixTestCase.this.doHighlighting();
}
@NotNull
@Override
@Unmodifiable
public List<IntentionAction> getAvailableActions() {
return LightQuickFixTestCase.this.getAvailableActions();
}
@@ -347,12 +350,14 @@ public abstract class LightQuickFixTestCase extends LightDaemonAnalyzerTestCase
};
}
@Unmodifiable
protected List<IntentionAction> getAvailableActions() {
doHighlighting();
return getAvailableActions(getEditor(), getFile());
}
@NotNull
@Unmodifiable
public static List<IntentionAction> getAvailableActions(@NotNull Editor editor, @NotNull PsiFile file) {
return CodeInsightTestFixtureImpl.getAvailableIntentions(editor, file);
}
@@ -20,6 +20,7 @@ import com.intellij.codeInsight.intention.IntentionAction;
import com.intellij.openapi.project.Project;
import com.intellij.psi.PsiFile;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Unmodifiable;
import java.util.List;
@@ -57,9 +58,11 @@ public interface QuickFixTestCase {
void checkPreviewAndInvoke(@NotNull IntentionAction action, @NotNull String previewFilePath);
@NotNull
@Unmodifiable
List<HighlightInfo> doHighlighting();
@NotNull
@Unmodifiable
List<IntentionAction> getAvailableActions();
void bringRealEditorBack();
@@ -31,6 +31,7 @@ public class MockPsiClassType extends MockPsiReferenceType implements ClassType
}
@Override
@Unmodifiable
public List<InterfaceType> allInterfaces() {
return interfaces();
}
@@ -6,11 +6,13 @@ import com.intellij.psi.controlFlow.*;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.util.containers.ContainerUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Unmodifiable;
import java.util.Collection;
import java.util.List;
final class TypeConversionRuleUtil {
@Unmodifiable
static List<PsiVariable> getVariablesToMakeFinal(@NotNull PsiExpression expression) {
final ControlFlow controlFlow;
try {
@@ -4,6 +4,7 @@ package com.intellij.codeInsight.intention;
import com.intellij.openapi.editor.Editor;
import com.intellij.psi.PsiFile;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Unmodifiable;
import java.util.List;
@@ -49,6 +50,7 @@ public interface CustomizableIntentionActionDelegate extends IntentionActionDele
}
@Override
@Unmodifiable
default @NotNull List<RangeToHighlight> getRangesToHighlight(@NotNull Editor editor, @NotNull PsiFile file) {
IntentionAction action = IntentionActionDelegate.unwrap(getDelegate());
if (action instanceof CustomizableIntentionAction) {
@@ -92,5 +92,6 @@ public interface Lookup {
boolean isSelectionTouched();
@Unmodifiable
List<String> getAdvertisements();
}
@@ -7,6 +7,7 @@ import com.intellij.openapi.util.ClassConditionKey;
import com.intellij.psi.PsiElement;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.Unmodifiable;
import java.util.Set;
@@ -42,6 +43,7 @@ public abstract class LookupElementDecorator<T extends LookupElement> extends Lo
}
@Override
@Unmodifiable
public Set<String> getAllLookupStrings() {
return myDelegate.getAllLookupStrings();
}
@@ -198,6 +198,7 @@ public abstract class InspectionProfileEntry implements BatchSuppressableTool, O
return alternativeId != null && !alternativeId.equals(toolId) && suppressor.isSuppressedFor(element, alternativeId);
}
@Unmodifiable
public static @NotNull Collection<InspectionSuppressor> getSuppressors(@NotNull PsiElement element) {
PsiFile file = element.getContainingFile();
if (file == null) {
@@ -9,6 +9,7 @@ import org.intellij.lang.annotations.Language;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.Unmodifiable;
import java.util.Arrays;
import java.util.List;
@@ -214,6 +215,7 @@ public abstract class LocalInspectionTool extends InspectionProfileEntry impleme
public void inspectionFinished(@NotNull LocalInspectionToolSession session, @NotNull ProblemsHolder problemsHolder) {
}
@Unmodifiable
public @NotNull List<ProblemDescriptor> processFile(@NotNull PsiFile file, @NotNull InspectionManager manager) {
return manager.defaultProcessFile(this, file);
}
@@ -28,6 +28,7 @@ import com.intellij.util.containers.ContainerUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.TestOnly;
import org.jetbrains.annotations.Unmodifiable;
import java.util.List;
@@ -236,6 +237,7 @@ public final class QuickFixWrapper implements IntentionAction, PriorityAction, C
}
@Override
@Unmodifiable
public @NotNull List<@NotNull RangeToHighlight> getRangesToHighlight(@NotNull Editor editor, @NotNull PsiFile file) {
return myFix.getRangesToHighlight(file.getProject(), myDescriptor);
}
@@ -4,6 +4,7 @@ package com.intellij.openapi.vfs.newvfs;
import com.intellij.openapi.vfs.VirtualFile;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.Unmodifiable;
import java.io.IOException;
import java.io.InputStream;
@@ -34,6 +35,7 @@ public interface FileSystemInterface {
* Returns all virtual files under which the given path is known in the VFS, starting with virtual file for the passed path.
* Please note, that it is guaranteed to find all aliases only if path is canonical.
*/
@Unmodifiable
default @NotNull Iterable<@NotNull VirtualFile> findCachedFilesForPath(@NotNull String path) {
return Collections.emptyList();
}
@@ -10,6 +10,7 @@ import com.intellij.util.ProcessingContext;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.Unmodifiable;
import java.util.IdentityHashMap;
import java.util.List;
@@ -64,6 +65,7 @@ public class CachingComparingClassifier extends ComparingClassifier<LookupElemen
}
@Override
@Unmodifiable
public @NotNull List<Pair<LookupElement, Object>> getSortingWeights(@NotNull Iterable<? extends LookupElement> items, @NotNull ProcessingContext context) {
checkPrefixChanged(context);
return super.getSortingWeights(items, context);
@@ -60,10 +60,12 @@ public final class DfaControlTransferValue extends DfaValue {
return indices.toIntArray();
}
@Unmodifiable
public @NotNull List<DfaInstructionState> dispatch(@NotNull DfaMemoryState state, @NotNull DataFlowInterpreter interpreter) {
return dispatch(state, interpreter, target, traps);
}
@Unmodifiable
public static @NotNull List<DfaInstructionState> dispatch(@NotNull DfaMemoryState state,
@NotNull DataFlowInterpreter interpreter,
@NotNull TransferTarget target,
@@ -63,6 +63,7 @@ public abstract class PerFileMappingsBase<T> implements PersistentStateComponent
protected @Nullable Project getProject() { return myProject; }
@Override
@Unmodifiable
public @NotNull Map<VirtualFile, T> getMappings() {
synchronized (myMappings) {
ensureStateLoaded();
@@ -5,6 +5,7 @@ package com.intellij.lang;
import com.intellij.openapi.vfs.VirtualFile;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.Unmodifiable;
import java.util.Map;
@@ -14,6 +15,7 @@ import java.util.Map;
public interface PerFileMappingsEx<T> extends PerFileMappings<T> {
@NotNull
@Unmodifiable
Map<VirtualFile, T> getMappings();
void setMappings(@NotNull Map<VirtualFile, T> mappings);
@@ -65,6 +65,7 @@ public abstract class FileReferenceHelper {
*
* @return roots, which could be used as the start resolution context.
*/
@Unmodifiable
public @NotNull Collection<PsiFileSystemItem> getRoots(@NotNull Module module, @NotNull VirtualFile hostFile) {
return getRoots(module);
}
@@ -400,6 +400,7 @@ public class FileReferenceSet implements FileReferenceSetParameters {
/**
* Finds file target contexts, locations where users can create a file. Includes only local file directory items.
*/
@Unmodifiable
public Collection<FileTargetContext> getTargetContexts() {
PsiFile file = getContainingFile();
if (file == null) return emptyList();
@@ -462,6 +463,7 @@ public class FileReferenceSet implements FileReferenceSetParameters {
return null;
}
@Unmodifiable
private @NotNull Collection<FileTargetContext> getTargetContextByFile(@NotNull PsiFile file) {
boolean absolutePathReference = isAbsolutePathReference();
@@ -589,6 +591,7 @@ public class FileReferenceSet implements FileReferenceSetParameters {
return new ArrayList<>(result);
}
@Unmodifiable
protected @NotNull Collection<PsiFileSystemItem> toFileSystemItems(VirtualFile... files) {
return toFileSystemItems(Arrays.asList(files));
}
@@ -289,6 +289,7 @@ class DocumentWindowImpl extends UserDataHolderBase implements Disposable, Docum
}
@Override
@Unmodifiable
public @NotNull Collection<@NotNull StringOperation> prepareReplaceString(int startOffset, int endOffset, @NotNull CharSequence s) {
if (isOneLine()) {
s = StringUtil.replace(s.toString(), "\n", "");
@@ -30,10 +30,7 @@ import com.intellij.util.ObjectUtils;
import com.intellij.util.Processor;
import com.intellij.util.SmartList;
import com.intellij.util.containers.ContainerUtil;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.TestOnly;
import org.jetbrains.annotations.*;
import java.util.*;
@@ -367,6 +364,7 @@ public final class InjectedLanguageManagerImpl extends InjectedLanguageManager i
}
@Override
@Unmodifiable
public @NotNull List<DocumentWindow> getCachedInjectedDocumentsInRange(@NotNull PsiFile hostPsiFile, @NotNull TextRange range) {
return InjectedLanguageUtilBase.getCachedInjectedDocumentsInRange(hostPsiFile, range);
}
@@ -7,6 +7,7 @@ import com.intellij.openapi.util.TextRange;
import com.intellij.util.text.StringOperation;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.Unmodifiable;
import java.util.Collection;
@@ -53,5 +54,6 @@ public interface DocumentWindow extends Document {
* <p>
* This method doesn't modify the host document.
*/
@Unmodifiable
@NotNull Collection<@NotNull StringOperation> prepareReplaceString(int startOffset, int endOffset, @NotNull CharSequence s);
}
@@ -13,10 +13,7 @@ import com.intellij.psi.FileViewProvider;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiLanguageInjectionHost;
import org.jetbrains.annotations.Contract;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.TestOnly;
import org.jetbrains.annotations.*;
import java.util.List;
@@ -92,6 +89,7 @@ public abstract class InjectedLanguageManager {
public abstract PsiFile getTopLevelFile(@NotNull PsiElement element);
@Unmodifiable
public abstract @NotNull List<DocumentWindow> getCachedInjectedDocumentsInRange(@NotNull PsiFile hostPsiFile, @NotNull TextRange range);
public abstract void enumerate(@NotNull PsiElement host, @NotNull PsiLanguageInjectionHost.InjectedPsiVisitor visitor);
@@ -8,6 +8,7 @@ import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.util.ArrayUtilRt;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.Unmodifiable;
import javax.swing.*;
import java.util.Arrays;
@@ -66,6 +67,7 @@ public class DelegatingGlobalSearchScope extends GlobalSearchScope {
}
@Override
@Unmodifiable
public @NotNull Collection<UnloadedModuleDescription> getUnloadedModulesBelongingToScope() {
return getDelegate().getUnloadedModulesBelongingToScope();
}
@@ -7,6 +7,7 @@ import com.intellij.openapi.project.Project;
import com.intellij.openapi.vfs.VirtualFile;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Unmodifiable;
import java.util.Collection;
@@ -41,6 +42,7 @@ class GlobalAndLocalUnionScope extends GlobalSearchScope {
}
@Override
@Unmodifiable
public @NotNull Collection<UnloadedModuleDescription> getUnloadedModulesBelongingToScope() {
return myMyGlobalScope.getUnloadedModulesBelongingToScope();
}
@@ -72,6 +72,7 @@ public abstract class GlobalSearchScope extends SearchScope implements ProjectAw
* Returns descriptions of unloaded modules whose content might be included in this scope if they had been loaded. Actually, search in
* unloaded modules isn't performed, so this method is used to determine whether a warning about possible missing results should be shown.
*/
@Unmodifiable
public @NotNull Collection<UnloadedModuleDescription> getUnloadedModulesBelongingToScope() {
return Collections.emptySet();
}
@@ -11,6 +11,7 @@ import com.intellij.util.containers.ContainerUtil;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.Unmodifiable;
import java.util.Arrays;
import java.util.Collection;
@@ -75,6 +76,7 @@ final class IntersectionScope extends GlobalSearchScope implements VirtualFileEn
}
@Override
@Unmodifiable
public @NotNull Collection<UnloadedModuleDescription> getUnloadedModulesBelongingToScope() {
return ContainerUtil.intersection(myScope1.getUnloadedModulesBelongingToScope(), myScope2.getUnloadedModulesBelongingToScope());
}
@@ -888,6 +888,7 @@ public class PsiTreeUtil {
@SafeVarargs
@Contract(pure = true)
@Unmodifiable
public static @NotNull <T extends PsiElement> Collection<T> collectElementsOfType(@Nullable PsiElement element,
@NotNull Class<T> @NotNull ... classes) {
return findChildrenOfAnyType(element, false, classes);
@@ -11,6 +11,7 @@ import com.intellij.util.containers.JBIterable;
import com.intellij.util.io.URLUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.Unmodifiable;
import java.io.File;
import java.util.*;
@@ -148,6 +149,7 @@ public final class PathsList {
/**
* @return {@link VirtualFile}s on local file system (returns jars as files).
*/
@Unmodifiable
public List<VirtualFile> getVirtualFiles() {
return JBIterable.from(getPathList()).filterMap(PATH_TO_LOCAL_VFILE).toList();
}
@@ -155,6 +157,7 @@ public final class PathsList {
/**
* @return The same as {@link #getVirtualFiles()} but returns jars as {@code JarFileSystem} roots.
*/
@Unmodifiable
public List<VirtualFile> getRootDirs() {
return JBIterable.from(getPathList()).filterMap(PATH_TO_DIR).toList();
}
@@ -6,6 +6,7 @@ import com.intellij.openapi.progress.ProgressIndicator;
import com.intellij.util.Chunk;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.Unmodifiable;
import java.util.Collection;
import java.util.List;
@@ -17,6 +18,7 @@ public abstract class GraphAlgorithms {
return ApplicationManager.getApplication().getService(GraphAlgorithms.class);
}
@Unmodifiable
public abstract <Node> @NotNull Collection<Node> findNodesWhichBelongToAnyPathBetweenTwoNodes(
@NotNull Graph<Node> graph,
@NotNull Node start,
@@ -34,6 +34,7 @@ public class ObjectStubTree<T extends Stub> {
return myRoot;
}
@Unmodifiable
public @NotNull List<T> getPlainList() {
return myPlainList;
}
@@ -59,6 +60,7 @@ public class ObjectStubTree<T extends Stub> {
return sink.getResult();
}
@Unmodifiable
protected @NotNull List<T> enumerateStubs(@NotNull Stub root) {
List<T> result = new ArrayList<>();
//noinspection rawtypes,unchecked
@@ -24,6 +24,7 @@ public class StubTree extends ObjectStubTree<StubElement<?>> {
}
@Override
@Unmodifiable
protected @NotNull List<StubElement<?>> enumerateStubs(@NotNull Stub root) {
return ((StubBase<?>)root).myStubList.finalizeLoadingStage().toPlainList();
}
@@ -8,6 +8,7 @@ import com.intellij.util.graph.*;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.Unmodifiable;
import java.util.*;
import java.util.function.Consumer;
@@ -16,6 +17,7 @@ import java.util.function.Consumer;
public final class GraphAlgorithmsImpl extends GraphAlgorithms {
@Override
@Unmodifiable
public @NotNull <Node> Collection<Node> findNodesWhichBelongToAnyPathBetweenTwoNodes(
@NotNull Graph<Node> graph,
@NotNull Node start,
@@ -75,6 +75,7 @@ public final class DvcsUtil {
};
@NotNull
@Unmodifiable
public static List<VirtualFile> sortVirtualFilesByPresentation(@NotNull Collection<? extends VirtualFile> virtualFiles) {
return ContainerUtil.sorted(virtualFiles, VIRTUAL_FILE_PRESENTATION_COMPARATOR);
}
@@ -42,6 +42,7 @@ public abstract class AbstractTreeNode<T> extends PresentableNodeDescriptor<Abst
myNodeWrapper = setInternalValue(value);
}
@Unmodifiable
public abstract @NotNull Collection<? extends AbstractTreeNode<?>> getChildren();
protected boolean hasProblemFileBeneath() {

Some files were not shown because too many files have changed in this diff Show More