mirror of
https://github.com/github/codeql.git
synced 2026-04-21 15:05:56 +02:00
Rust: Fix bugs in LetExprTree and MethodCallExprTree
This commit is contained in:
@@ -296,8 +296,14 @@ class ItemTree extends LeafTree, Item { }
|
||||
// `LetExpr` is a pre-order tree such that the pattern itself ends up
|
||||
// dominating successors in the graph in the same way that patterns do in
|
||||
// `match` expressions.
|
||||
class LetExprTree extends StandardPreOrderTree instanceof LetExpr {
|
||||
override AstNode getChildNode(int i) { i = 0 and result = super.getPat() }
|
||||
class LetExprTree extends StandardPreOrderTree, LetExpr {
|
||||
override AstNode getChildNode(int i) {
|
||||
i = 0 and
|
||||
result = this.getExpr()
|
||||
or
|
||||
i = 1 and
|
||||
result = this.getPat()
|
||||
}
|
||||
}
|
||||
|
||||
class LetStmtTree extends PreOrderTree, LetStmt {
|
||||
@@ -479,10 +485,12 @@ class MatchExprTree extends PostOrderTree instanceof MatchExpr {
|
||||
}
|
||||
}
|
||||
|
||||
class MethodCallExprTree extends StandardPostOrderTree instanceof MethodCallExpr {
|
||||
class MethodCallExprTree extends StandardPostOrderTree, MethodCallExpr {
|
||||
override AstNode getChildNode(int i) {
|
||||
result = super.getReceiver() and
|
||||
result = super.getArgList().getArg(i + 1)
|
||||
i = 0 and
|
||||
result = this.getReceiver()
|
||||
or
|
||||
result = this.getArgList().getArg(i + 1)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -157,10 +157,12 @@ edges
|
||||
| test.rs:80:24:80:28 | RangeExpr | test.rs:80:13:80:20 | iter | |
|
||||
| test.rs:80:27:80:28 | 10 | test.rs:80:24:80:28 | RangeExpr | |
|
||||
| test.rs:81:9:85:9 | WhileExpr | test.rs:79:25:86:5 | BlockExpr | |
|
||||
| test.rs:81:15:81:39 | LetExpr | test.rs:81:19:81:25 | TupleStructPat | |
|
||||
| test.rs:81:15:81:39 | LetExpr | test.rs:81:29:81:32 | iter | |
|
||||
| test.rs:81:19:81:25 | TupleStructPat | test.rs:81:9:85:9 | WhileExpr | no-match |
|
||||
| test.rs:81:19:81:25 | TupleStructPat | test.rs:81:24:81:24 | x | match |
|
||||
| test.rs:81:24:81:24 | x | test.rs:82:17:82:17 | PathExpr | match |
|
||||
| test.rs:81:29:81:32 | iter | test.rs:81:29:81:39 | MethodCallExpr | |
|
||||
| test.rs:81:29:81:39 | MethodCallExpr | test.rs:81:19:81:25 | TupleStructPat | |
|
||||
| test.rs:81:41:85:9 | BlockExpr | test.rs:81:15:81:39 | LetExpr | |
|
||||
| test.rs:82:13:84:13 | IfExpr | test.rs:81:41:85:9 | BlockExpr | |
|
||||
| test.rs:82:17:82:17 | PathExpr | test.rs:82:21:82:21 | 5 | |
|
||||
@@ -233,10 +235,11 @@ edges
|
||||
| test.rs:113:25:113:38 | Param | test.rs:114:12:114:26 | LetExpr | |
|
||||
| test.rs:113:48:119:5 | BlockExpr | test.rs:113:5:119:5 | exit test_if_let_else (normal) | |
|
||||
| test.rs:114:9:118:9 | IfExpr | test.rs:113:48:119:5 | BlockExpr | |
|
||||
| test.rs:114:12:114:26 | LetExpr | test.rs:114:16:114:22 | TupleStructPat | |
|
||||
| test.rs:114:12:114:26 | LetExpr | test.rs:114:26:114:26 | a | |
|
||||
| test.rs:114:16:114:22 | TupleStructPat | test.rs:114:21:114:21 | n | match |
|
||||
| test.rs:114:16:114:22 | TupleStructPat | test.rs:117:13:117:13 | 0 | no-match |
|
||||
| test.rs:114:21:114:21 | n | test.rs:115:13:115:13 | n | match |
|
||||
| test.rs:114:26:114:26 | a | test.rs:114:16:114:22 | TupleStructPat | |
|
||||
| test.rs:114:28:116:9 | BlockExpr | test.rs:114:9:118:9 | IfExpr | |
|
||||
| test.rs:115:13:115:13 | n | test.rs:114:28:116:9 | BlockExpr | |
|
||||
| test.rs:116:16:118:9 | BlockExpr | test.rs:114:9:118:9 | IfExpr | |
|
||||
@@ -248,10 +251,11 @@ edges
|
||||
| test.rs:121:43:126:5 | BlockExpr | test.rs:121:5:126:5 | exit test_if_let (normal) | |
|
||||
| test.rs:122:9:124:9 | ExprStmt | test.rs:122:12:122:26 | LetExpr | |
|
||||
| test.rs:122:9:124:9 | IfExpr | test.rs:125:9:125:9 | 0 | |
|
||||
| test.rs:122:12:122:26 | LetExpr | test.rs:122:16:122:22 | TupleStructPat | |
|
||||
| test.rs:122:12:122:26 | LetExpr | test.rs:122:26:122:26 | a | |
|
||||
| test.rs:122:16:122:22 | TupleStructPat | test.rs:122:9:124:9 | IfExpr | no-match |
|
||||
| test.rs:122:16:122:22 | TupleStructPat | test.rs:122:21:122:21 | n | match |
|
||||
| test.rs:122:21:122:21 | n | test.rs:123:13:123:13 | n | match |
|
||||
| test.rs:122:26:122:26 | a | test.rs:122:16:122:22 | TupleStructPat | |
|
||||
| test.rs:122:28:124:9 | BlockExpr | test.rs:122:9:124:9 | IfExpr | |
|
||||
| test.rs:123:13:123:13 | n | test.rs:122:28:124:9 | BlockExpr | |
|
||||
| test.rs:125:9:125:9 | 0 | test.rs:121:43:126:5 | BlockExpr | |
|
||||
|
||||
@@ -149,10 +149,11 @@ edges
|
||||
| variables.rs:74:19:74:40 | CallExpr | variables.rs:74:14:74:41 | CallExpr | |
|
||||
| variables.rs:74:32:74:39 | "Hello!" | variables.rs:74:19:74:40 | CallExpr | |
|
||||
| variables.rs:76:5:79:5 | IfExpr | variables.rs:73:19:80:1 | BlockExpr | |
|
||||
| variables.rs:76:8:77:12 | LetExpr | variables.rs:76:12:76:23 | TupleStructPat | |
|
||||
| variables.rs:76:8:77:12 | LetExpr | variables.rs:77:11:77:12 | s1 | |
|
||||
| variables.rs:76:12:76:23 | TupleStructPat | variables.rs:76:5:79:5 | IfExpr | no-match |
|
||||
| variables.rs:76:12:76:23 | TupleStructPat | variables.rs:76:17:76:22 | s2 | match |
|
||||
| variables.rs:76:17:76:22 | s2 | variables.rs:78:9:78:22 | ExprStmt | match |
|
||||
| variables.rs:77:11:77:12 | s1 | variables.rs:76:12:76:23 | TupleStructPat | |
|
||||
| variables.rs:77:14:79:5 | BlockExpr | variables.rs:76:5:79:5 | IfExpr | |
|
||||
| variables.rs:78:9:78:17 | PathExpr | variables.rs:78:19:78:20 | s2 | |
|
||||
| variables.rs:78:9:78:21 | CallExpr | variables.rs:77:14:79:5 | BlockExpr | |
|
||||
@@ -184,10 +185,11 @@ edges
|
||||
| variables.rs:91:19:91:40 | CallExpr | variables.rs:91:14:91:41 | CallExpr | |
|
||||
| variables.rs:91:32:91:39 | "Hello!" | variables.rs:91:19:91:40 | CallExpr | |
|
||||
| variables.rs:93:5:96:5 | WhileExpr | variables.rs:90:19:97:1 | BlockExpr | |
|
||||
| variables.rs:93:11:94:12 | LetExpr | variables.rs:93:15:93:26 | TupleStructPat | |
|
||||
| variables.rs:93:11:94:12 | LetExpr | variables.rs:94:11:94:12 | s1 | |
|
||||
| variables.rs:93:15:93:26 | TupleStructPat | variables.rs:93:5:96:5 | WhileExpr | no-match |
|
||||
| variables.rs:93:15:93:26 | TupleStructPat | variables.rs:93:20:93:25 | s2 | match |
|
||||
| variables.rs:93:20:93:25 | s2 | variables.rs:95:9:95:22 | ExprStmt | match |
|
||||
| variables.rs:94:11:94:12 | s1 | variables.rs:93:15:93:26 | TupleStructPat | |
|
||||
| variables.rs:94:14:96:5 | BlockExpr | variables.rs:93:11:94:12 | LetExpr | |
|
||||
| variables.rs:95:9:95:17 | PathExpr | variables.rs:95:19:95:20 | s2 | |
|
||||
| variables.rs:95:9:95:21 | CallExpr | variables.rs:94:14:96:5 | BlockExpr | |
|
||||
@@ -455,10 +457,11 @@ edges
|
||||
| variables.rs:224:13:224:27 | ExprStmt | variables.rs:224:13:224:21 | PathExpr | |
|
||||
| variables.rs:224:23:224:25 | a11 | variables.rs:224:13:224:26 | CallExpr | |
|
||||
| variables.rs:225:13:228:13 | IfExpr | variables.rs:223:12:229:9 | BlockExpr | |
|
||||
| variables.rs:225:16:226:15 | LetExpr | variables.rs:225:20:225:36 | TupleStructPat | |
|
||||
| variables.rs:225:16:226:15 | LetExpr | variables.rs:226:15:226:15 | e | |
|
||||
| variables.rs:225:20:225:36 | TupleStructPat | variables.rs:225:13:228:13 | IfExpr | no-match |
|
||||
| variables.rs:225:20:225:36 | TupleStructPat | variables.rs:225:33:225:35 | a12 | match |
|
||||
| variables.rs:225:33:225:35 | a12 | variables.rs:227:17:227:32 | ExprStmt | match |
|
||||
| variables.rs:226:15:226:15 | e | variables.rs:225:20:225:36 | TupleStructPat | |
|
||||
| variables.rs:226:17:228:13 | BlockExpr | variables.rs:225:13:228:13 | IfExpr | |
|
||||
| variables.rs:227:17:227:25 | PathExpr | variables.rs:227:28:227:30 | a12 | |
|
||||
| variables.rs:227:17:227:31 | CallExpr | variables.rs:226:17:228:13 | BlockExpr | |
|
||||
@@ -674,7 +677,10 @@ edges
|
||||
| variables.rs:332:5:332:17 | ExprStmt | variables.rs:332:5:332:13 | PathExpr | |
|
||||
| variables.rs:332:15:332:15 | a | variables.rs:332:5:332:16 | CallExpr | |
|
||||
| variables.rs:333:5:333:27 | MethodCallExpr | variables.rs:334:5:334:17 | ExprStmt | |
|
||||
| variables.rs:333:5:333:28 | ExprStmt | variables.rs:333:5:333:27 | MethodCallExpr | |
|
||||
| variables.rs:333:5:333:28 | ExprStmt | variables.rs:333:25:333:26 | 10 | |
|
||||
| variables.rs:333:6:333:11 | RefExpr | variables.rs:333:5:333:27 | MethodCallExpr | |
|
||||
| variables.rs:333:11:333:11 | a | variables.rs:333:6:333:11 | RefExpr | |
|
||||
| variables.rs:333:25:333:26 | 10 | variables.rs:333:11:333:11 | a | |
|
||||
| variables.rs:334:5:334:13 | PathExpr | variables.rs:334:15:334:15 | a | |
|
||||
| variables.rs:334:5:334:16 | CallExpr | variables.rs:329:17:335:1 | BlockExpr | |
|
||||
| variables.rs:334:5:334:17 | ExprStmt | variables.rs:334:5:334:13 | PathExpr | |
|
||||
|
||||
Reference in New Issue
Block a user