@@ -682,6 +682,24 @@ module ExprNodes {
682682 final override VariableReadAccess getExpr ( ) { result = ExprCfgNode .super .getExpr ( ) }
683683 }
684684
685+ private class InstanceVariableAccessMapping extends ExprChildMapping , InstanceVariableAccess {
686+ override predicate relevantChild ( AstNode n ) { n = this .getReceiver ( ) }
687+ }
688+
689+ /** A control-flow node that wraps an `InstanceVariableAccess` AST expression. */
690+ class InstanceVariableAccessCfgNode extends ExprCfgNode {
691+ override string getAPrimaryQlClass ( ) { result = "InstanceVariableAccessCfgNode" }
692+
693+ override InstanceVariableAccessMapping e ;
694+
695+ override InstanceVariableAccess getExpr ( ) { result = ExprCfgNode .super .getExpr ( ) }
696+
697+ /**
698+ * Gets the synthetic receiver (`self`) of this instance variable access.
699+ */
700+ final CfgNode getReceiver ( ) { e .hasCfgChild ( e .getReceiver ( ) , this , result ) }
701+ }
702+
685703 /** A control-flow node that wraps a `VariableWriteAccess` AST expression. */
686704 class VariableWriteAccessCfgNode extends ExprCfgNode {
687705 override string getAPrimaryQlClass ( ) { result = "VariableWriteAccessCfgNode" }
@@ -709,13 +727,26 @@ module ExprNodes {
709727 final override ConstantWriteAccess getExpr ( ) { result = ExprCfgNode .super .getExpr ( ) }
710728 }
711729
712- /** A control-flow node that wraps a `InstanceVariableWriteAccess` AST expression. */
713- class InstanceVariableWriteAccessCfgNode extends ExprCfgNode {
714- override string getAPrimaryQlClass ( ) { result = "InstanceVariableWriteAccessCfgNode" }
730+ /** A control-flow node that wraps an `InstanceVariableReadAccess` AST expression. */
731+ class InstanceVariableReadAccessCfgNode extends InstanceVariableAccessCfgNode {
732+ InstanceVariableReadAccessCfgNode ( ) { this .getNode ( ) instanceof InstanceVariableReadAccess }
733+
734+ override string getAPrimaryQlClass ( ) { result = "InstanceVariableReadAccessCfgNode" }
735+
736+ final override InstanceVariableReadAccess getExpr ( ) {
737+ result = InstanceVariableAccessCfgNode .super .getExpr ( )
738+ }
739+ }
740+
741+ /** A control-flow node that wraps an `InstanceVariableWriteAccess` AST expression. */
742+ class InstanceVariableWriteAccessCfgNode extends InstanceVariableAccessCfgNode {
743+ InstanceVariableWriteAccessCfgNode ( ) { this .getNode ( ) instanceof InstanceVariableWriteAccess }
715744
716- override InstanceVariableWriteAccess e ;
745+ override string getAPrimaryQlClass ( ) { result = "InstanceVariableWriteAccessCfgNode" }
717746
718- final override InstanceVariableWriteAccess getExpr ( ) { result = ExprCfgNode .super .getExpr ( ) }
747+ final override InstanceVariableWriteAccess getExpr ( ) {
748+ result = InstanceVariableAccessCfgNode .super .getExpr ( )
749+ }
719750 }
720751
721752 /** A control-flow node that wraps a `StringInterpolationComponent` AST expression. */
0 commit comments