Rust: Add DerefExpr class.

This commit is contained in:
Geoffrey White
2025-05-21 11:55:48 +01:00
parent fafdc1d181
commit 6c19cecb07
4 changed files with 17 additions and 1 deletions

View File

@@ -0,0 +1,13 @@
/**
* Provides classes for deref expressions (`*`).
*/
private import codeql.rust.elements.PrefixExpr
private import codeql.rust.elements.Operation
/**
* A dereference expression, `*`.
*/
final class DerefExpr extends PrefixExpr, Operation {
DerefExpr() { this.getOperatorName() = "*" }
}

View File

@@ -8,6 +8,7 @@ import codeql.rust.elements.ArithmeticOperation
import codeql.rust.elements.AssignmentOperation
import codeql.rust.elements.BitwiseOperation
import codeql.rust.elements.ComparisonOperation
import codeql.rust.elements.DerefExpr
import codeql.rust.elements.LiteralExprExt
import codeql.rust.elements.LogicalOperation
import codeql.rust.elements.AsyncBlockExpr

View File

@@ -45,6 +45,8 @@ string describe(Expr op) {
op instanceof BinaryBitwiseOperation and result = "BinaryBitwiseOperation"
or
op instanceof AssignBitwiseOperation and result = "AssignBitwiseOperation"
or
op instanceof DerefExpr and result = "DerefExpr"
}
module OperationsTest implements TestSig {

View File

@@ -49,7 +49,7 @@ fn test_operations(
x >>= y; // $ Operation Op=>>= Operands=2 AssignmentOperation BinaryExpr BitwiseOperation AssignBitwiseOperation
// miscellaneous expressions that might be operations
*ptr; // $ Operation Op=* Operands=1 PrefixExpr
*ptr; // $ Operation Op=* Operands=1 PrefixExpr DerefExpr
&x; // $ RefExpr
res?;