@@ -61,7 +61,7 @@ module Ssa {
6161 * to the underlying variable.
6262 */
6363 cached
64- predicate assigns ( ExprCfgNode value ) {
64+ predicate assigns ( CfgNode value ) {
6565 exists (
6666 AssignExpr a , BasicBlock bb , int i // TODO: use CFG node for assignment expr
6767 |
@@ -70,15 +70,21 @@ module Ssa {
7070 value .getNode ( ) .asAstNode ( ) = a .getSource ( )
7171 )
7272 or
73- exists ( VarDecl var , BasicBlock bb , int blockIndex , PatternBindingDecl pbd |
73+ exists ( VarDecl var , BasicBlock bb , int blockIndex , PatternBindingDecl pbd , Expr init |
7474 this .definesAt ( var , bb , blockIndex ) and
7575 pbd .getAPattern ( ) = bb .getNode ( blockIndex ) .getNode ( ) .asAstNode ( ) and
76- value .getNode ( ) .asAstNode ( ) = var .getParentInitializer ( )
76+ init = var .getParentInitializer ( )
77+ |
78+ value .getNode ( ) .asAstNode ( ) = init
79+ or
80+ // TODO: We should probably enumerate more cfg nodes here.
81+ value .( PropertyGetterCfgNode ) .getRef ( ) = init
7782 )
7883 }
7984
8085 cached
8186 predicate isInoutDef ( ExprCfgNode argument ) {
87+ // TODO: This should probably not be only `ExprCfgNode`s.
8288 exists (
8389 ApplyExpr c , BasicBlock bb , int blockIndex , int argIndex , VarDecl v , InOutExpr argExpr // TODO: use CFG node for assignment expr
8490 |
0 commit comments