@@ -93,9 +93,8 @@ abstract private class ChildMapping extends AstNode {
9393 */
9494 abstract predicate relevantChild ( AstNode child ) ;
9595
96- pragma [ nomagic]
97- abstract predicate reachesBasicBlock ( AstNode child , CfgNode cfn , BasicBlock bb ) ;
98-
96+ // pragma[nomagic]
97+ // abstract predicate reachesBasicBlock(AstNode child, CfgNode cfn, BasicBlock bb);
9998 /**
10099 * Holds if there is a control-flow path from `cfn` to `cfnChild`, where `cfn`
101100 * is a control-flow node for this expression, and `cfnChild` is a control-flow
@@ -105,7 +104,9 @@ abstract private class ChildMapping extends AstNode {
105104 */
106105 cached
107106 predicate hasCfgChild ( AstNode child , CfgNode cfn , CfgNode cfnChild ) {
108- this .reachesBasicBlock ( child , cfn , cfnChild .getBasicBlock ( ) ) and
107+ this .relevantChild ( child ) and
108+ cfn .injects ( this ) and
109+ // this.reachesBasicBlock(child, cfn, cfnChild.getBasicBlock()) and
109110 cfnChild .injects ( desugar ( child ) )
110111 }
111112}
@@ -114,38 +115,37 @@ abstract private class ChildMapping extends AstNode {
114115 * A class for mapping parent-child AST nodes to parent-child CFG nodes.
115116 */
116117abstract private class ExprChildMapping extends Expr , ChildMapping {
117- pragma [ nomagic]
118- override predicate reachesBasicBlock ( AstNode child , CfgNode cfn , BasicBlock bb ) {
119- this .relevantChild ( child ) and
120- cfn = this .getAControlFlowNode ( ) and
121- bb .getANode ( ) = cfn
122- or
123- exists ( BasicBlock mid |
124- this .reachesBasicBlock ( child , cfn , mid ) and
125- bb = mid .getAPredecessor ( ) and
126- not mid .getANode ( ) .getAstNode ( ) = child
127- )
128- }
118+ // pragma[nomagic]
119+ // override predicate reachesBasicBlock(AstNode child, CfgNode cfn, BasicBlock bb) {
120+ // this.relevantChild(child) and
121+ // cfn = this.getAControlFlowNode() and
122+ // bb.getANode() = cfn
123+ // or
124+ // exists(BasicBlock mid |
125+ // this.reachesBasicBlock(child, cfn, mid) and
126+ // bb = mid.getAPredecessor() and
127+ // not mid.getANode().getAstNode() = child
128+ // )
129+ // }
129130}
130131
131132/**
132133 * A class for mapping parent-child AST nodes to parent-child CFG nodes.
133134 */
134135abstract private class NonExprChildMapping extends ChildMapping {
135136 NonExprChildMapping ( ) { not this instanceof Expr }
136-
137- pragma [ nomagic]
138- override predicate reachesBasicBlock ( AstNode child , CfgNode cfn , BasicBlock bb ) {
139- this .relevantChild ( child ) and
140- cfn .injects ( this ) and
141- bb .getANode ( ) = cfn
142- or
143- exists ( BasicBlock mid |
144- this .reachesBasicBlock ( child , cfn , mid ) and
145- bb = mid .getASuccessor ( ) and
146- not mid .getANode ( ) .getAstNode ( ) = child
147- )
148- }
137+ // pragma[nomagic]
138+ // override predicate reachesBasicBlock(AstNode child, CfgNode cfn, BasicBlock bb) {
139+ // this.relevantChild(child) and
140+ // cfn.injects(this) and
141+ // bb.getANode() = cfn
142+ // or
143+ // exists(BasicBlock mid |
144+ // this.reachesBasicBlock(child, cfn, mid) and
145+ // bb = mid.getASuccessor() and
146+ // not mid.getANode().getAstNode() = child
147+ // )
148+ // }
149149}
150150
151151/** Provides classes for control-flow nodes that wrap AST expressions. */
0 commit comments