Support switch cases with binding patterns

This commit is contained in:
Chris Smowton
2023-10-18 18:40:47 +01:00
parent fefc02d650
commit f4b45fa511
8 changed files with 279 additions and 52 deletions

View File

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