mirror of
https://github.com/github/codeql.git
synced 2026-04-28 10:15:14 +02:00
Swift: Expand assignment operations.
This commit is contained in:
@@ -103,6 +103,54 @@ class AssignAddExpr extends AssignArithmeticOperationEx {
|
||||
override string toString() { result = "... += ..." }
|
||||
}
|
||||
|
||||
/**
|
||||
* A subtraction assignment expression:
|
||||
* ```
|
||||
* a -= b
|
||||
* ```
|
||||
*/
|
||||
class AssignSubExpr extends AssignArithmeticOperationEx {
|
||||
AssignSubExpr() { this.getOperator().getName() = "-=(_:_:)" }
|
||||
|
||||
override string toString() { result = "... -= ..." }
|
||||
}
|
||||
|
||||
/**
|
||||
* A multiplication assignment expression:
|
||||
* ```
|
||||
* a *= b
|
||||
* ```
|
||||
*/
|
||||
class AssignMulExpr extends AssignArithmeticOperationEx {
|
||||
AssignMulExpr() { this.getOperator().getName() = "*=(_:_:)" }
|
||||
|
||||
override string toString() { result = "... *= ..." }
|
||||
}
|
||||
|
||||
/**
|
||||
* A division assignment expression:
|
||||
* ```
|
||||
* a /= b
|
||||
* ```
|
||||
*/
|
||||
class AssignDivExpr extends AssignArithmeticOperationEx {
|
||||
AssignDivExpr() { this.getOperator().getName() = "/=(_:_:)" }
|
||||
|
||||
override string toString() { result = "... /= ..." }
|
||||
}
|
||||
|
||||
/**
|
||||
* A remainder assignment expression:
|
||||
* ```
|
||||
* a %= b
|
||||
* ```
|
||||
*/
|
||||
class AssignRemExpr extends AssignArithmeticOperationEx {
|
||||
AssignRemExpr() { this.getOperator().getName() = "%=(_:_:)" }
|
||||
|
||||
override string toString() { result = "... %= ..." }
|
||||
}
|
||||
|
||||
/**
|
||||
* A left-shift assignment expression:
|
||||
* ```
|
||||
@@ -114,4 +162,51 @@ class AssignLShiftExpr extends AssignBitwiseOperationEx {
|
||||
|
||||
override string toString() { result = "... <<= ..." }
|
||||
}
|
||||
// TODO ...
|
||||
|
||||
/**
|
||||
* A right-shift assignment expression:
|
||||
* ```
|
||||
* a >>= b
|
||||
* ```
|
||||
*/
|
||||
class AssignRShiftExpr extends AssignBitwiseOperationEx {
|
||||
AssignRShiftExpr() { this.getOperator().getName() = ">>=(_:_:)" }
|
||||
|
||||
override string toString() { result = "... >>= ..." }
|
||||
}
|
||||
|
||||
/**
|
||||
* A bitwise-and assignment expression:
|
||||
* ```
|
||||
* a &= b
|
||||
* ```
|
||||
*/
|
||||
class AssignAndExpr extends AssignBitwiseOperationEx {
|
||||
AssignAndExpr() { this.getOperator().getName() = "&=(_:_:)" }
|
||||
|
||||
override string toString() { result = "... &= ..." }
|
||||
}
|
||||
|
||||
/**
|
||||
* A bitwise-or assignment expression:
|
||||
* ```
|
||||
* a |= b
|
||||
* ```
|
||||
*/
|
||||
class AssignOrExpr extends AssignBitwiseOperationEx {
|
||||
AssignOrExpr() { this.getOperator().getName() = "|=(_:_:)" }
|
||||
|
||||
override string toString() { result = "... |= ..." }
|
||||
}
|
||||
|
||||
/**
|
||||
* A bitwise exclusive-or assignment expression:
|
||||
* ```
|
||||
* a ^= b
|
||||
* ```
|
||||
*/
|
||||
class AssignXorExpr extends AssignBitwiseOperationEx {
|
||||
AssignXorExpr() { this.getOperator().getName() = "^=(_:_:)" }
|
||||
|
||||
override string toString() { result = "... ^= ..." }
|
||||
}
|
||||
|
||||
@@ -1,4 +1,12 @@
|
||||
| assignment.swift:6:2:6:6 | ... = ... | AssignExpr, Assignment | x | 1 |
|
||||
| assignment.swift:9:2:9:7 | ... += ... | AssignAddExpr, AssignArithmeticOperation, AssignOperation, Assignment | &... | 1 |
|
||||
| assignment.swift:10:2:10:7 | ... -= ... | AssignArithmeticOperation, AssignOperation, AssignSubExpr, Assignment | &... | 1 |
|
||||
| assignment.swift:11:2:11:7 | ... *= ... | AssignArithmeticOperation, AssignMulExpr, AssignOperation, Assignment | &... | 1 |
|
||||
| assignment.swift:12:2:12:7 | ... /= ... | AssignArithmeticOperation, AssignDivExpr, AssignOperation, Assignment | &... | 1 |
|
||||
| assignment.swift:13:2:13:7 | ... %= ... | AssignArithmeticOperation, AssignOperation, AssignRemExpr, Assignment | &... | 1 |
|
||||
| assignment.swift:16:2:16:7 | ... &= ... | AssignAndExpr, AssignBitwiseOperation, AssignOperation, Assignment | &... | 1 |
|
||||
| assignment.swift:17:2:17:7 | ... \|= ... | AssignBitwiseOperation, AssignOperation, AssignOrExpr, Assignment | &... | 1 |
|
||||
| assignment.swift:18:2:18:7 | ... ^= ... | AssignBitwiseOperation, AssignOperation, AssignXorExpr, Assignment | &... | 1 |
|
||||
| assignment.swift:19:2:19:8 | ... <<= ... | AssignBitwiseOperation, AssignLShiftExpr, AssignOperation, Assignment | &... | 1 |
|
||||
| assignment.swift:20:2:20:8 | ... >>= ... | AssignBitwiseOperation, AssignOperation, AssignRShiftExpr, Assignment | &... | 1 |
|
||||
| assignment.swift:33:2:33:6 | ... = ... | AssignExpr, Assignment | y | z |
|
||||
|
||||
@@ -13,7 +13,23 @@ string describe(Expr e) {
|
||||
or
|
||||
e instanceof AssignAddExpr and result = "AssignAddExpr"
|
||||
or
|
||||
e instanceof AssignSubExpr and result = "AssignSubExpr"
|
||||
or
|
||||
e instanceof AssignMulExpr and result = "AssignMulExpr"
|
||||
or
|
||||
e instanceof AssignDivExpr and result = "AssignDivExpr"
|
||||
or
|
||||
e instanceof AssignRemExpr and result = "AssignRemExpr"
|
||||
or
|
||||
e instanceof AssignLShiftExpr and result = "AssignLShiftExpr"
|
||||
or
|
||||
e instanceof AssignRShiftExpr and result = "AssignRShiftExpr"
|
||||
or
|
||||
e instanceof AssignAndExpr and result = "AssignAndExpr"
|
||||
or
|
||||
e instanceof AssignOrExpr and result = "AssignOrExpr"
|
||||
or
|
||||
e instanceof AssignXorExpr and result = "AssignXorExpr"
|
||||
}
|
||||
|
||||
from Assignment e
|
||||
|
||||
Reference in New Issue
Block a user