mirror of
https://github.com/github/codeql.git
synced 2026-02-20 00:43:44 +01:00
Add Pattern::getAVariable() and use self range field througout
This commit is contained in:
@@ -4,7 +4,9 @@ private import internal.Method
|
||||
|
||||
/** A callable. */
|
||||
class Callable extends AstNode {
|
||||
Callable() { this instanceof CallableRange }
|
||||
CallableRange self;
|
||||
|
||||
Callable() { self = this }
|
||||
|
||||
/** Gets the number of parameters of this callable. */
|
||||
final int getNumberOfParameters() { result = count(this.getAParameter()) }
|
||||
@@ -12,12 +14,13 @@ class Callable extends AstNode {
|
||||
/** Gets a parameter of this callable. */
|
||||
final Parameter getAParameter() { result = this.getParameter(_) }
|
||||
|
||||
/** Gets the nth parameter of this callable. */
|
||||
final Parameter getParameter(int n) { result = this.(CallableRange).getParameter(n) }
|
||||
/** Gets the `n`th parameter of this callable. */
|
||||
final Parameter getParameter(int n) { result = self.getParameter(n) }
|
||||
}
|
||||
|
||||
/** A method. */
|
||||
class Method extends Callable, @method {
|
||||
final override MethodRange self;
|
||||
final override Generated::Method generated;
|
||||
|
||||
final override string describeQlClass() { result = "Method" }
|
||||
@@ -25,12 +28,7 @@ class Method extends Callable, @method {
|
||||
final override string toString() { result = this.getName() }
|
||||
|
||||
/** Gets the name of this method. */
|
||||
final string getName() {
|
||||
result = generated.getName().(Generated::Token).getValue() or
|
||||
// TODO: use hand-written Symbol class
|
||||
result = generated.getName().(Generated::Symbol).toString() or
|
||||
result = generated.getName().(Generated::Setter).getName().getValue() + "="
|
||||
}
|
||||
final string getName() { result = self.getName() }
|
||||
|
||||
/**
|
||||
* Holds if this is a setter method, as in the following example:
|
||||
@@ -47,19 +45,14 @@ class Method extends Callable, @method {
|
||||
|
||||
/** A singleton method. */
|
||||
class SingletonMethod extends Callable, @singleton_method {
|
||||
final override Generated::SingletonMethod generated;
|
||||
final override SingletonMethodRange self;
|
||||
|
||||
final override string describeQlClass() { result = "SingletonMethod" }
|
||||
|
||||
final override string toString() { result = this.getName() }
|
||||
|
||||
/** Gets the name of this method. */
|
||||
final string getName() {
|
||||
result = generated.getName().(Generated::Token).getValue() or
|
||||
// TODO: use hand-written Symbol class
|
||||
result = generated.getName().(Generated::Symbol).toString() or
|
||||
result = generated.getName().(Generated::Setter).getName().getValue() + "="
|
||||
}
|
||||
final string getName() { result = self.getName() }
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -69,7 +62,7 @@ class SingletonMethod extends Callable, @singleton_method {
|
||||
* ```
|
||||
*/
|
||||
class Lambda extends Callable, @lambda {
|
||||
final override Generated::Lambda generated;
|
||||
final override LambdaRange self;
|
||||
|
||||
final override string describeQlClass() { result = "Lambda" }
|
||||
|
||||
@@ -78,12 +71,12 @@ class Lambda extends Callable, @lambda {
|
||||
|
||||
/** A block. */
|
||||
class Block extends AstNode, Callable {
|
||||
Block() { this instanceof BlockRange }
|
||||
override BlockRange self;
|
||||
}
|
||||
|
||||
/** A block enclosed within `do` and `end`. */
|
||||
class DoBlock extends Block, @do_block {
|
||||
final override Generated::DoBlock generated;
|
||||
final override DoBlockRange self;
|
||||
|
||||
final override string describeQlClass() { result = "DoBlock" }
|
||||
|
||||
@@ -97,7 +90,7 @@ class DoBlock extends Block, @do_block {
|
||||
* ```
|
||||
*/
|
||||
class BraceBlock extends Block, @block {
|
||||
final override Generated::Block generated;
|
||||
final override BraceBlockRange self;
|
||||
|
||||
final override string describeQlClass() { result = "BraceBlock" }
|
||||
|
||||
|
||||
Reference in New Issue
Block a user