mirror of
https://github.com/github/codeql.git
synced 2026-04-19 14:04:09 +02:00
Rust: avoid multiple PrimaryQLClass warnings
Fixes things like: ``` multiplePrimaryQlClasses | x | PathExpr,VariableAccess | ```
This commit is contained in:
@@ -1,6 +1,8 @@
|
||||
private import rust
|
||||
private import codeql.rust.elements.internal.generated.ParentChild
|
||||
private import codeql.rust.elements.internal.ExprImpl::Impl as ExprImpl
|
||||
private import codeql.rust.elements.internal.PathExprImpl::Impl as PathExprImpl
|
||||
private import codeql.rust.elements.internal.ImplicitVariableAccessImpl::Impl as ImplicitVariableAccessImpl
|
||||
private import codeql.util.DenseRank
|
||||
|
||||
module Impl {
|
||||
@@ -449,7 +451,8 @@ module Impl {
|
||||
private class TVariableAccess = Synth::TPathExpr or Synth::TImplicitVariableAccess;
|
||||
|
||||
/** A variable access. */
|
||||
class VariableAccess extends ExprImpl::Expr, TVariableAccess instanceof VariableAccessCand {
|
||||
abstract class VariableAccess extends ExprImpl::Expr, TVariableAccess instanceof VariableAccessCand
|
||||
{
|
||||
private string name;
|
||||
private Variable v;
|
||||
|
||||
@@ -466,6 +469,18 @@ module Impl {
|
||||
override string getAPrimaryQlClass() { result = "VariableAccess" }
|
||||
}
|
||||
|
||||
private class VariableAccessPathExpr extends VariableAccess, PathExprImpl::PathExpr {
|
||||
override string getAPrimaryQlClass() { result = VariableAccess.super.getAPrimaryQlClass() }
|
||||
}
|
||||
|
||||
private class VariableAccessImplicitVariableAccess extends VariableAccess,
|
||||
ImplicitVariableAccessImpl::ImplicitVariableAccess
|
||||
{
|
||||
override string toString() { result = VariableAccess.super.toString() }
|
||||
|
||||
override string getAPrimaryQlClass() { result = VariableAccess.super.getAPrimaryQlClass() }
|
||||
}
|
||||
|
||||
/** Holds if `e` occurs in the LHS of an assignment or compound assignment. */
|
||||
private predicate assignmentExprDescendant(Expr e) {
|
||||
e = any(AssignmentExpr ae).getLhs()
|
||||
|
||||
Reference in New Issue
Block a user