Skip to content

Commit 0de6658

Browse files
committed
Rust: Use ParamBase in data flow implementation
1 parent 0d02126 commit 0de6658

File tree

1 file changed

+8
-20
lines changed

1 file changed

+8
-20
lines changed

rust/ql/lib/codeql/rust/dataflow/internal/DataFlowImpl.qll

Lines changed: 8 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ final class ParameterPosition extends TParameterPosition {
8383
result = "self" and this.isSelf()
8484
}
8585

86-
AstNode getParameterIn(ParamList ps) {
86+
ParamBase getParameterIn(ParamList ps) {
8787
result = ps.getParam(this.getPosition())
8888
or
8989
result = ps.getSelfParam() and this.isSelf()
@@ -181,28 +181,17 @@ module Node {
181181
PatCfgNode getPat() { result = n }
182182
}
183183

184-
abstract class ParameterNode extends AstCfgFlowNode { }
185-
186184
/**
187185
* The value of a parameter at function entry, viewed as a node in a data
188186
* flow graph.
189187
*/
190-
final class PositionalParameterNode extends ParameterNode, TParameterNode {
191-
override ParamCfgNode n;
188+
final class ParameterNode extends AstCfgFlowNode, TParameterNode {
189+
override ParamBaseCfgNode n;
192190

193-
PositionalParameterNode() { this = TParameterNode(n) }
191+
ParameterNode() { this = TParameterNode(n) }
194192

195193
/** Gets the parameter in the CFG that this node corresponds to. */
196-
ParamCfgNode getParameter() { result = n }
197-
}
198-
199-
final class SelfParameterNode extends ParameterNode, TSelfParameterNode {
200-
override SelfParamCfgNode n;
201-
202-
SelfParameterNode() { this = TSelfParameterNode(n) }
203-
204-
/** Gets the self parameter in the AST that this node corresponds to. */
205-
SelfParamCfgNode getSelfParameter() { result = n }
194+
ParamBaseCfgNode getParameter() { result = n }
206195
}
207196

208197
final class ArgumentNode extends ExprNode {
@@ -284,7 +273,7 @@ module SsaFlow {
284273
private module SsaFlow = SsaImpl::DataFlowIntegration;
285274

286275
private Node::ParameterNode toParameterNode(ParamCfgNode p) {
287-
result.(Node::PositionalParameterNode).getParameter() = p
276+
result.(Node::ParameterNode).getParameter() = p
288277
}
289278

290279
/** Converts a control flow node into an SSA control flow node. */
@@ -333,7 +322,7 @@ module LocalFlow {
333322
nodeFrom.(Node::AstCfgFlowNode).getCfgNode() =
334323
nodeTo.(Node::SsaNode).getDefinitionExt().(Ssa::WriteDefinition).getControlFlowNode()
335324
or
336-
nodeFrom.(Node::PositionalParameterNode).getParameter().getPat() =
325+
nodeFrom.(Node::ParameterNode).getParameter().(ParamCfgNode).getPat() =
337326
nodeTo.(Node::PatNode).getPat()
338327
or
339328
SsaFlow::localFlowStep(_, nodeFrom, nodeTo, _)
@@ -559,8 +548,7 @@ private module Cached {
559548
cached
560549
newtype TNode =
561550
TExprNode(ExprCfgNode n) or
562-
TParameterNode(ParamCfgNode p) or
563-
TSelfParameterNode(SelfParamCfgNode p) or
551+
TParameterNode(ParamBaseCfgNode p) or
564552
TPatNode(PatCfgNode p) or
565553
TArgumentPostUpdateNode(ExprCfgNode e) { isArgumentForCall(e, _, _) } or
566554
TSsaNode(SsaImpl::DataFlowIntegration::SsaNode node)

0 commit comments

Comments
 (0)