本文整理汇总了Java中com.google.javascript.jscomp.graph.FixedPointGraphTraversal类的典型用法代码示例。如果您正苦于以下问题:Java FixedPointGraphTraversal类的具体用法?Java FixedPointGraphTraversal怎么用?Java FixedPointGraphTraversal使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
FixedPointGraphTraversal类属于com.google.javascript.jscomp.graph包,在下文中一共展示了FixedPointGraphTraversal类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: testGraph8
import com.google.javascript.jscomp.graph.FixedPointGraphTraversal; //导入依赖的package包/类
public void testGraph8() {
maxChange = 2;
traversal.computeFixedPoint(graph, A);
try {
traversal = new FixedPointGraphTraversal<Counter, String>(
new EdgeCallback<Counter, String>() {
public boolean traverseEdge(Counter source, String e, Counter dest) {
return true;
}
});
traversal.computeFixedPoint(graph, A);
fail("Expecting Error: " +
FixedPointGraphTraversal.NON_HALTING_ERROR_MSG);
} catch (IllegalStateException e) {
assertEquals(e.getMessage(),
FixedPointGraphTraversal.NON_HALTING_ERROR_MSG);
}
}
示例2: testGraph8
import com.google.javascript.jscomp.graph.FixedPointGraphTraversal; //导入依赖的package包/类
public void testGraph8() {
maxChange = 2;
traversal.computeFixedPoint(graph, A);
try {
traversal = new FixedPointGraphTraversal<Counter, String>(
new EdgeCallback<Counter, String>() {
@Override
public boolean traverseEdge(Counter source, String e, Counter dest) {
return true;
}
});
traversal.computeFixedPoint(graph, A);
fail("Expecting Error: " +
FixedPointGraphTraversal.NON_HALTING_ERROR_MSG);
} catch (IllegalStateException e) {
assertEquals(e.getMessage(),
FixedPointGraphTraversal.NON_HALTING_ERROR_MSG);
}
}
示例3: testGraph8
import com.google.javascript.jscomp.graph.FixedPointGraphTraversal; //导入依赖的package包/类
public void testGraph8() {
maxChange = 2;
traversal.computeFixedPoint(graph, A);
try {
traversal = new FixedPointGraphTraversal<>(
new EdgeCallback<Counter, String>() {
@Override
public boolean traverseEdge(Counter source, String e, Counter dest) {
return true;
}
});
traversal.computeFixedPoint(graph, A);
fail("Expecting Error: " +
FixedPointGraphTraversal.NON_HALTING_ERROR_MSG);
} catch (IllegalStateException e) {
assertThat(e).hasMessageThat().isEqualTo(FixedPointGraphTraversal.NON_HALTING_ERROR_MSG);
}
}
示例4: process
import com.google.javascript.jscomp.graph.FixedPointGraphTraversal; //导入依赖的package包/类
public void process(Node externRoot, Node root) {
if (!canModifyExterns) {
NodeTraversal.traverse(compiler, externRoot,
new ProcessExternProperties());
}
NodeTraversal.traverse(compiler, root, new ProcessProperties());
FixedPointGraphTraversal<NameInfo, JSModule> t =
FixedPointGraphTraversal.newTraversal(new PropagateReferences());
t.computeFixedPoint(symbolGraph,
Sets.newHashSet(externNode, globalNode));
}
示例5: calculateReferences
import com.google.javascript.jscomp.graph.FixedPointGraphTraversal; //导入依赖的package包/类
/**
* Propagate "referenced" property down the graph.
*/
private void calculateReferences() {
JsName window = getName(WINDOW, true);
window.referenced = true;
JsName function = getName(FUNCTION, true);
function.referenced = true;
// Propagate "referenced" property to a fixed point.
FixedPointGraphTraversal.newTraversal(new ReferencePropagationCallback())
.computeFixedPoint(referenceGraph);
}
示例6: process
import com.google.javascript.jscomp.graph.FixedPointGraphTraversal; //导入依赖的package包/类
@Override
public void process(Node externs, Node root) {
NameReferenceGraphConstruction gc =
new NameReferenceGraphConstruction(compiler);
gc.process(externs, root);
graph = gc.getNameReferenceGraph();
FixedPointGraphTraversal<Name, Reference> t =
FixedPointGraphTraversal.newTraversal(new PropagateReferences());
getInfo(graph.MAIN).markReference(null);
t.computeFixedPoint(graph, Sets.newHashSet(graph.MAIN));
}
示例7: process
import com.google.javascript.jscomp.graph.FixedPointGraphTraversal; //导入依赖的package包/类
@Override
public void process(Node externRoot, Node root) {
if (!canModifyExterns) {
NodeTraversal.traverse(compiler, externRoot,
new ProcessExternProperties());
}
NodeTraversal.traverse(compiler, root, new ProcessProperties());
FixedPointGraphTraversal<NameInfo, JSModule> t =
FixedPointGraphTraversal.newTraversal(new PropagateReferences());
t.computeFixedPoint(symbolGraph,
Sets.newHashSet(externNode, globalNode));
}
示例8: process
import com.google.javascript.jscomp.graph.FixedPointGraphTraversal; //导入依赖的package包/类
@Override
public void process(Node externRoot, Node root) {
checkState(compiler.getLifeCycleStage().isNormalized());
if (!canModifyExterns) {
NodeTraversal.traverseEs6(compiler, externRoot,
new ProcessExternProperties());
}
NodeTraversal.traverseEs6(compiler, root, new ProcessProperties());
FixedPointGraphTraversal<NameInfo, JSModule> t =
FixedPointGraphTraversal.newTraversal(new PropagateReferences());
t.computeFixedPoint(symbolGraph,
ImmutableSet.of(externNode, globalNode));
}
示例9: propagateSideEffects
import com.google.javascript.jscomp.graph.FixedPointGraphTraversal; //导入依赖的package包/类
/**
* Propagate side effect information by building a graph based on call site information stored in
* FunctionInformation and the NameBasedDefinitionProvider and then running GraphReachability to
* determine the set of functions that have side effects.
*/
private void propagateSideEffects() {
// Propagate side effect information to a fixed point.
FixedPointGraphTraversal.newTraversal(
new EdgeCallback<FunctionInformation, CallSitePropagationInfo>() {
@Override
public boolean traverseEdge(
FunctionInformation source,
CallSitePropagationInfo edge,
FunctionInformation destination) {
return edge.propagate(source, destination);
}
})
.computeFixedPoint(sideEffectGraph);
}
示例10: process
import com.google.javascript.jscomp.graph.FixedPointGraphTraversal; //导入依赖的package包/类
@Override
public void process(Node externRoot, Node root) {
if (!canModifyExterns) {
NodeTraversal.traverse(compiler, externRoot,
new ProcessExternProperties());
}
NodeTraversal.traverse(compiler, root, new ProcessProperties());
FixedPointGraphTraversal<NameInfo, JSModule> t =
FixedPointGraphTraversal.newTraversal(new PropagateReferences());
t.computeFixedPoint(symbolGraph,
ImmutableSet.of(externNode, globalNode));
}
示例11: process
import com.google.javascript.jscomp.graph.FixedPointGraphTraversal; //导入依赖的package包/类
@Override
public void process(Node externs, Node root) {
NameReferenceGraphConstruction gc =
new NameReferenceGraphConstruction(compiler);
gc.process(externs, root);
graph = gc.getNameReferenceGraph();
FixedPointGraphTraversal<Name, Reference> t =
FixedPointGraphTraversal.newTraversal(new PropagateReferences());
getInfo(graph.main).markReference(null);
t.computeFixedPoint(graph, Sets.newHashSet(graph.main));
}
示例12: testGetDirectedGraph_forwardOnForward
import com.google.javascript.jscomp.graph.FixedPointGraphTraversal; //导入依赖的package包/类
/**
* Test getting a forward directed graph on a forward call graph
* and propagating over it.
*/
public void testGetDirectedGraph_forwardOnForward() {
// For this test we create a simple callback that when, applied until a
// fixedpoint, computes whether a function is reachable from an initial
// set of "root" nodes.
String source =
"function A(){B()};\n" +
"function B(){C();D()}\n" +
"function C(){B()};\n" +
"function D(){};\n" +
"function E(){C()};\n" +
"function X(){Y()};\n" +
"function Y(){Z()};\n" +
"function Z(){};" +
"B();\n";
CallGraph callgraph = compileAndRunForward(source);
final Set<Function> reachableFunctions = Sets.newHashSet();
// We assume the main function and X are our roots
reachableFunctions.add(callgraph.getMainFunction());
reachableFunctions.add(callgraph.getUniqueFunctionWithName("X"));
// Propagate reachability from callers to callees
EdgeCallback<CallGraph.Function, CallGraph.Callsite> edgeCallback =
new EdgeCallback<CallGraph.Function, CallGraph.Callsite>() {
@Override
public boolean traverseEdge(Function caller, Callsite callsite,
Function callee) {
boolean changed;
if (reachableFunctions.contains(caller)) {
changed = reachableFunctions.add(callee); // Returns true if added
} else {
changed = false;
}
return changed;
}
};
FixedPointGraphTraversal.newTraversal(edgeCallback)
.computeFixedPoint(callgraph.getForwardDirectedGraph());
// We expect B, C, D, X, Y, Z and the main function should be reachable.
// A and E should not be reachable.
assertEquals(7, reachableFunctions.size());
assertTrue(reachableFunctions.contains(
callgraph.getUniqueFunctionWithName("B")));
assertTrue(reachableFunctions.contains(
callgraph.getUniqueFunctionWithName("C")));
assertTrue(reachableFunctions.contains(
callgraph.getUniqueFunctionWithName("D")));
assertTrue(reachableFunctions.contains(
callgraph.getUniqueFunctionWithName("X")));
assertTrue(reachableFunctions.contains(
callgraph.getUniqueFunctionWithName("Y")));
assertTrue(reachableFunctions.contains(
callgraph.getUniqueFunctionWithName("Z")));
assertTrue(reachableFunctions.contains(
callgraph.getMainFunction()));
assertFalse(reachableFunctions.contains(
callgraph.getUniqueFunctionWithName("A")));
assertFalse(reachableFunctions.contains(
callgraph.getUniqueFunctionWithName("E")));
}
示例13: testGetDirectedGraph_forwardOnBackward
import com.google.javascript.jscomp.graph.FixedPointGraphTraversal; //导入依赖的package包/类
/**
* Test getting a backward directed graph on a forward call graph
* and propagating over it.
*/
public void testGetDirectedGraph_forwardOnBackward() {
// For this test we create a simple callback that when, applied until a
// fixedpoint, computes whether a function is reachable from an initial
// set of "root" nodes.
String source =
"function A(){B()};\n" +
"function B(){C();D()}\n" +
"function C(){B()};\n" +
"function D(){};\n" +
"function E(){C()};\n" +
"function X(){Y()};\n" +
"function Y(){Z()};\n" +
"function Z(){};" +
"B();\n";
CallGraph callgraph = compileAndRunBackward(source);
final Set<Function> reachableFunctions = Sets.newHashSet();
// We assume the main function and X are our roots
reachableFunctions.add(callgraph.getMainFunction());
reachableFunctions.add(callgraph.getUniqueFunctionWithName("X"));
// Propagate reachability from callers to callees
EdgeCallback<CallGraph.Function, CallGraph.Callsite> edgeCallback =
new EdgeCallback<CallGraph.Function, CallGraph.Callsite>() {
@Override
public boolean traverseEdge(Function caller, Callsite callsite,
Function callee) {
boolean changed;
if (reachableFunctions.contains(caller)) {
changed = reachableFunctions.add(callee); // Returns true if added
} else {
changed = false;
}
return changed;
}
};
FixedPointGraphTraversal.newTraversal(edgeCallback)
.computeFixedPoint(callgraph.getForwardDirectedGraph());
// We expect B, C, D, X, Y, Z and the main function should be reachable.
// A and E should not be reachable.
assertEquals(7, reachableFunctions.size());
assertTrue(reachableFunctions.contains(
callgraph.getUniqueFunctionWithName("B")));
assertTrue(reachableFunctions.contains(
callgraph.getUniqueFunctionWithName("C")));
assertTrue(reachableFunctions.contains(
callgraph.getUniqueFunctionWithName("D")));
assertTrue(reachableFunctions.contains(
callgraph.getUniqueFunctionWithName("X")));
assertTrue(reachableFunctions.contains(
callgraph.getUniqueFunctionWithName("Y")));
assertTrue(reachableFunctions.contains(
callgraph.getUniqueFunctionWithName("Z")));
assertTrue(reachableFunctions.contains(
callgraph.getMainFunction()));
assertFalse(reachableFunctions.contains(
callgraph.getUniqueFunctionWithName("A")));
assertFalse(reachableFunctions.contains(
callgraph.getUniqueFunctionWithName("E")));
}
示例14: testGetDirectedGraph_forwardOnForward
import com.google.javascript.jscomp.graph.FixedPointGraphTraversal; //导入依赖的package包/类
/**
* Test getting a forward directed graph on a forward call graph
* and propagating over it.
*/
public void testGetDirectedGraph_forwardOnForward() {
// For this test we create a simple callback that, when applied until a
// fixedpoint, computes whether a function is reachable from an initial
// set of "root" nodes.
String source =
"function A(){B()};\n" +
"function B(){C();D()}\n" +
"function C(){B()};\n" +
"function D(){};\n" +
"function E(){C()};\n" +
"function X(){Y()};\n" +
"function Y(){Z()};\n" +
"function Z(){};" +
"B();\n";
CallGraph callgraph = compileAndRunForward(source);
final Set<Function> reachableFunctions = Sets.newHashSet();
// We assume the main function and X are our roots
reachableFunctions.add(callgraph.getMainFunction());
reachableFunctions.add(callgraph.getUniqueFunctionWithName("X"));
// Propagate reachability from callers to callees
EdgeCallback<CallGraph.Function, CallGraph.Callsite> edgeCallback =
new EdgeCallback<CallGraph.Function, CallGraph.Callsite>() {
@Override
public boolean traverseEdge(Function caller, Callsite callsite,
Function callee) {
boolean changed;
if (reachableFunctions.contains(caller)) {
changed = reachableFunctions.add(callee); // Returns true if added
} else {
changed = false;
}
return changed;
}
};
FixedPointGraphTraversal.newTraversal(edgeCallback)
.computeFixedPoint(callgraph.getForwardDirectedGraph());
// We expect B, C, D, X, Y, Z and the main function should be reachable.
// A and E should not be reachable.
assertEquals(7, reachableFunctions.size());
assertTrue(reachableFunctions.contains(
callgraph.getUniqueFunctionWithName("B")));
assertTrue(reachableFunctions.contains(
callgraph.getUniqueFunctionWithName("C")));
assertTrue(reachableFunctions.contains(
callgraph.getUniqueFunctionWithName("D")));
assertTrue(reachableFunctions.contains(
callgraph.getUniqueFunctionWithName("X")));
assertTrue(reachableFunctions.contains(
callgraph.getUniqueFunctionWithName("Y")));
assertTrue(reachableFunctions.contains(
callgraph.getUniqueFunctionWithName("Z")));
assertTrue(reachableFunctions.contains(
callgraph.getMainFunction()));
assertFalse(reachableFunctions.contains(
callgraph.getUniqueFunctionWithName("A")));
assertFalse(reachableFunctions.contains(
callgraph.getUniqueFunctionWithName("E")));
}
示例15: testGetDirectedGraph_forwardOnBackward
import com.google.javascript.jscomp.graph.FixedPointGraphTraversal; //导入依赖的package包/类
/**
* Test getting a backward directed graph on a forward call graph
* and propagating over it.
*/
public void testGetDirectedGraph_forwardOnBackward() {
// For this test we create a simple callback that, when applied until a
// fixedpoint, computes whether a function is reachable from an initial
// set of "root" nodes.
String source =
"function A(){B()};\n" +
"function B(){C();D()}\n" +
"function C(){B()};\n" +
"function D(){};\n" +
"function E(){C()};\n" +
"function X(){Y()};\n" +
"function Y(){Z()};\n" +
"function Z(){};" +
"B();\n";
CallGraph callgraph = compileAndRunBackward(source);
final Set<Function> reachableFunctions = Sets.newHashSet();
// We assume the main function and X are our roots
reachableFunctions.add(callgraph.getMainFunction());
reachableFunctions.add(callgraph.getUniqueFunctionWithName("X"));
// Propagate reachability from callers to callees
EdgeCallback<CallGraph.Function, CallGraph.Callsite> edgeCallback =
new EdgeCallback<CallGraph.Function, CallGraph.Callsite>() {
@Override
public boolean traverseEdge(Function caller, Callsite callsite,
Function callee) {
boolean changed;
if (reachableFunctions.contains(caller)) {
changed = reachableFunctions.add(callee); // Returns true if added
} else {
changed = false;
}
return changed;
}
};
FixedPointGraphTraversal.newTraversal(edgeCallback)
.computeFixedPoint(callgraph.getForwardDirectedGraph());
// We expect B, C, D, X, Y, Z and the main function should be reachable.
// A and E should not be reachable.
assertEquals(7, reachableFunctions.size());
assertTrue(reachableFunctions.contains(
callgraph.getUniqueFunctionWithName("B")));
assertTrue(reachableFunctions.contains(
callgraph.getUniqueFunctionWithName("C")));
assertTrue(reachableFunctions.contains(
callgraph.getUniqueFunctionWithName("D")));
assertTrue(reachableFunctions.contains(
callgraph.getUniqueFunctionWithName("X")));
assertTrue(reachableFunctions.contains(
callgraph.getUniqueFunctionWithName("Y")));
assertTrue(reachableFunctions.contains(
callgraph.getUniqueFunctionWithName("Z")));
assertTrue(reachableFunctions.contains(
callgraph.getMainFunction()));
assertFalse(reachableFunctions.contains(
callgraph.getUniqueFunctionWithName("A")));
assertFalse(reachableFunctions.contains(
callgraph.getUniqueFunctionWithName("E")));
}