Skip to content

Commit 7f27937

Browse files
committed
Pull out post-update node logic into predicate
1 parent 0c54ee8 commit 7f27937

File tree

1 file changed

+14
-12
lines changed

1 file changed

+14
-12
lines changed

go/ql/lib/semmle/go/dataflow/internal/DataFlowNodes.qll

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -807,22 +807,24 @@ module Public {
807807
abstract Node getPreUpdateNode();
808808
}
809809

810+
predicate hasPostUpdateNode(Node preupd) {
811+
preupd instanceof AddressOperationNode
812+
or
813+
preupd = any(AddressOperationNode addr).getOperand()
814+
or
815+
preupd = any(PointerDereferenceNode deref).getOperand()
816+
or
817+
preupd = getAWrittenNode()
818+
or
819+
preupd = any(ArgumentNode arg).getACorrespondingSyntacticArgument() and
820+
mutableType(preupd.getType())
821+
}
822+
810823
private class DefaultPostUpdateNode extends PostUpdateNode {
811824
Node preupd;
812825

813826
DefaultPostUpdateNode() {
814-
(
815-
preupd instanceof AddressOperationNode
816-
or
817-
preupd = any(AddressOperationNode addr).getOperand()
818-
or
819-
preupd = any(PointerDereferenceNode deref).getOperand()
820-
or
821-
preupd = getAWrittenNode()
822-
or
823-
preupd = any(ArgumentNode arg).getACorrespondingSyntacticArgument() and
824-
mutableType(preupd.getType())
825-
) and
827+
hasPostUpdateNode(preupd) and
826828
(
827829
preupd = this.(SsaNode).getAUse()
828830
or

0 commit comments

Comments
 (0)