mirror of
https://github.com/github/codeql.git
synced 2026-05-25 00:27:09 +02:00
PS: Lift automatic variables to the cfg and dataflow layers.
This commit is contained in:
@@ -1061,6 +1061,20 @@ module ExprNodes {
|
||||
|
||||
ExprCfgNode getAnOperand() { e.hasCfgChild(e.getAnOperand(), this, result) }
|
||||
}
|
||||
|
||||
private class AutomaticVariableChildMapping extends ExprChildMapping, AutomaticVariable {
|
||||
override predicate relevantChild(Ast child) { none() }
|
||||
}
|
||||
|
||||
class AutomaticVariableCfgNode extends ExprCfgNode {
|
||||
override string getAPrimaryQlClass() { result = "AutomaticVariableCfgNode" }
|
||||
|
||||
override AutomaticVariableChildMapping e;
|
||||
|
||||
override AutomaticVariable getExpr() { result = e }
|
||||
|
||||
string getName() { result = e.getName() }
|
||||
}
|
||||
}
|
||||
|
||||
module StmtNodes {
|
||||
|
||||
@@ -555,3 +555,12 @@ class QualifiedTypeNameNode extends TypeNameNode {
|
||||
|
||||
final override CfgNodes::ExprNodes::QualifiedTypeNameExprCfgNode getExprNode() { result = n }
|
||||
}
|
||||
|
||||
/** A use of an automatic variable, viewed as a node in a data flow graph. */
|
||||
class AutomaticVariableNode extends ExprNode {
|
||||
override CfgNodes::ExprNodes::AutomaticVariableCfgNode n;
|
||||
|
||||
final override CfgNodes::ExprNodes::AutomaticVariableCfgNode getExprNode() { result = n }
|
||||
|
||||
string getName() { result = n.getName() }
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user