@@ -79,6 +79,7 @@ class AstNode extends TAstNode {
7979
8080 /** Gets an annotation of this AST node. */
8181 Annotation getAnAnnotation ( ) {
82+ not this instanceof Annotation and // avoid cyclic parent-child relationship
8283 toQL ( this ) .getParent ( ) = pragma [ only_bind_out ] ( toQL ( result ) ) .getParent ( )
8384 }
8485
@@ -125,6 +126,9 @@ class TopLevel extends TTopLevel, AstNode {
125126 /** Gets a `newtype` defined at the top-level of this module. */
126127 NewType getANewType ( ) { result = this .getAMember ( ) }
127128
129+ /** Gets a `select` clause in the top-level of this module. */
130+ Select getASelect ( ) { result = this .getAMember ( ) }
131+
128132 override ModuleMember getAChild ( string pred ) {
129133 pred = directMember ( "getAnImport" ) and result = this .getAnImport ( )
130134 or
@@ -137,6 +141,8 @@ class TopLevel extends TTopLevel, AstNode {
137141 pred = directMember ( "getANewType" ) and result = this .getANewType ( )
138142 or
139143 pred = directMember ( "getQLDoc" ) and result = this .getQLDoc ( )
144+ or
145+ pred = directMember ( "getASelect" ) and result = this .getASelect ( )
140146 }
141147
142148 QLDoc getQLDocFor ( ModuleMember m ) {
@@ -547,6 +553,9 @@ class VarDef extends TVarDef, AstNode {
547553
548554 Type getType ( ) { none ( ) }
549555
556+ /** Gets a variable access to this `VarDef` */
557+ VarAccess getAnAccess ( ) { result .getDeclaration ( ) = this }
558+
550559 override string getAPrimaryQlClass ( ) { result = "VarDef" }
551560
552561 override string toString ( ) { result = this .getName ( ) }
0 commit comments