mirror of
https://github.com/github/codeql.git
synced 2026-02-20 17:03:41 +01:00
AST: add redo, retry, empty-statement
This commit is contained in:
@@ -25,6 +25,15 @@ class Stmt extends AstNode {
|
||||
Callable getEnclosingCallable() { result = this.getCfgScope() }
|
||||
}
|
||||
|
||||
/**
|
||||
* An empty statement (`;`).
|
||||
*/
|
||||
class EmptyStmt extends Stmt, @token_empty_statement {
|
||||
final override EmptyStmt::Range range;
|
||||
|
||||
final override string getAPrimaryQlClass() { result = "EmptyStmt" }
|
||||
}
|
||||
|
||||
/**
|
||||
* A statement that may return a value: `return`, `break` and `next`.
|
||||
*
|
||||
@@ -82,3 +91,27 @@ class NextStmt extends ReturningStmt, @next {
|
||||
|
||||
final override string getAPrimaryQlClass() { result = "NextStmt" }
|
||||
}
|
||||
|
||||
/**
|
||||
* A `redo` statement.
|
||||
* ```rb
|
||||
* redo
|
||||
* ```
|
||||
*/
|
||||
class RedoStmt extends Stmt, @redo {
|
||||
final override RedoStmt::Range range;
|
||||
|
||||
final override string getAPrimaryQlClass() { result = "RedoStmt" }
|
||||
}
|
||||
|
||||
/**
|
||||
* A `retry` statement.
|
||||
* ```rb
|
||||
* retry
|
||||
* ```
|
||||
*/
|
||||
class RetryStmt extends Stmt, @retry {
|
||||
final override RetryStmt::Range range;
|
||||
|
||||
final override string getAPrimaryQlClass() { result = "RetryStmt" }
|
||||
}
|
||||
|
||||
@@ -51,10 +51,6 @@ module AstNode {
|
||||
or
|
||||
this instanceof Generated::Superclass
|
||||
or
|
||||
this instanceof Generated::EmptyStatement
|
||||
or
|
||||
this instanceof Generated::Redo
|
||||
or
|
||||
this instanceof Generated::Hash
|
||||
or
|
||||
this instanceof Generated::Array
|
||||
|
||||
@@ -6,6 +6,14 @@ module Stmt {
|
||||
abstract class Range extends AstNode::Range { }
|
||||
}
|
||||
|
||||
module EmptyStmt {
|
||||
class Range extends Stmt::Range, @token_empty_statement {
|
||||
final override Generated::EmptyStatement generated;
|
||||
|
||||
final override string toString() { result = ";" }
|
||||
}
|
||||
}
|
||||
|
||||
module ReturningStmt {
|
||||
abstract class Range extends Stmt::Range {
|
||||
abstract Generated::ArgumentList getArgumentList();
|
||||
@@ -51,3 +59,19 @@ module NextStmt {
|
||||
final override Generated::ArgumentList getArgumentList() { result = generated.getChild() }
|
||||
}
|
||||
}
|
||||
|
||||
module RedoStmt {
|
||||
class Range extends Stmt::Range, @redo {
|
||||
final override Generated::Redo generated;
|
||||
|
||||
final override string toString() { result = "redo" }
|
||||
}
|
||||
}
|
||||
|
||||
module RetryStmt {
|
||||
class Range extends Stmt::Range, @retry {
|
||||
final override Generated::Retry generated;
|
||||
|
||||
final override string toString() { result = "retry" }
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user