Remove ThenExpr, ElseExpr, and DoExpr from public API

This commit is contained in:
Nick Rolfe
2021-01-07 15:44:30 +00:00
parent f484b573f2
commit f4abe7f4a1
9 changed files with 80 additions and 110 deletions

View File

@@ -46,11 +46,11 @@ class IfOrElsifExpr extends ConditionalExpr {
override IfOrElsifExpr::Range range;
/** Gets the 'then' branch of this `if`/`elsif` expression. */
final override ThenExpr getThen() { result = range.getThen() }
final override ExprSequence getThen() { result = range.getThen() }
/**
* Gets the `elsif`/`else` branch of this `if`/`elsif` expression, if any. In
* the following example, the result is an `ElseExpr` containing `b`.
* the following example, the result is an `ExprSequence` containing `b`.
* ```rb
* if foo
* a
@@ -66,8 +66,8 @@ class IfOrElsifExpr extends ConditionalExpr {
* ```
* There can be at most one result, since `elsif` branches nest. In the
* following example, `ifExpr.getElse()` returns an `ElsifExpr`, and the
* `else` branch is nested inside that. To get the `ElseExpr` for the `else`
* branch, i.e. the one containing `c`, use
* `else` branch is nested inside that. To get the `ExprSequence` for the
* `else` branch, i.e. the one containing `c`, use
* `getElse().(ElsifExpr).getElse()`.
* ```rb
* if foo
@@ -219,7 +219,7 @@ class CaseExpr extends ControlExpr, @case__ {
/**
* Gets the `n`th branch of this case expression, either a `WhenExpr` or an
* `ElseExpr`.
* `ExprSequence`.
*/
final Expr getBranch(int n) { result = range.getBranch(n) }
@@ -233,7 +233,7 @@ class CaseExpr extends ControlExpr, @case__ {
final WhenExpr getAWhenBranch() { result = range.getAWhenBranch() }
/** Gets the `else` branch of this case expression, if any. */
final ElseExpr getElseBranch() { result = range.getElseBranch() }
final ExprSequence getElseBranch() { result = range.getElseBranch() }
/**
* Gets the number of branches of this case expression.
@@ -257,7 +257,7 @@ class WhenExpr extends Expr, @when {
final override string toString() { result = "when ..." }
/** Gets the body of this case-when expression. */
final ThenExpr getBody() { result = range.getBody() }
final ExprSequence getBody() { result = range.getBody() }
/**
* Gets the `n`th pattern (or condition) in this case-when expression.
@@ -303,7 +303,7 @@ class WhileExpr extends Loop, @while {
final override string toString() { result = "while ..." }
/** Gets the body of this `while` loop. */
final override DoExpr getBody() { result = range.getBody() }
final override ExprSequence getBody() { result = range.getBody() }
/** Gets the condition expression of this `while` loop. */
final Expr getCondition() { result = range.getCondition() }
@@ -326,7 +326,7 @@ class UntilExpr extends Loop, @until {
final override string toString() { result = "until ..." }
/** Gets the body of this `until` loop. */
final override DoExpr getBody() { result = range.getBody() }
final override ExprSequence getBody() { result = range.getBody() }
/** Gets the condition expression of this `until` loop. */
final Expr getCondition() { result = range.getCondition() }

View File

@@ -78,6 +78,10 @@ class RegexLiteral extends Literal, @regex {
class ExprSequence extends Expr {
override ExprSequence::Range range;
final override string getAPrimaryQlClass() { result = "ExprSequence" }
final override string toString() { result = "...; ..." }
/** Gets the `n`th expression in this sequence. */
final Expr getExpr(int n) { result = this.(ExprSequence::Range).getExpr(n) }
@@ -93,39 +97,3 @@ class ExprSequence extends Expr {
/** Holds if this sequence has no expressions. */
final predicate isEmpty() { this.getNumberOfExpressions() = 0 }
}
/**
* A sequence of expressions in a `then` branch of an `if`, `unless`, or `when`
* expression.
*/
class ThenExpr extends ExprSequence, @then {
final override ThenExpr::Range range;
final override string getAPrimaryQlClass() { result = "ThenExpr" }
final override string toString() { result = "then ..." }
}
/**
* A sequence of expressions in an `else` branch of an `if`, `unless`, or
* `case` expression.
*/
class ElseExpr extends ExprSequence, @else {
final override ElseExpr::Range range;
final override string getAPrimaryQlClass() { result = "ElseExpr" }
final override string toString() { result = "else ..." }
}
/**
* A sequence of expressions representing the body of a `for`, `while`, or
* `until` loop.
*/
class DoExpr extends ExprSequence, @do {
final override DoExpr::Range range;
final override string getAPrimaryQlClass() { result = "DoExpr" }
final override string toString() { result = "do ..." }
}

View File

@@ -27,7 +27,7 @@ module IfExpr {
final override Expr getCondition() { result = generated.getCondition() }
final override ThenExpr getThen() { result = generated.getConsequence() }
final override ExprSequence getThen() { result = generated.getConsequence() }
final override Expr getElse() { result = generated.getAlternative() }
}
@@ -39,7 +39,7 @@ module ElsifExpr {
final override Expr getCondition() { result = generated.getCondition() }
final override ThenExpr getThen() { result = generated.getConsequence() }
final override ExprSequence getThen() { result = generated.getConsequence() }
final override Expr getElse() { result = generated.getAlternative() }
}
@@ -51,9 +51,9 @@ module UnlessExpr {
final override Expr getCondition() { result = generated.getCondition() }
final override ThenExpr getThen() { result = generated.getConsequence() }
final override ExprSequence getThen() { result = generated.getConsequence() }
final override ElseExpr getElse() { result = generated.getAlternative() }
final override ExprSequence getElse() { result = generated.getAlternative() }
}
}
@@ -103,7 +103,7 @@ module CaseExpr {
final WhenExpr getAWhenBranch() { result = this.getBranch(_) }
final ElseExpr getElseBranch() { result = this.getBranch(_) }
final ExprSequence getElseBranch() { result = this.getBranch(_) }
}
}
@@ -111,7 +111,7 @@ module WhenExpr {
class Range extends Expr::Range, @when {
final override Generated::When generated;
final ThenExpr getBody() { result = generated.getBody() }
final ExprSequence getBody() { result = generated.getBody() }
final Expr getPattern(int n) { result = generated.getPattern(n).getChild() }
}
@@ -127,7 +127,7 @@ module WhileExpr {
class Range extends Loop::Range, @while {
final override Generated::While generated;
final override DoExpr getBody() { result = generated.getBody() }
final override ExprSequence getBody() { result = generated.getBody() }
final Expr getCondition() { result = generated.getCondition() }
}
@@ -137,7 +137,7 @@ module UntilExpr {
class Range extends Loop::Range, @until {
final override Generated::Until generated;
final override DoExpr getBody() { result = generated.getBody() }
final override ExprSequence getBody() { result = generated.getBody() }
final Expr getCondition() { result = generated.getCondition() }
}
@@ -167,7 +167,7 @@ module ForExpr {
class Range extends Loop::Range, @for {
final override Generated::For generated;
final override DoExpr getBody() { result = generated.getBody() }
final override ExprSequence getBody() { result = generated.getBody() }
final Pattern getPattern() { result = generated.getPattern() }