Switch to using VariableAssign for instanceof and switch dataflow

This commit is contained in:
Chris Smowton
2023-11-15 15:59:21 +00:00
parent 176adf4376
commit 3d980b1684
5 changed files with 58 additions and 56 deletions

View File

@@ -167,20 +167,6 @@ private module TypeTrackingSteps {
def.(BaseSsaUpdate).getDefiningExpr().(VariableAssign).getSource() = n1.asExpr()
or
def.(BaseSsaImplicitInit).isParameterDefinition(n1.asParameter())
or
exists(PatternCase pc |
pc.getPattern().asBindingPattern() = def.(BaseSsaUpdate).getDefiningExpr() and
(
pc.getSwitch().getExpr() = n1.asExpr()
or
pc.getSwitchExpr().getExpr() = n1.asExpr()
)
)
or
exists(InstanceOfExpr ioe |
ioe.getPattern().asBindingPattern() = def.(BaseSsaUpdate).getDefiningExpr() and
ioe.getExpr() = n1.asExpr()
)
|
v.getAnUltimateDefinition() = def and
v.getAUse() = n2.asExpr()

View File

@@ -80,20 +80,6 @@ private predicate step(Node n1, Node n2) {
for.getVariable() = def.(BaseSsaUpdate).getDefiningExpr() and
for.getExpr() = n1.asExpr()
)
or
exists(PatternCase pc |
pc.getPattern().asBindingPattern() = def.(BaseSsaUpdate).getDefiningExpr() and
(
pc.getSwitch().getExpr() = n1.asExpr()
or
pc.getSwitchExpr().getExpr() = n1.asExpr()
)
)
or
exists(InstanceOfExpr ioe |
ioe.getPattern().asBindingPattern() = def.(BaseSsaUpdate).getDefiningExpr() and
ioe.getExpr() = n1.asExpr()
)
|
v.getAnUltimateDefinition() = def and
v.getAUse() = n2.asExpr()