|
21 | 21 | import javascript |
22 | 22 | private import internal.CallGraphs |
23 | 23 | private import internal.FlowSteps as FlowSteps |
| 24 | +private import internal.DataFlowNode |
24 | 25 |
|
25 | 26 | module DataFlow { |
26 | | - cached |
27 | | - private newtype TNode = |
28 | | - TValueNode(AST::ValueNode nd) or |
29 | | - TSsaDefNode(SsaDefinition d) or |
30 | | - TCapturedVariableNode(LocalVariable v) { v.isCaptured() } or |
31 | | - TPropNode(@property p) or |
32 | | - TRestPatternNode(DestructuringPattern dp, Expr rest) { rest = dp.getRest() } or |
33 | | - TDestructuringPatternNode(DestructuringPattern dp) or |
34 | | - TElementPatternNode(ArrayPattern ap, Expr p) { p = ap.getElement(_) } or |
35 | | - TElementNode(ArrayExpr arr, Expr e) { e = arr.getAnElement() } or |
36 | | - TReflectiveCallNode(MethodCallExpr ce, string kind) { |
37 | | - ce.getMethodName() = kind and |
38 | | - (kind = "call" or kind = "apply") |
39 | | - } or |
40 | | - TThisNode(StmtContainer f) { f.(Function).getThisBinder() = f or f instanceof TopLevel } or |
41 | | - TUnusedParameterNode(SimpleParameter p) { not exists(SSA::definition(p)) } or |
42 | | - TDestructuredModuleImportNode(ImportDeclaration decl) { |
43 | | - exists(decl.getASpecifier().getImportedName()) |
44 | | - } or |
45 | | - THtmlAttributeNode(HTML::Attribute attr) or |
46 | | - TExceptionalFunctionReturnNode(Function f) or |
47 | | - TExceptionalInvocationReturnNode(InvokeExpr e) or |
48 | | - TGlobalAccessPathRoot() |
49 | | - |
50 | 27 | /** |
51 | 28 | * A node in the data flow graph. |
52 | 29 | */ |
|
0 commit comments