mirror of
https://github.com/github/codeql.git
synced 2026-02-20 17:03:41 +01:00
AST: rescue modifier
This commit is contained in:
@@ -229,6 +229,8 @@ class Pair extends Expr, @pair {
|
||||
class Rescue extends Expr, @rescue {
|
||||
final override Rescue::Range range;
|
||||
|
||||
final override string getAPrimaryQlClass() { result = "Rescue" }
|
||||
|
||||
/**
|
||||
* Gets the `n`th exception to match, if any. For example `FirstError` or `SecondError` in:
|
||||
* ```rb
|
||||
@@ -271,3 +273,31 @@ class Rescue extends Expr, @rescue {
|
||||
*/
|
||||
final StmtSequence getBody() { result = range.getBody() }
|
||||
}
|
||||
|
||||
/**
|
||||
* An expression with a `rescue` modifier. For example:
|
||||
* ```rb
|
||||
* contents = read_file rescue ""
|
||||
* ```
|
||||
*/
|
||||
class RescueExpr extends Expr, @rescue_modifier {
|
||||
final override RescueExpr::Range range;
|
||||
|
||||
final override string getAPrimaryQlClass() { result = "RescueExpr" }
|
||||
|
||||
/**
|
||||
* Gets the body of this `RescueExpr`.
|
||||
* ```rb
|
||||
* body rescue handler
|
||||
* ```
|
||||
*/
|
||||
final Stmt getBody() { result = range.getBody() }
|
||||
|
||||
/**
|
||||
* Gets the exception handler of this `RescueExpr`.
|
||||
* ```rb
|
||||
* body rescue handler
|
||||
* ```
|
||||
*/
|
||||
final Stmt getHandler() { result = range.getHandler() }
|
||||
}
|
||||
|
||||
@@ -69,8 +69,6 @@ module AstNode {
|
||||
or
|
||||
this instanceof Generated::Rational
|
||||
or
|
||||
this instanceof Generated::RescueModifier
|
||||
or
|
||||
this instanceof Generated::Subshell
|
||||
or
|
||||
this instanceof Generated::Undef
|
||||
|
||||
@@ -290,6 +290,18 @@ module Rescue {
|
||||
}
|
||||
}
|
||||
|
||||
module RescueExpr {
|
||||
class Range extends Expr::Range, @rescue_modifier {
|
||||
final override Generated::RescueModifier generated;
|
||||
|
||||
final Stmt getBody() { result = generated.getBody() }
|
||||
|
||||
final Stmt getHandler() { result = generated.getHandler() }
|
||||
|
||||
final override string toString() { result = "... rescue ..." }
|
||||
}
|
||||
}
|
||||
|
||||
module Pair {
|
||||
class Range extends Expr::Range, @pair {
|
||||
final override Generated::Pair generated;
|
||||
|
||||
Reference in New Issue
Block a user