Replace simple lambdas with method references wherever possible

This commit is contained in:
Ben Liblit 2017-11-22 13:27:43 -06:00
parent 790d37781b
commit 74e0640771
47 changed files with 67 additions and 70 deletions

View File

@ -34,6 +34,7 @@ import com.ibm.wala.ipa.cha.ClassHierarchyException;
import com.ibm.wala.ipa.cha.ClassHierarchyFactory;
import com.ibm.wala.ipa.cha.IClassHierarchy;
import com.ibm.wala.ssa.SSAOptions;
import com.ibm.wala.ssa.SymbolTable;
import com.ibm.wala.types.ClassLoaderReference;
import com.ibm.wala.util.collections.HashSetFactory;
import com.ibm.wala.util.config.FileOfClasses;
@ -158,7 +159,7 @@ public abstract class JavaSourceAnalysisEngine<I extends InstanceKey> extends Ab
AnalysisOptions options = new AnalysisOptions(getScope(), entrypoints);
SSAOptions ssaOptions = new SSAOptions();
ssaOptions.setDefaultValues((symtab, valueNumber) -> symtab.getDefaultValue(valueNumber));
ssaOptions.setDefaultValues(SymbolTable::getDefaultValue);
options.setSSAOptions(ssaOptions);

View File

@ -76,11 +76,11 @@ public class AstJavaSlicer extends Slicer {
}
public static Set<Statement> gatherAssertions(CallGraph CG, Collection<CGNode> partialRoots) {
return gatherStatements(CG, partialRoots, o -> o instanceof AstAssertInstruction);
return gatherStatements(CG, partialRoots, AstAssertInstruction.class::isInstance);
}
public static Set<Statement> gatherMonitors(CallGraph CG, Collection<CGNode> partialRoots) {
return gatherStatements(CG, partialRoots, o -> o instanceof SSAMonitorInstruction);
return gatherStatements(CG, partialRoots, SSAMonitorInstruction.class::isInstance);
}
public static Set<Statement> gatherWrites(CallGraph CG, Collection<CGNode> partialRoots) {

View File

@ -57,7 +57,7 @@ public abstract class TestSimplePageCallGraphShapeRhino extends TestSimplePageCa
@Before
public void setUp() {
com.ibm.wala.cast.js.ipa.callgraph.JSCallGraphUtil.setTranslatorFactory(new CAstRhinoTranslatorFactory());
WebUtil.setFactory(() -> TestSimplePageCallGraphShapeRhino.this.getParser());
WebUtil.setFactory(TestSimplePageCallGraphShapeRhino.this::getParser);
JSSourceExtractor.USE_TEMP_NAME = false;
// JSSourceExtractor.DELETE_UPON_EXIT = false;
}

View File

@ -338,7 +338,7 @@ public abstract class TestPointerAnalyses {
if (hg.containsNode(proto)) {
return
new MapIterator<>(hg.getSuccNodes(proto),
object -> (ObjectVertex)object);
ObjectVertex.class::cast);
} else {
return EmptyIterator.instance();
}

View File

@ -121,7 +121,7 @@ public class FlowGraph implements Iterable<Vertex> {
GraphReachability<Vertex, T> optimistic_closure =
new GraphReachability<>(
new InvertedGraph<>(pruned_flowgraph),
o -> type.isInstance(o)
type::isInstance
);
optimistic_closure.solve(monitor);
@ -533,7 +533,7 @@ public class FlowGraph implements Iterable<Vertex> {
@Override
public Collection<Object> getReachableInstances(Set<Object> roots) {
return DFS.getReachableNodes(this, roots, o -> o instanceof ObjectVertex);
return DFS.getReachableNodes(this, roots, ObjectVertex.class::isInstance);
}
@Override

View File

@ -27,7 +27,7 @@ import com.ibm.wala.util.collections.Pair;
public class DefaultSourceExtractor extends DomLessSourceExtractor{
public static Supplier<JSSourceExtractor> factory = () -> new DefaultSourceExtractor();
public static Supplier<JSSourceExtractor> factory = DefaultSourceExtractor::new;
protected static class HtmlCallBack extends DomLessSourceExtractor.HtmlCallback{

View File

@ -42,7 +42,7 @@ public class DomLessSourceExtractor extends JSSourceExtractor {
private static final Pattern LEGAL_JS_IDENTIFIER_REGEXP = Pattern.compile("^[a-zA-Z$_][a-zA-Z\\d$_]*$");
private static final Pattern LEGAL_JS_KEYWORD_REGEXP = Pattern.compile("^((break)|(case)|(catch)|(continue)|(debugger)|(default)|(delete)|(do)|(else)|(finally)|(for)|(function)|(if)|(in)|(instanceof)|(new)|(return)|(switch)|(this)|(throw)|(try)|(typeof)|(var)|(void)|(while)|(with))$");
public static Supplier<JSSourceExtractor> factory = () -> new DomLessSourceExtractor();
public static Supplier<JSSourceExtractor> factory = DomLessSourceExtractor::new;
protected interface IGeneratorCallback extends IHtmlCallback {
void writeToFinalRegion(SourceRegion finalRegion);

View File

@ -28,7 +28,7 @@ public class WebUtil {
public static final String preamble = "preamble.js";
private static IHtmlParserFactory factory = () -> new JerichoHtmlParser();
private static IHtmlParserFactory factory = JerichoHtmlParser::new;
public static void setFactory(IHtmlParserFactory factory) {
WebUtil.factory = factory;

View File

@ -74,7 +74,7 @@ public class CallGraph2JSON {
for(Iterator<CallSiteReference> iter = nd.iterateCallSites(); iter.hasNext();) {
CallSiteReference callsite = iter.next();
Set<IMethod> targets = Util.mapToSet(cg.getPossibleTargets(nd, callsite), nd1 -> nd1.getMethod());
Set<IMethod> targets = Util.mapToSet(cg.getPossibleTargets(nd, callsite), CGNode::getMethod);
serializeCallSite(method, callsite, targets, edges);
}
}

View File

@ -55,7 +55,7 @@ public class LexicalModRef {
*/
public Map<CGNode, OrdinalSet<Pair<CGNode, String>>> computeLexicalRef() {
Map<CGNode, Collection<Pair<CGNode, String>>> scan = CallGraphTransitiveClosure.collectNodeResults(cg,
n -> scanNodeForLexReads(n));
this::scanNodeForLexReads);
return CallGraphTransitiveClosure.transitiveClosure(cg, scan);
}
@ -66,7 +66,7 @@ public class LexicalModRef {
*/
public Map<CGNode, OrdinalSet<Pair<CGNode, String>>> computeLexicalMod() {
Map<CGNode, Collection<Pair<CGNode, String>>> scan = CallGraphTransitiveClosure.collectNodeResults(cg,
n -> scanNodeForLexWrites(n));
this::scanNodeForLexWrites);
return CallGraphTransitiveClosure.transitiveClosure(cg, scan);
}

View File

@ -1262,7 +1262,7 @@ public abstract class AstTranslator extends CAstVisitor<AstTranslator.WalkContex
}
}
} else {
transferEdges(liveBlocks, icfg, (src, dst) -> addNormalEdge(src, dst), (src, dst) -> addExceptionalEdge(src, dst));
transferEdges(liveBlocks, icfg, this::addNormalEdge, this::addExceptionalEdge);
}
int x = 0;

View File

@ -86,7 +86,7 @@ public abstract class CAstAbstractLoader implements IClassLoader {
}
}
return false;
}), object -> object.getKey());
}), Map.Entry::getKey);
}
public Iterator<ModuleEntry> getModulesWithParseErrors() {

View File

@ -11,7 +11,6 @@
package com.ibm.wala.core.tests.basic;
import java.util.List;
import java.util.function.Predicate;
import org.junit.Assert;
import org.junit.Test;
@ -41,7 +40,7 @@ public class PathFinderTest {
}
private static DFSAllPathsFinder<String> makeFinder(Graph<String> g, String start, final String end) {
return new DFSAllPathsFinder<>(g, start, (Predicate<String>) o -> end.equals(o));
return new DFSAllPathsFinder<>(g, start, end::equals);
}
private static void checkPaths(DFSAllPathsFinder<String> paths, int expectedCount) {

View File

@ -242,7 +242,7 @@ public class CallGraphTest extends WalaTestCase {
}
}
}
return () -> result.iterator();
return result::iterator;
}
@Test public void testPrimordial() throws ClassHierarchyException, IllegalArgumentException, CancelException, IOException {
@ -294,7 +294,7 @@ public class CallGraphTest extends WalaTestCase {
result.add(new DefaultEntrypoint(m, cha));
}
}
return () -> result.iterator();
return result::iterator;
}
public static void doCallGraphs(AnalysisOptions options, IAnalysisCacheView cache, IClassHierarchy cha, AnalysisScope scope)

View File

@ -147,7 +147,7 @@ public abstract class DynamicCallGraphTestBase extends WalaTestCase {
}
protected void checkEdges(CallGraph staticCG) throws IOException {
checkEdges(staticCG, (x) -> true );
checkEdges(staticCG, x -> true);
}
protected void checkEdges(CallGraph staticCG, Predicate<MethodReference> filter) throws IOException {
@ -167,7 +167,7 @@ public abstract class DynamicCallGraphTestBase extends WalaTestCase {
}
protected void checkNodes(CallGraph staticCG) throws IOException {
checkNodes(staticCG, (x) -> true);
checkNodes(staticCG, x -> true);
}
protected void checkNodes(CallGraph staticCG, Predicate<MethodReference> filter) throws IOException {

View File

@ -14,7 +14,6 @@ import java.io.File;
import java.io.IOException;
import java.util.Collection;
import java.util.Properties;
import java.util.function.Predicate;
import com.ibm.wala.core.tests.callGraph.CallGraphTestUtil;
import com.ibm.wala.core.tests.slicer.SlicerTest;
@ -249,8 +248,7 @@ public class PDFSlice {
* return a view of the sdg restricted to the statements in the slice
*/
public static Graph<Statement> pruneSDG(SDG<InstanceKey> sdg, final Collection<Statement> slice) {
Predicate<Statement> f = o -> slice.contains(o);
return GraphSlicer.prune(sdg, f);
return GraphSlicer.prune(sdg, slice::contains);
}
/**

View File

@ -135,7 +135,7 @@ public class BasicHeapGraph<T extends InstanceKey> extends HeapGraphImpl<T> {
};
final IBinaryNaturalRelation pred = computePredecessors(nodeMgr);
final IntFunction<Object> toNode = i -> nodeMgr.getNode(i);
final IntFunction<Object> toNode = nodeMgr::getNode;
this.G = new AbstractNumberedGraph<Object>() {
private final NumberedEdgeManager<Object> edgeMgr = new NumberedEdgeManager<Object>() {

View File

@ -52,8 +52,7 @@ public abstract class HeapGraphImpl<T extends InstanceKey> implements HeapGraph<
@Override
public Collection<Object> getReachableInstances(Set<Object> roots) {
Predicate<Object> f = o -> (o instanceof InstanceKey);
return DFS.getReachableNodes(this, roots, f);
return DFS.getReachableNodes(this, roots, InstanceKey.class::isInstance);
}
@Override

View File

@ -216,12 +216,12 @@ public class MethodHandles {
@Override
public Iterator<FieldReference> iterateFieldsRead(CGNode node) {
return iterateFields(node, o -> o instanceof SSAGetInstruction);
return iterateFields(node, SSAGetInstruction.class::isInstance);
}
@Override
public Iterator<FieldReference> iterateFieldsWritten(CGNode node) {
return iterateFields(node, o -> o instanceof SSAPutInstruction);
return iterateFields(node, SSAPutInstruction.class::isInstance);
}
@Override

View File

@ -347,15 +347,15 @@ public final class ShrikeCTMethod extends ShrikeBTMethod implements IBytecodeMet
}
private CodeReader getCodeReader() {
return getReader("Code", iter -> new CodeReader(iter));
return getReader("Code", CodeReader::new);
}
private ExceptionsReader getExceptionReader() {
return getReader("Exceptions", iter -> new ExceptionsReader(iter));
return getReader("Exceptions", ExceptionsReader::new);
}
private SignatureReader getSignatureReader() {
return getReader("Signature", iter -> new SignatureReader(iter));
return getReader("Signature", SignatureReader::new);
}
private AnnotationsReader getAnnotationsReader(AnnotationType type) {

View File

@ -343,7 +343,7 @@ public final class ShrikeClass extends JVMClass<IClassLoader> {
ClassReader.AttrIterator attrs = new ClassReader.AttrIterator();
getReader().initClassAttributeIterator(attrs);
return getReader(attrs, "SourceFile", iter -> new SourceFileReader(iter));
return getReader(attrs, "SourceFile", SourceFileReader::new);
}
private AnnotationsReader getFieldAnnotationsReader(boolean runtimeInvisible, int fieldIndex) throws InvalidClassFileException {

View File

@ -125,7 +125,7 @@ public abstract class AbstractAnalysisEngine<I extends InstanceKey> implements A
*/
private HeapGraph heapGraph;
private EntrypointBuilder entrypointBuilder = (scope, cha) -> makeDefaultEntrypoints(scope, cha);
private EntrypointBuilder entrypointBuilder = this::makeDefaultEntrypoints;
protected abstract CallGraphBuilder<I> getCallGraphBuilder(IClassHierarchy cha, AnalysisOptions options, IAnalysisCacheView cache2);

View File

@ -95,7 +95,7 @@ public class ICFGSupergraph implements ISupergraph<BasicBlockInContext<IExploded
@Override
public Iterator<? extends BasicBlockInContext<IExplodedBasicBlock>> getCalledNodes(BasicBlockInContext<IExplodedBasicBlock> call) {
final Predicate<BasicBlockInContext<IExplodedBasicBlock>> isEntryFilter = o -> o.isEntryBlock();
final Predicate<BasicBlockInContext<IExplodedBasicBlock>> isEntryFilter = BasicBlockInContext::isEntryBlock;
return new FilterIterator<BasicBlockInContext<IExplodedBasicBlock>>(getSuccNodes(call), isEntryFilter);
}

View File

@ -285,7 +285,7 @@ public class DemandRefinementPointsTo extends AbstractDemandPointsTo {
throw new IllegalArgumentException("p2SetWithStates == null");
}
Collection<T> finalP2Set = Iterator2Collection.toSet(new MapIterator<WithState<T>, T>(p2SetWithStates.iterator(),
object -> object.getWrapped()));
WithState::getWrapped));
return finalP2Set;
}
@ -504,7 +504,7 @@ public class DemandRefinementPointsTo extends AbstractDemandPointsTo {
*/
@Override
public Collection<InstanceKey> getPointsTo(PointerKey pk) {
return getPointsTo(pk, (InstanceKey k) -> { return false; }).snd;
return getPointsTo(pk, k -> { return false; }).snd;
}
/**
@ -512,7 +512,7 @@ public class DemandRefinementPointsTo extends AbstractDemandPointsTo {
* <code>null</code> if the points-to set can't be computed in the allocated budget
*/
public Collection<InstanceKeyAndState> getPointsToWithStates(PointerKey pk) {
return getPointsToWithStates(pk, (InstanceKey k) -> { return false; }).snd;
return getPointsToWithStates(pk, k -> { return false; }).snd;
}
/**

View File

@ -377,7 +377,7 @@ public class AnalysisScope {
private JarFile getRtJar() {
return RtJar.getRtJar(
new MapIterator<Module,JarFile>(
new FilterIterator<Module>(getModules(getPrimordialLoader()).iterator(), M -> M instanceof JarFileModule), M -> ((JarFileModule) M).getJarFile()));
new FilterIterator<Module>(getModules(getPrimordialLoader()).iterator(), JarFileModule.class::isInstance), M -> ((JarFileModule) M).getJarFile()));
}
public String getJavaLibraryVersion() throws IllegalStateException {

View File

@ -162,7 +162,7 @@ public class CHACallGraph extends BasicCallGraph<CHAContextInterpreter> {
new MapIterator<IMethod,CGNode>(
new FilterIterator<IMethod>(
getPossibleTargets(site),
o -> isRelevantMethod(o)
this::isRelevantMethod
),
object -> {
try {

View File

@ -52,7 +52,7 @@ public class PartialCallGraph extends DelegatingGraph<CGNode> implements CallGra
* @param nodes set of nodes that will be included in the new, partial call graph
*/
public static PartialCallGraph make(final CallGraph cg, final Collection<CGNode> partialRoots, final Collection<CGNode> nodes) {
Graph<CGNode> partialGraph = GraphSlicer.prune(cg, o -> nodes.contains(o));
Graph<CGNode> partialGraph = GraphSlicer.prune(cg, nodes::contains);
return new PartialCallGraph(cg, partialRoots, partialGraph);
}
@ -64,7 +64,7 @@ public class PartialCallGraph extends DelegatingGraph<CGNode> implements CallGra
*/
public static PartialCallGraph make(CallGraph cg, Collection<CGNode> partialRoots) {
final Set<CGNode> nodes = DFS.getReachableNodes(cg, partialRoots);
Graph<CGNode> partialGraph = GraphSlicer.prune(cg, o -> nodes.contains(o));
Graph<CGNode> partialGraph = GraphSlicer.prune(cg, nodes::contains);
return new PartialCallGraph(cg, partialRoots, partialGraph);
}
@ -113,7 +113,7 @@ public class PartialCallGraph extends DelegatingGraph<CGNode> implements CallGra
@Override
public Iterator<CGNode> iterateNodes(IntSet nodes) {
return new FilterIterator<CGNode>(cg.iterateNodes(nodes), o -> containsNode(o));
return new FilterIterator<CGNode>(cg.iterateNodes(nodes), this::containsNode);
}
@Override

View File

@ -167,7 +167,7 @@ public class Util {
}
}
}
return () -> result.iterator();
return result::iterator;
}
/**

View File

@ -200,7 +200,7 @@ public class PointsToMap {
* @return {@link Iterator}&lt;{@link PointerKey}&gt;
*/
public Iterator<PointerKey> getTransitiveRoots() {
return new FilterIterator<PointerKey>(iterateKeys(), o -> isTransitiveRoot(o));
return new FilterIterator<PointerKey>(iterateKeys(), this::isTransitiveRoot);
}
/**

View File

@ -270,7 +270,7 @@ public class PropagationGraph implements IFixedPointSystem<PointsToSetVariable>
@Override
public Iterator<AbstractStatement> getStatements() {
Iterator<INodeWithNumber> it = new FilterIterator<>(delegateGraph.iterator(), x -> x instanceof AbstractStatement);
Iterator<INodeWithNumber> it = new FilterIterator<>(delegateGraph.iterator(), AbstractStatement.class::isInstance);
Iterator<AbstractStatement> converted = new MapIterator<>(it, AbstractStatement.class::cast);
return new CompoundIterator<AbstractStatement>(converted, new GlobalImplicitIterator());
}
@ -757,7 +757,7 @@ public class PropagationGraph implements IFixedPointSystem<PointsToSetVariable>
@Override
public Iterator<PointsToSetVariable> getVariables() {
Iterator<INodeWithNumber> it = new FilterIterator<>(delegateGraph.iterator(), x -> x instanceof IVariable);
Iterator<INodeWithNumber> it = new FilterIterator<>(delegateGraph.iterator(), IVariable.class::isInstance);
Iterator<PointsToSetVariable> converted = new MapIterator<INodeWithNumber, PointsToSetVariable>(it, PointsToSetVariable.class::cast);
return converted;
}

View File

@ -175,7 +175,7 @@ public class TypeBasedHeapModel implements HeapModel {
@Override
public Iterator<PointerKey> iteratePointerKeys() {
initAllPKeys();
Iterator<Object> filtered = new FilterIterator<Object>(pKeys.values().iterator(), o -> o instanceof PointerKey);
Iterator<Object> filtered = new FilterIterator<Object>(pKeys.values().iterator(), PointerKey.class::isInstance);
return new MapIterator<Object, PointerKey>(filtered, PointerKey.class::cast);
}

View File

@ -879,7 +879,7 @@ public abstract class AbstractInterproceduralCFG<T extends ISSABasicBlock> imple
return new FilterIterator<BasicBlockInContext<T>>(m, isCall);
}
private final Predicate<BasicBlockInContext<T>> isCall = o -> hasCall(o);
private final Predicate<BasicBlockInContext<T>> isCall = this::hasCall;
public boolean isReturn(BasicBlockInContext<T> bb) throws IllegalArgumentException {
if (bb == null) {

View File

@ -201,7 +201,7 @@ public class PrunedCFG<I, T extends IBasicBlock<I>> extends AbstractNumberedGrap
}
private Iterator<T> filterNodes(Iterator<T> nodeIterator) {
return new FilterIterator<T>(nodeIterator, o -> subset.contains(o));
return new FilterIterator<T>(nodeIterator, subset::contains);
}
@Override

View File

@ -644,7 +644,7 @@ public class HeapReachingDefs<T extends InstanceKey> {
return null;
} else {
// only static fields are actually killed
Predicate<PointerKey> staticFilter = o -> o instanceof StaticFieldKey;
Predicate<PointerKey> staticFilter = StaticFieldKey.class::isInstance;
final Collection<PointerKey> kill = Iterator2Collection
.toSet(new FilterIterator<PointerKey>(mod.iterator(), staticFilter));
if (kill.isEmpty()) {

View File

@ -97,8 +97,7 @@ class SDGSupergraph implements ISupergraph<Statement, PDG<? extends InstanceKey>
public Iterator<? extends Statement> getCalledNodes(Statement call) {
switch (call.getKind()) {
case NORMAL:
Predicate<Statement> f = s -> isEntry(s);
return new FilterIterator<Statement>(getSuccNodes(call), f);
return new FilterIterator<Statement>(getSuccNodes(call), this::isEntry);
case PARAM_CALLER:
case HEAP_PARAM_CALLER:
return getSuccNodes(call);

View File

@ -67,7 +67,7 @@ public class JUnitEntryPoints {
}
}
}
return () -> result.iterator();
return result::iterator;
}
/**
@ -115,7 +115,7 @@ public class JUnitEntryPoints {
}
}
}
return () -> entryPts.iterator();
return entryPts::iterator;
}
/**

View File

@ -79,7 +79,7 @@ public class PDFViewUtil {
SSACFG.BasicBlock bb = (SSACFG.BasicBlock) it.next();
labelMap.put(bb, getNodeLabel(ir, bb));
}
NodeDecorator<ISSABasicBlock> labels = bb -> labelMap.get(bb);
NodeDecorator<ISSABasicBlock> labels = labelMap::get;
return labels;
}

View File

@ -100,7 +100,7 @@ public class DalvikCallGraphTestBase extends DynamicCallGraphTestBase {
new MapIterator<SSAInstruction,NewSiteReference>(
new FilterIterator<SSAInstruction>(
node.getIR().iterateAllInstructions(),
t -> t instanceof SSANewInstruction),
SSANewInstruction.class::isInstance),
object -> ((SSANewInstruction)object).getNewSite()
);
}

View File

@ -188,12 +188,12 @@ public class AndroidManifestXMLReader {
Collections.EMPTY_SET,
IntentItem.class),
ACTION("action",
() -> Collections.emptySet(),
Collections::emptySet,
EnumSet.of(Attr.NAME),
FinalItem.class), //(new ITagDweller() {
//public Tag getTag() { return Tag.ACTION; }})),
DATA("data",
() -> Collections.emptySet(),
Collections::emptySet,
EnumSet.of(Attr.SCHEME, Attr.HOST, Attr.PATH, Attr.MIME),
FinalItem.class), //(new ITagDweller() {
//public Tag getTag() { return Tag.DATA; }})),

View File

@ -19,6 +19,7 @@ import com.ibm.wala.ipa.callgraph.Entrypoint;
import com.ibm.wala.ipa.callgraph.IAnalysisCacheView;
import com.ibm.wala.ipa.callgraph.propagation.InstanceKey;
import com.ibm.wala.ssa.SSAOptions;
import com.ibm.wala.ssa.SymbolTable;
import com.ibm.wala.types.ClassLoaderReference;
import com.ibm.wala.util.debug.Assertions;
import com.ibm.wala.util.io.FileProvider;
@ -69,7 +70,7 @@ abstract public class EclipseProjectSourceAnalysisEngine<P, I extends InstanceKe
AnalysisOptions options = new AnalysisOptions(getScope(), entrypoints);
SSAOptions ssaOptions = new SSAOptions();
ssaOptions.setDefaultValues((symtab, valueNumber) -> symtab.getDefaultValue(valueNumber));
ssaOptions.setDefaultValues(SymbolTable::getDefaultValue);
options.setSSAOptions(ssaOptions);

View File

@ -95,7 +95,7 @@ public class CopyWriter {
final ArrayList<ZipEntry> entries = new ArrayList<>();
instrumenter = new OfflineInstrumenter();
instrumenter.setManifestBuilder(ze -> entries.add(ze));
instrumenter.setManifestBuilder(entries::add);
instrumenter.parseStandardArgs(args);
instrumenter.setJARComment(copyright);
instrumenter.beginTraversal();

View File

@ -58,7 +58,7 @@ public final class BitVectorIntersection extends AbstractMeetOperator<BitVectorV
return NOT_CHANGED;
} else {
final BitVectorVariable bvv = new BitVectorVariable();
intersect.foreach(x -> bvv.set(x));
intersect.foreach(bvv::set);
lhs.copyState(bvv);
return CHANGED;

View File

@ -94,7 +94,7 @@ public class DefaultFixedPointSystem<T extends IVariable<T>> implements IFixedPo
@Override
@SuppressWarnings({ "unchecked", "rawtypes" })
public Iterator<AbstractStatement> getStatements() {
return new FilterIterator(graph.iterator(), x -> x instanceof AbstractStatement);
return new FilterIterator(graph.iterator(), AbstractStatement.class::isInstance);
}
@Override

View File

@ -46,7 +46,7 @@ public class IteratorUtil {
public static <T, S extends T> Iterator<S> filter(Iterator<T> iterator, final Class<S> cls) {
return new MapIterator<>(
new FilterIterator<>(iterator, o -> cls.isInstance(o)),
new FilterIterator<>(iterator, cls::isInstance),
new Function<T,S>() {
@SuppressWarnings("unchecked")
@Override

View File

@ -283,7 +283,7 @@ public class Util {
* @return <code>true</code> if the sets intersect; <code>false</code> otherwise
*/
public static <T> boolean intersecting(final Set<T> s1, final Set<T> s2) {
return forSome(s1, obj -> s2.contains(obj));
return forSome(s1, s2::contains);
}
/**

View File

@ -234,11 +234,11 @@ public class GraphSlicer {
}
private void setPredNodes(E N) {
preds.put(N, getConnected(N, object -> G.getPredNodes(object)));
preds.put(N, getConnected(N, G::getPredNodes));
}
private void setSuccNodes(E N) {
succs.put(N, getConnected(N, object -> G.getSuccNodes(object)));
succs.put(N, getConnected(N, G::getSuccNodes));
}
@Override

View File

@ -83,7 +83,7 @@ public class BFSPathFinder<T> {
if (!G.containsNode(src)) {
throw new IllegalArgumentException("src is not in graph " + src);
}
this.filter = o -> target.equals(o);
this.filter = target::equals;
}
/**
@ -103,7 +103,7 @@ public class BFSPathFinder<T> {
this.G = G;
this.roots = new NonNullSingletonIterator<>(src);
this.filter = o -> ts.contains(o);
this.filter = ts::contains;
}
/**
@ -120,7 +120,7 @@ public class BFSPathFinder<T> {
}
this.G = G;
this.roots = sources;
this.filter = o -> target.equals(o);
this.filter = target::equals;
}
/**