@@ -7,9 +7,9 @@ private import internal.TreeSitter
77private import internal.Variable
88
99/** A variable declared in a scope. */
10- class Variable extends TVariable {
10+ class Variable instanceof VariableImpl {
1111 /** Gets the name of this variable. */
12- string getName ( ) { none ( ) }
12+ final string getName ( ) { result = super . getNameImpl ( ) }
1313
1414 /** Holds if the name of this variable is `name`. */
1515 final predicate hasName ( string name ) { this .getName ( ) = name }
@@ -18,21 +18,23 @@ class Variable extends TVariable {
1818 final string toString ( ) { result = this .getName ( ) }
1919
2020 /** Gets the location of this variable. */
21- Location getLocation ( ) { none ( ) }
21+ final Location getLocation ( ) { result = super . getLocationImpl ( ) }
2222
2323 /** Gets the scope this variable is declared in. */
24- Scope getDeclaringScope ( ) { none ( ) }
24+ final Scope getDeclaringScope ( ) {
25+ toGenerated ( result ) = this .( VariableReal ) .getDeclaringScopeImpl ( )
26+ }
2527
2628 /** Gets an access to this variable. */
2729 VariableAccess getAnAccess ( ) { result .getVariable ( ) = this }
2830}
2931
3032/** A local variable. */
3133class LocalVariable extends Variable , TLocalVariable {
32- override LocalVariableAccess getAnAccess ( ) { none ( ) }
34+ override LocalVariableAccess getAnAccess ( ) { result . getVariable ( ) = this }
3335
3436 /** Gets the access where this local variable is first introduced. */
35- VariableAccess getDefiningAccess ( ) { none ( ) }
37+ VariableAccess getDefiningAccess ( ) { result = this . ( LocalVariableReal ) . getDefiningAccessImpl ( ) }
3638
3739 /**
3840 * Holds if this variable is captured. For example in
@@ -52,27 +54,27 @@ class LocalVariable extends Variable, TLocalVariable {
5254}
5355
5456/** A global variable. */
55- class GlobalVariable extends VariableReal , TGlobalVariable instanceof GlobalVariable :: Range {
57+ class GlobalVariable extends Variable instanceof GlobalVariableImpl {
5658 final override GlobalVariableAccess getAnAccess ( ) { result .getVariable ( ) = this }
5759}
5860
5961/** An instance variable. */
60- class InstanceVariable extends VariableReal , TInstanceVariable instanceof InstanceVariable :: Range {
62+ class InstanceVariable extends Variable instanceof InstanceVariableImpl {
6163 /** Holds is this variable is a class instance variable. */
6264 final predicate isClassInstanceVariable ( ) { super .isClassInstanceVariable ( ) }
6365
6466 final override InstanceVariableAccess getAnAccess ( ) { result .getVariable ( ) = this }
6567}
6668
6769/** A class variable. */
68- class ClassVariable extends VariableReal , TClassVariable instanceof ClassVariable :: Range {
70+ class ClassVariable extends Variable instanceof ClassVariableImpl {
6971 final override ClassVariableAccess getAnAccess ( ) { result .getVariable ( ) = this }
7072}
7173
7274/** An access to a variable. */
73- class VariableAccess extends Expr , TVariableAccess {
75+ class VariableAccess extends Expr instanceof VariableAccessImpl {
7476 /** Gets the variable this identifier refers to. */
75- final Variable getVariable ( ) { result = this . ( VariableAccessImpl ) .getVariableImpl ( ) }
77+ final Variable getVariable ( ) { result = super .getVariableImpl ( ) }
7678
7779 /**
7880 * Holds if this access is a write access belonging to the explicit
@@ -106,6 +108,8 @@ class VariableAccess extends Expr, TVariableAccess {
106108 * as is the first access to `e`.
107109 */
108110 predicate isImplicitWrite ( ) { implicitWriteAccess ( toGenerated ( this ) ) }
111+
112+ final override string toString ( ) { result = VariableAccessImpl .super .toString ( ) }
109113}
110114
111115/** An access to a variable where the value is updated. */
@@ -122,7 +126,7 @@ class VariableReadAccess extends VariableAccess {
122126}
123127
124128/** An access to a local variable. */
125- class LocalVariableAccess extends VariableAccess , TLocalVariableAccess {
129+ class LocalVariableAccess extends VariableAccess instanceof LocalVariableAccessImpl {
126130 final override string getAPrimaryQlClass ( ) { result = "LocalVariableAccess" }
127131
128132 /**
@@ -150,7 +154,7 @@ class LocalVariableWriteAccess extends LocalVariableAccess, VariableWriteAccess
150154class LocalVariableReadAccess extends LocalVariableAccess , VariableReadAccess { }
151155
152156/** An access to a global variable. */
153- class GlobalVariableAccess extends VariableAccess , TGlobalVariableAccess {
157+ class GlobalVariableAccess extends VariableAccess instanceof GlobalVariableAccessImpl {
154158 final override string getAPrimaryQlClass ( ) { result = "GlobalVariableAccess" }
155159}
156160
@@ -161,7 +165,7 @@ class GlobalVariableWriteAccess extends GlobalVariableAccess, VariableWriteAcces
161165class GlobalVariableReadAccess extends GlobalVariableAccess , VariableReadAccess { }
162166
163167/** An access to an instance variable. */
164- class InstanceVariableAccess extends VariableAccess , TInstanceVariableAccess {
168+ class InstanceVariableAccess extends VariableAccess instanceof InstanceVariableAccessImpl {
165169 final override string getAPrimaryQlClass ( ) { result = "InstanceVariableAccess" }
166170}
167171
@@ -172,7 +176,7 @@ class InstanceVariableWriteAccess extends InstanceVariableAccess, VariableWriteA
172176class InstanceVariableReadAccess extends InstanceVariableAccess , VariableReadAccess { }
173177
174178/** An access to a class variable. */
175- class ClassVariableAccess extends VariableAccess , TClassVariableAccess {
179+ class ClassVariableAccess extends VariableAccess instanceof ClassVariableAccessRealImpl {
176180 final override string getAPrimaryQlClass ( ) { result = "ClassVariableAccess" }
177181}
178182
0 commit comments