Skip to content

Commit 6c19cec

Browse files
committed
Rust: Add DerefExpr class.
1 parent fafdc1d commit 6c19cec

File tree

4 files changed

+17
-1
lines changed

4 files changed

+17
-1
lines changed
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
/**
2+
* Provides classes for deref expressions (`*`).
3+
*/
4+
5+
private import codeql.rust.elements.PrefixExpr
6+
private import codeql.rust.elements.Operation
7+
8+
/**
9+
* A dereference expression, `*`.
10+
*/
11+
final class DerefExpr extends PrefixExpr, Operation {
12+
DerefExpr() { this.getOperatorName() = "*" }
13+
}

rust/ql/lib/rust.qll

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import codeql.rust.elements.ArithmeticOperation
88
import codeql.rust.elements.AssignmentOperation
99
import codeql.rust.elements.BitwiseOperation
1010
import codeql.rust.elements.ComparisonOperation
11+
import codeql.rust.elements.DerefExpr
1112
import codeql.rust.elements.LiteralExprExt
1213
import codeql.rust.elements.LogicalOperation
1314
import codeql.rust.elements.AsyncBlockExpr

rust/ql/test/library-tests/operations/Operations.ql

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@ string describe(Expr op) {
4545
op instanceof BinaryBitwiseOperation and result = "BinaryBitwiseOperation"
4646
or
4747
op instanceof AssignBitwiseOperation and result = "AssignBitwiseOperation"
48+
or
49+
op instanceof DerefExpr and result = "DerefExpr"
4850
}
4951

5052
module OperationsTest implements TestSig {

rust/ql/test/library-tests/operations/test.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ fn test_operations(
4949
x >>= y; // $ Operation Op=>>= Operands=2 AssignmentOperation BinaryExpr BitwiseOperation AssignBitwiseOperation
5050

5151
// miscellaneous expressions that might be operations
52-
*ptr; // $ Operation Op=* Operands=1 PrefixExpr
52+
*ptr; // $ Operation Op=* Operands=1 PrefixExpr DerefExpr
5353
&x; // $ RefExpr
5454
res?;
5555

0 commit comments

Comments
 (0)