11private import rust
22private import codeql.rust.elements.internal.generated.ParentChild
33private import codeql.rust.elements.internal.ExprImpl:: Impl as ExprImpl
4+ private import codeql.rust.elements.internal.PathExprImpl:: Impl as PathExprImpl
5+ private import codeql.rust.elements.internal.ImplicitVariableAccessImpl:: Impl as ImplicitVariableAccessImpl
46private import codeql.util.DenseRank
57
68module Impl {
@@ -449,7 +451,8 @@ module Impl {
449451 private class TVariableAccess = Synth:: TPathExpr or Synth:: TImplicitVariableAccess ;
450452
451453 /** A variable access. */
452- class VariableAccess extends ExprImpl:: Expr , TVariableAccess instanceof VariableAccessCand {
454+ abstract class VariableAccess extends ExprImpl:: Expr , TVariableAccess instanceof VariableAccessCand
455+ {
453456 private string name ;
454457 private Variable v ;
455458
@@ -466,6 +469,18 @@ module Impl {
466469 override string getAPrimaryQlClass ( ) { result = "VariableAccess" }
467470 }
468471
472+ private class VariableAccessPathExpr extends VariableAccess , PathExprImpl:: PathExpr {
473+ override string getAPrimaryQlClass ( ) { result = VariableAccess .super .getAPrimaryQlClass ( ) }
474+ }
475+
476+ private class VariableAccessImplicitVariableAccess extends VariableAccess ,
477+ ImplicitVariableAccessImpl:: ImplicitVariableAccess
478+ {
479+ override string toString ( ) { result = VariableAccess .super .toString ( ) }
480+
481+ override string getAPrimaryQlClass ( ) { result = VariableAccess .super .getAPrimaryQlClass ( ) }
482+ }
483+
469484 /** Holds if `e` occurs in the LHS of an assignment or compound assignment. */
470485 private predicate assignmentExprDescendant ( Expr e ) {
471486 e = any ( AssignmentExpr ae ) .getLhs ( )
0 commit comments