Search in sources :

Example 46 with TIntHashSet

use of gnu.trove.TIntHashSet in project intellij-community by JetBrains.

the class VcsLogPersistentIndex method filterMessages.

@NotNull
public TIntHashSet filterMessages(@NotNull VcsLogTextFilter filter) {
    if (myIndexStorage != null) {
        try {
            if (!filter.isRegex()) {
                TIntHashSet commitsForSearch = myIndexStorage.trigrams.getCommitsForSubstring(filter.getText());
                if (commitsForSearch != null) {
                    TIntHashSet result = new TIntHashSet();
                    commitsForSearch.forEach(commit -> {
                        try {
                            String value = myIndexStorage.messages.get(commit);
                            if (value != null) {
                                if (VcsLogTextFilterImpl.matches(filter, value)) {
                                    result.add(commit);
                                }
                            }
                        } catch (IOException e) {
                            myFatalErrorsConsumer.consume(this, e);
                            return false;
                        }
                        return true;
                    });
                    return result;
                }
            }
        } catch (StorageException e) {
            myFatalErrorsConsumer.consume(this, e);
        } catch (RuntimeException e) {
            processRuntimeException(e);
        }
        return filter(myIndexStorage.messages, message -> VcsLogTextFilterImpl.matches(filter, message));
    }
    return EmptyIntHashSet.INSTANCE;
}
Also used : IOException(java.io.IOException) StorageException(com.intellij.util.indexing.StorageException) TIntHashSet(gnu.trove.TIntHashSet) NotNull(org.jetbrains.annotations.NotNull)

Example 47 with TIntHashSet

use of gnu.trove.TIntHashSet in project intellij-community by JetBrains.

the class VcsLogPersistentIndex method markForIndexing.

@Override
public synchronized void markForIndexing(int index, @NotNull VirtualFile root) {
    if (isIndexed(index) || !myRoots.contains(root))
        return;
    TIntHashSet set = myCommitsToIndex.get(root);
    if (set == null) {
        set = new TIntHashSet();
        myCommitsToIndex.put(root, set);
    }
    set.add(index);
}
Also used : TIntHashSet(gnu.trove.TIntHashSet)

Example 48 with TIntHashSet

use of gnu.trove.TIntHashSet in project intellij-community by JetBrains.

the class VcsLogPersistentIndex method filter.

@Override
@NotNull
public Set<Integer> filter(@NotNull List<VcsLogDetailsFilter> detailsFilters) {
    VcsLogTextFilter textFilter = ContainerUtil.findInstance(detailsFilters, VcsLogTextFilter.class);
    VcsLogUserFilter userFilter = ContainerUtil.findInstance(detailsFilters, VcsLogUserFilter.class);
    VcsLogStructureFilter pathFilter = ContainerUtil.findInstance(detailsFilters, VcsLogStructureFilter.class);
    TIntHashSet filteredByMessage = null;
    if (textFilter != null) {
        filteredByMessage = filterMessages(textFilter);
    }
    TIntHashSet filteredByUser = null;
    if (userFilter != null) {
        Set<VcsUser> users = ContainerUtil.newHashSet();
        for (VirtualFile root : myRoots) {
            users.addAll(userFilter.getUsers(root));
        }
        filteredByUser = filterUsers(users);
    }
    TIntHashSet filteredByPath = null;
    if (pathFilter != null) {
        filteredByPath = filterPaths(pathFilter.getFiles());
    }
    return TroveUtil.intersect(filteredByMessage, filteredByPath, filteredByUser);
}
Also used : VirtualFile(com.intellij.openapi.vfs.VirtualFile) TIntHashSet(gnu.trove.TIntHashSet) NotNull(org.jetbrains.annotations.NotNull)

Example 49 with TIntHashSet

use of gnu.trove.TIntHashSet in project intellij-community by JetBrains.

the class DefinitionMap method copyFrom.

public void copyFrom(DefinitionMap map, int fromIndex, int toIndex) {
    TIntHashSet defs = map.myMap.get(fromIndex);
    if (defs == null)
        defs = new TIntHashSet();
    myMap.put(toIndex, defs);
}
Also used : TIntHashSet(gnu.trove.TIntHashSet)

Example 50 with TIntHashSet

use of gnu.trove.TIntHashSet in project intellij-community by JetBrains.

the class UnusedDefInspection method check.

@Override
protected void check(@NotNull final GrControlFlowOwner owner, @NotNull final ProblemsHolder problemsHolder) {
    final Instruction[] flow = owner.getControlFlow();
    final ReachingDefinitionsDfaInstance dfaInstance = new ReachingDefinitionsDfaInstance(flow);
    final ReachingDefinitionsSemilattice lattice = new ReachingDefinitionsSemilattice();
    final DFAEngine<DefinitionMap> engine = new DFAEngine<>(flow, dfaInstance, lattice);
    final List<DefinitionMap> dfaResult = engine.performDFAWithTimeout();
    if (dfaResult == null) {
        return;
    }
    final TIntHashSet unusedDefs = new TIntHashSet();
    for (Instruction instruction : flow) {
        if (instruction instanceof ReadWriteVariableInstruction && ((ReadWriteVariableInstruction) instruction).isWrite()) {
            unusedDefs.add(instruction.num());
        }
    }
    for (int i = 0; i < dfaResult.size(); i++) {
        final Instruction instruction = flow[i];
        if (instruction instanceof ReadWriteVariableInstruction) {
            final ReadWriteVariableInstruction varInst = (ReadWriteVariableInstruction) instruction;
            if (!varInst.isWrite()) {
                final String varName = varInst.getVariableName();
                DefinitionMap e = dfaResult.get(i);
                e.forEachValue(new TObjectProcedure<TIntHashSet>() {

                    @Override
                    public boolean execute(TIntHashSet reaching) {
                        reaching.forEach(new TIntProcedure() {

                            @Override
                            public boolean execute(int defNum) {
                                final String defName = ((ReadWriteVariableInstruction) flow[defNum]).getVariableName();
                                if (varName.equals(defName)) {
                                    unusedDefs.remove(defNum);
                                }
                                return true;
                            }
                        });
                        return true;
                    }
                });
            }
        }
    }
    final Set<PsiElement> checked = ContainerUtil.newHashSet();
    unusedDefs.forEach(new TIntProcedure() {

        @Override
        public boolean execute(int num) {
            final ReadWriteVariableInstruction instruction = (ReadWriteVariableInstruction) flow[num];
            final PsiElement element = instruction.getElement();
            process(element, checked, problemsHolder, GroovyInspectionBundle.message("unused.assignment.tooltip"));
            return true;
        }
    });
    owner.accept(new GroovyRecursiveElementVisitor() {

        @Override
        public void visitVariable(@NotNull GrVariable variable) {
            if (checked.contains(variable) || variable.getInitializerGroovy() != null)
                return;
            if (ReferencesSearch.search(variable, variable.getUseScope()).findFirst() == null) {
                process(variable, checked, problemsHolder, GroovyInspectionBundle.message("unused.variable"));
            }
        }
    });
}
Also used : ReadWriteVariableInstruction(org.jetbrains.plugins.groovy.lang.psi.controlFlow.ReadWriteVariableInstruction) TIntProcedure(gnu.trove.TIntProcedure) GroovyRecursiveElementVisitor(org.jetbrains.plugins.groovy.lang.psi.GroovyRecursiveElementVisitor) Instruction(org.jetbrains.plugins.groovy.lang.psi.controlFlow.Instruction) ReadWriteVariableInstruction(org.jetbrains.plugins.groovy.lang.psi.controlFlow.ReadWriteVariableInstruction) ReachingDefinitionsDfaInstance(org.jetbrains.plugins.groovy.lang.psi.dataFlow.reachingDefs.ReachingDefinitionsDfaInstance) TIntHashSet(gnu.trove.TIntHashSet) DFAEngine(org.jetbrains.plugins.groovy.lang.psi.dataFlow.DFAEngine) GrVariable(org.jetbrains.plugins.groovy.lang.psi.api.statements.GrVariable) ReachingDefinitionsSemilattice(org.jetbrains.plugins.groovy.lang.psi.dataFlow.reachingDefs.ReachingDefinitionsSemilattice) DefinitionMap(org.jetbrains.plugins.groovy.lang.psi.dataFlow.reachingDefs.DefinitionMap) PsiElement(com.intellij.psi.PsiElement) GroovyPsiElement(org.jetbrains.plugins.groovy.lang.psi.GroovyPsiElement)

Aggregations

TIntHashSet (gnu.trove.TIntHashSet)50 NotNull (org.jetbrains.annotations.NotNull)16 TIntArrayList (gnu.trove.TIntArrayList)5 VirtualFile (com.intellij.openapi.vfs.VirtualFile)4 IOException (java.io.IOException)4 Nullable (org.jetbrains.annotations.Nullable)4 TIntProcedure (gnu.trove.TIntProcedure)3 ArrayList (java.util.ArrayList)3 ProgressIndicator (com.intellij.openapi.progress.ProgressIndicator)2 Processor (com.intellij.util.Processor)2 StorageException (com.intellij.util.indexing.StorageException)2 CharArrayCharSequence (com.intellij.util.text.CharArrayCharSequence)2 THashSet (gnu.trove.THashSet)2 TIntIterator (gnu.trove.TIntIterator)2 LightRef (org.jetbrains.jps.backwardRefs.LightRef)2 GenerateMembersUtil (com.intellij.codeInsight.generation.GenerateMembersUtil)1 Edge (com.intellij.codeInspection.bytecodeAnalysis.asm.ControlFlowGraph.Edge)1 CompilerReferenceFindUsagesTestInfo (com.intellij.compiler.backwardRefs.view.CompilerReferenceFindUsagesTestInfo)1 DirtyScopeTestInfo (com.intellij.compiler.backwardRefs.view.DirtyScopeTestInfo)1 PluginException (com.intellij.diagnostic.PluginException)1