Swift: Untangle the confusion between 'getParameter' and 'asParameter'.

This commit is contained in:
Mathias Vorreiter Pedersen
2023-10-25 14:44:09 +01:00
parent 78e08cf63c
commit 951b6beeb1
3 changed files with 13 additions and 13 deletions

View File

@@ -163,9 +163,9 @@ private module Cached {
private predicate localSsaFlowStepUseUse(Ssa::Definition def, Node nodeFrom, Node nodeTo) {
def.adjacentReadPair(nodeFrom.getCfgNode(), nodeTo.getCfgNode()) and
(
nodeTo instanceof InoutReturnNode
nodeTo instanceof InoutReturnNodeImpl
implies
nodeTo.(InoutReturnNode).getParameter() = def.getSourceVariable().asVarDecl()
nodeTo.(InoutReturnNodeImpl).getParameter() = def.getSourceVariable().asVarDecl()
)
}
@@ -180,7 +180,7 @@ private module Cached {
* Holds if `nodeFrom` is a parameter node, and `nodeTo` is a corresponding SSA node.
*/
private predicate localFlowSsaParamInput(Node nodeFrom, Node nodeTo) {
nodeTo = getParameterDefNode(nodeFrom.(ParameterNode).getParameter())
nodeTo = getParameterDefNode(nodeFrom.asParameter())
}
private predicate localFlowStepCommon(Node nodeFrom, Node nodeTo) {
@@ -193,9 +193,9 @@ private module Cached {
nodeFrom.asDefinition() = def and
nodeTo.getCfgNode() = def.getAFirstRead() and
(
nodeTo instanceof InoutReturnNode
nodeTo instanceof InoutReturnNodeImpl
implies
nodeTo.(InoutReturnNode).getParameter() = def.getSourceVariable().asVarDecl()
nodeTo.(InoutReturnNodeImpl).getParameter() = def.getSourceVariable().asVarDecl()
)
or
// use-use flow
@@ -394,7 +394,7 @@ private module ParameterNodes {
predicate isParameterOf(DataFlowCallable c, ParameterPosition pos) { none() }
/** Gets the parameter associated with this node, if any. */
override ParamDecl getParameter() { none() }
ParamDecl getParameter() { none() }
}
class SourceParameterNode extends ParameterNodeImpl, TSourceParameterNode {
@@ -700,7 +700,7 @@ private module ReturnNodes {
result = TDataFlowFunc(param.getDeclaringFunction())
}
override ParamDecl getParameter() { result = param }
ParamDecl getParameter() { result = param }
override Location getLocationImpl() { result = exit.getLocation() }
@@ -952,7 +952,7 @@ private CaptureFlow::ClosureNode asClosureNode(Node n) {
result.(CaptureFlow::ExprPostUpdateNode).getExpr() =
n.(PostUpdateNode).getPreUpdateNode().asExpr()
or
result.(CaptureFlow::ParameterNode).getParameter() = n.getParameter()
result.(CaptureFlow::ParameterNode).getParameter() = n.asParameter()
or
result.(CaptureFlow::ThisParameterNode).getCallable() = n.(ClosureSelfParameterNode).getClosure()
or

View File

@@ -55,7 +55,7 @@ class Node extends TNode {
/**
* Gets the parameter that corresponds to this node, if any.
*/
ParamDecl getParameter() { none() }
ParamDecl asParameter() { none() }
}
/**
@@ -101,7 +101,7 @@ class ParameterNode extends Node instanceof ParameterNodeImpl {
result = this.(ParameterNodeImpl).getEnclosingCallable()
}
override ParamDecl getParameter() { result = this.(ParameterNodeImpl).getParameter() }
override ParamDecl asParameter() { result = this.(ParameterNodeImpl).getParameter() }
}
/**
@@ -156,7 +156,7 @@ ExprNode exprNode(DataFlowExpr e) { result.asExpr() = e }
/**
* Gets the node corresponding to the value of parameter `p` at function entry.
*/
ParameterNode parameterNode(ParamDecl p) { result.getParameter() = p }
ParameterNode parameterNode(ParamDecl p) { result.asParameter() = p }
/**
* Holds if data flows from `nodeFrom` to `nodeTo` in exactly one local

View File

@@ -66,7 +66,7 @@ private class WKNavigationDelegateSource extends RemoteFlowSource {
] and
p.getDeclaringFunction() = f and
p.getIndex() = 1 and
this.(DataFlow::ParameterNode).getParameter() = p
this.asParameter() = p
)
}
@@ -173,7 +173,7 @@ private class JsExportedSource extends RemoteFlowSource {
base.getEnclosingDecl().asNominalTypeDecl() instanceof JsExportedProto and
adopter.getEnclosingDecl().asNominalTypeDecl() instanceof JsExportedType
|
this.(DataFlow::ParameterNode).getParameter().getDeclaringFunction() = adopter and
this.asParameter().getDeclaringFunction() = adopter and
pragma[only_bind_out](adopter.getName()) = pragma[only_bind_out](base.getName())
)
or