Skip to content

Commit 11396ef

Browse files
committed
Rust: avoid multiple PrimaryQLClass warnings
Fixes things like: ``` multiplePrimaryQlClasses | x | PathExpr,VariableAccess | ```
1 parent e1c315b commit 11396ef

File tree

1 file changed

+16
-1
lines changed

1 file changed

+16
-1
lines changed

rust/ql/lib/codeql/rust/elements/internal/VariableImpl.qll

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
private import rust
22
private import codeql.rust.elements.internal.generated.ParentChild
33
private 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
46
private import codeql.util.DenseRank
57

68
module 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

Comments
 (0)