mirror of
https://github.com/github/codeql.git
synced 2026-02-20 00:43:44 +01:00
AST: add LhsExpr
This commit is contained in:
@@ -14,6 +14,21 @@ class Pattern extends AstNode {
|
||||
Variable getAVariable() { result = range.getAVariable() }
|
||||
}
|
||||
|
||||
/**
|
||||
* A "left-hand-side" expression.
|
||||
* ```rb
|
||||
* var = 1
|
||||
* var += 1
|
||||
* E = 1
|
||||
* foo.bar = 1
|
||||
* foo[0] = 1
|
||||
* rescue E => var
|
||||
* ```
|
||||
*/
|
||||
class LhsExpr extends Pattern, Expr {
|
||||
override LhsExpr::Range range;
|
||||
}
|
||||
|
||||
/** A simple variable pattern. */
|
||||
class VariablePattern extends Pattern {
|
||||
override VariablePattern::Range range;
|
||||
|
||||
@@ -310,7 +310,7 @@ module RescueClause {
|
||||
class Range extends Expr::Range, @rescue {
|
||||
final override Generated::Rescue generated;
|
||||
|
||||
final Expr getException(int n) { result = generated.getExceptions().getChild(n) }
|
||||
final LhsExpr getException(int n) { result = generated.getExceptions().getChild(n) }
|
||||
|
||||
final Expr getVariableExpr() { result = generated.getVariable() }
|
||||
|
||||
|
||||
@@ -246,7 +246,7 @@ module AssignOperation {
|
||||
|
||||
final override string getOperator() { result = generated.getOperator() }
|
||||
|
||||
final override Expr getLhs() { result = generated.getLeft() }
|
||||
final override LhsExpr getLhs() { result = generated.getLeft() }
|
||||
|
||||
final override Expr getRhs() { result = generated.getRight() }
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
private import codeql_ruby.AST
|
||||
private import TreeSitter
|
||||
private import codeql_ruby.ast.internal.AST
|
||||
private import codeql_ruby.ast.internal.Expr
|
||||
private import codeql_ruby.ast.internal.Variable
|
||||
private import codeql_ruby.ast.internal.Method
|
||||
private import codeql.Locations
|
||||
@@ -58,8 +59,12 @@ module Pattern {
|
||||
}
|
||||
}
|
||||
|
||||
module LhsExpr {
|
||||
abstract class Range extends Pattern::Range, Expr::Range { }
|
||||
}
|
||||
|
||||
module VariablePattern {
|
||||
class Range extends Pattern::Range, @token_identifier {
|
||||
class Range extends LhsExpr::Range, @token_identifier {
|
||||
override Generated::Identifier generated;
|
||||
|
||||
string getVariableName() { result = generated.getValue() }
|
||||
|
||||
Reference in New Issue
Block a user