@@ -2,30 +2,48 @@ private import codeql.rust.elements.Expr
22private import codeql.rust.elements.BinaryExpr
33private import codeql.rust.elements.PrefixExpr
44
5+ /**
6+ * A logical operation, such as `&&`, `||` or `!`.
7+ */
58abstract private class LogicalOperationImpl extends Expr {
69 abstract Expr getAnOperand ( ) ;
710}
811
912final class LogicalOperation = LogicalOperationImpl ;
1013
14+ /**
15+ * A binary logical operation, such as `&&` or `||`.
16+ */
1117abstract private class BinaryLogicalOperationImpl extends BinaryExpr , LogicalOperationImpl {
1218 override Expr getAnOperand ( ) { result = [ this .getLhs ( ) , this .getRhs ( ) ] }
1319}
1420
1521final class BinaryLogicalOperation = BinaryLogicalOperationImpl ;
1622
23+ /**
24+ * The logical and operation, `&&`.
25+ */
1726final class LogicalAndExpr extends BinaryLogicalOperationImpl , BinaryExpr {
1827 LogicalAndExpr ( ) { this .getOperatorName ( ) = "&&" }
1928}
2029
30+ /**
31+ * The logical or operation, `||`.
32+ */
2133final class LogicalOrExpr extends BinaryLogicalOperationImpl {
2234 LogicalOrExpr ( ) { this .getOperatorName ( ) = "||" }
2335}
2436
37+ /**
38+ * A unary logical operation, such as `!`.
39+ */
2540abstract private class UnaryLogicalOperationImpl extends PrefixExpr , LogicalOperationImpl { }
2641
2742final class UnaryLogicalOperation = UnaryLogicalOperationImpl ;
2843
44+ /**
45+ * A logical not operation, `!`.
46+ */
2947final class LogicalNotExpr extends UnaryLogicalOperationImpl {
3048 LogicalNotExpr ( ) { this .getOperatorName ( ) = "!" }
3149
0 commit comments