mirror of
https://github.com/github/codeql.git
synced 2026-02-23 10:23:41 +01:00
Address comments
This commit is contained in:
@@ -39,11 +39,7 @@ class Statement extends AstNode {
|
||||
class ReturningStatement extends Statement {
|
||||
override ReturningStatement::Range range;
|
||||
|
||||
final override string toString() {
|
||||
not exists(getValue()) and result = range.getStatementName()
|
||||
or
|
||||
result = range.getStatementName() + " " + getValue().toString()
|
||||
}
|
||||
final override string toString() { result = range.toString() }
|
||||
|
||||
/** Gets the returned value, if any. */
|
||||
final Expr getValue() {
|
||||
|
||||
@@ -8,8 +8,6 @@ module Statement {
|
||||
module ReturningStatement {
|
||||
abstract class Range extends Statement::Range {
|
||||
abstract Generated::ArgumentList getArgumentList();
|
||||
|
||||
abstract string getStatementName();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,7 +15,7 @@ module ReturnStmt {
|
||||
class Range extends ReturningStatement::Range, @return {
|
||||
final override Generated::Return generated;
|
||||
|
||||
final override string getStatementName() { result = "return" }
|
||||
final override string toString() { result = "return" }
|
||||
|
||||
final override Generated::ArgumentList getArgumentList() { result = generated.getChild() }
|
||||
}
|
||||
@@ -27,7 +25,7 @@ module BreakStmt {
|
||||
class Range extends ReturningStatement::Range, @break {
|
||||
final override Generated::Break generated;
|
||||
|
||||
final override string getStatementName() { result = "break" }
|
||||
final override string toString() { result = "break" }
|
||||
|
||||
final override Generated::ArgumentList getArgumentList() { result = generated.getChild() }
|
||||
}
|
||||
@@ -37,7 +35,7 @@ module NextStmt {
|
||||
class Range extends ReturningStatement::Range, @next {
|
||||
final override Generated::Next generated;
|
||||
|
||||
final override string getStatementName() { result = "next" }
|
||||
final override string toString() { result = "next" }
|
||||
|
||||
final override Generated::ArgumentList getArgumentList() { result = generated.getChild() }
|
||||
}
|
||||
|
||||
@@ -249,7 +249,7 @@ module ExprNodes {
|
||||
override predicate relevantChild(Expr e) { e = this.getValue() or e = this.getBranch(_) }
|
||||
}
|
||||
|
||||
/** A control-flow node that wraps an `CaseExpr` AST expression. */
|
||||
/** A control-flow node that wraps a `CaseExpr` AST expression. */
|
||||
class CaseExprCfgNode extends ExprCfgNode {
|
||||
override CaseExprChildMapping e;
|
||||
|
||||
@@ -259,16 +259,16 @@ module ExprNodes {
|
||||
final ExprCfgNode getValue() { e.hasCfgChild(e.getValue(), this, result) }
|
||||
|
||||
/**
|
||||
* Gets the `n`th branch of this case expression,
|
||||
* Gets the `n`th branch of this case expression.
|
||||
*/
|
||||
final ExprCfgNode getBranch(int i) { e.hasCfgChild(e.getBranch(i), this, result) }
|
||||
final ExprCfgNode getBranch(int n) { e.hasCfgChild(e.getBranch(n), this, result) }
|
||||
}
|
||||
|
||||
private class ConditionalExprChildMapping extends ExprChildMapping, ConditionalExpr {
|
||||
override predicate relevantChild(Expr e) { e = this.getCondition() or e = this.getBranch(_) }
|
||||
}
|
||||
|
||||
/** A control-flow node that wraps an `ConditionalExpr` AST expression. */
|
||||
/** A control-flow node that wraps a `ConditionalExpr` AST expression. */
|
||||
class ConditionalExprCfgNode extends ExprCfgNode {
|
||||
override ConditionalExprChildMapping e;
|
||||
|
||||
@@ -305,7 +305,7 @@ module ExprNodes {
|
||||
override predicate relevantChild(Expr e) { e = this.getValue() }
|
||||
}
|
||||
|
||||
/** A control-flow node that wraps an `ForExpr` AST expression. */
|
||||
/** A control-flow node that wraps a `ForExpr` AST expression. */
|
||||
class ForExprCfgNode extends ExprCfgNode {
|
||||
override ForExprChildMapping e;
|
||||
|
||||
@@ -315,7 +315,7 @@ module ExprNodes {
|
||||
final ExprCfgNode getValue() { e.hasCfgChild(e.getValue(), this, result) }
|
||||
}
|
||||
|
||||
/** A control-flow node that wraps an `ParenthesizedExpr` AST expression. */
|
||||
/** A control-flow node that wraps a `ParenthesizedExpr` AST expression. */
|
||||
class ParenthesizedExprCfgNode extends ExprSequenceCfgNode {
|
||||
ParenthesizedExprCfgNode() { this.getExpr() instanceof ParenthesizedExpr }
|
||||
}
|
||||
|
||||
@@ -133,20 +133,23 @@ private module Cached {
|
||||
nodeFrom.asExpr() = nodeTo.asExpr().(CfgNodes::ExprNodes::CaseExprCfgNode).getBranch(_)
|
||||
or
|
||||
exists(CfgNodes::ExprCfgNode exprTo, ExprReturnNode n |
|
||||
nodeFrom = n and exprTo = nodeTo.asExpr() and n.getKind() instanceof BreakReturnKind
|
||||
|
|
||||
nodeFrom = n and
|
||||
exprTo = nodeTo.asExpr() and
|
||||
n.getKind() instanceof BreakReturnKind and
|
||||
exprTo.getNode() instanceof Loop and
|
||||
nodeTo.asExpr().getAPredecessor(any(SuccessorTypes::BreakSuccessor s)) = n.getExprNode()
|
||||
)
|
||||
or
|
||||
nodeFrom.asExpr() = nodeTo.(ExprReturnNode).getExprNode().getReturnedValueNode()
|
||||
or
|
||||
exists(CfgNodes::ExprNodes::ForExprCfgNode for | for = nodeTo.asExpr() |
|
||||
exists(SuccessorType s, CfgNode n | not s instanceof SuccessorTypes::BreakSuccessor |
|
||||
for.getAPredecessor(s) = n
|
||||
) and
|
||||
nodeFrom.asExpr() = for.getValue()
|
||||
)
|
||||
nodeTo.asExpr() =
|
||||
any(CfgNodes::ExprNodes::ForExprCfgNode for |
|
||||
exists(SuccessorType s |
|
||||
not s instanceof SuccessorTypes::BreakSuccessor and
|
||||
exists(for.getAPredecessor(s))
|
||||
) and
|
||||
nodeFrom.asExpr() = for.getValue()
|
||||
)
|
||||
}
|
||||
|
||||
cached
|
||||
|
||||
Reference in New Issue
Block a user