Skip to content

Commit c1e2197

Browse files
committed
Rust: Address review comments
1 parent d8c301a commit c1e2197

File tree

15 files changed

+157
-78
lines changed

15 files changed

+157
-78
lines changed

rust/ql/lib/codeql/rust/dataflow/internal/DataFlowImpl.qll

+1-1
Original file line numberDiff line numberDiff line change
@@ -712,7 +712,7 @@ private class CapturedVariableContent extends Content, TCapturedVariableContent
712712
override string toString() { result = "captured " + v }
713713
}
714714

715-
/** A value refered to by a reference. */
715+
/** A value referred to by a reference. */
716716
final class ReferenceContent extends Content, TReferenceContent {
717717
override string toString() { result = "&ref" }
718718
}

rust/ql/lib/codeql/rust/dataflow/internal/SsaImpl.qll

+7-11
Original file line numberDiff line numberDiff line change
@@ -88,22 +88,16 @@ module SsaInput implements SsaImplCommon::InputSig<Location> {
8888
|
8989
va instanceof VariableReadAccess
9090
or
91+
// For immutable variables, we model a read when they are borrowed
92+
// (although the actual read happens later, if at all).
93+
va = any(RefExpr re).getExpr()
94+
or
9195
// Although compound assignments, like `x += y`, may in fact not read `x`,
9296
// it makes sense to treat them as such
9397
va = any(CompoundAssignmentExpr cae).getLhs()
9498
) and
9599
certain = true
96100
or
97-
// For immutable variables, we model a read when they are borrowed (although the
98-
// actual read happens later, if at all). This only affects the SSA liveness
99-
// analysis.
100-
exists(VariableAccess va |
101-
va = any(RefExpr re).getExpr() and
102-
va = bb.getNode(i).getAstNode() and
103-
v = va.getVariable() and
104-
certain = false
105-
)
106-
or
107101
capturedCallRead(_, bb, i, v) and certain = false
108102
or
109103
capturedExitRead(bb, i, v) and certain = false
@@ -146,7 +140,9 @@ private predicate adjacentDefReadExt(
146140

147141
/** Holds if `v` is read at index `i` in basic block `bb`. */
148142
private predicate variableReadActual(BasicBlock bb, int i, Variable v) {
149-
exists(VariableReadAccess read |
143+
exists(VariableAccess read |
144+
read instanceof VariableReadAccess or read = any(RefExpr re).getExpr()
145+
|
150146
read.getVariable() = v and
151147
read = bb.getNode(i).getAstNode()
152148
)

rust/ql/lib/codeql/rust/elements/internal/VariableImpl.qll

+1
Original file line numberDiff line numberDiff line change
@@ -484,6 +484,7 @@ module Impl {
484484
class VariableReadAccess extends VariableAccess {
485485
VariableReadAccess() {
486486
not this instanceof VariableWriteAccess and
487+
not this = any(RefExpr re).getExpr() and
487488
not this = any(CompoundAssignmentExpr cae).getLhs()
488489
}
489490
}

rust/ql/lib/codeql/rust/frameworks/reqwest.model.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@ extensions:
33
pack: codeql/rust-all
44
extensible: summaryModel
55
data:
6-
- ["repo:https://github.com/seanmonstar/reqwest:reqwest", "<crate::blocking::response::Response>::text", "Argument[self]", "ReturnValue", "taint", "manual"]
6+
- ["repo:https://github.com/seanmonstar/reqwest:reqwest", "<crate::blocking::response::Response>::text", "Argument[self]", "ReturnValue.Variant[crate::result::Result::Ok(0)]", "taint", "manual"]

rust/ql/lib/codeql/rust/frameworks/stdlib/lang-core.model.yml

-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ extensions:
88
- ["lang:core", "<crate::option::Option>::unwrap", "Argument[self]", "ReturnValue", "taint", "manual"]
99
- ["lang:core", "<crate::option::Option>::unwrap_or", "Argument[self].Variant[crate::option::Option::Some(0)]", "ReturnValue", "value", "manual"]
1010
- ["lang:core", "<crate::option::Option>::unwrap_or", "Argument[0]", "ReturnValue", "value", "manual"]
11-
- ["lang:core", "<crate::option::Option>::unwrap_or", "Argument[self]", "ReturnValue", "taint", "manual"]
1211
# Result
1312
- ["lang:core", "<crate::result::Result>::unwrap", "Argument[self].Variant[crate::result::Result::Ok(0)]", "ReturnValue", "value", "manual"]
1413
- ["lang:core", "<crate::result::Result>::unwrap", "Argument[self]", "ReturnValue", "taint", "manual"]

rust/ql/test/library-tests/dataflow/local/DataFlowStep.expected

+1
Original file line numberDiff line numberDiff line change
@@ -458,6 +458,7 @@ localStep
458458
| main.rs:398:7:398:14 | [SSA] [input] SSA phi read(default_name) | main.rs:394:7:394:18 | [SSA] SSA phi read(default_name) |
459459
| main.rs:425:13:425:33 | result_questionmark(...) | main.rs:425:9:425:9 | _ |
460460
storeStep
461+
| file://:0:0:0:0 | [summary] to write: ReturnValue.Variant[crate::result::Result::Ok(0)] in repo:https://github.com/seanmonstar/reqwest:reqwest::_::<crate::blocking::response::Response>::text | Ok | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/seanmonstar/reqwest:reqwest::_::<crate::blocking::response::Response>::text |
461462
| main.rs:94:14:94:22 | source(...) | tuple.0 | main.rs:94:13:94:26 | TupleExpr |
462463
| main.rs:94:25:94:25 | 2 | tuple.1 | main.rs:94:13:94:26 | TupleExpr |
463464
| main.rs:100:14:100:14 | 2 | tuple.0 | main.rs:100:13:100:30 | TupleExpr |
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,45 @@
1-
ERROR: could not resolve module DefaultFlowTest (inline-flow.ql:7,8-23)
2-
ERROR: could not resolve module ValueFlow (inline-flow.ql:8,8-17)
3-
ERROR: could not resolve module ValueFlow (inline-flow.ql:10,6-15)
4-
ERROR: could not resolve module ValueFlow (inline-flow.ql:10,34-43)
5-
ERROR: could not resolve module ValueFlow (inline-flow.ql:11,7-16)
6-
ERROR: could not resolve module utils.InlineFlowTest (inline-flow.ql:6,8-28)
1+
models
2+
edges
3+
| main.rs:13:9:13:9 | a | main.rs:14:14:14:14 | a | provenance | |
4+
| main.rs:13:13:13:22 | source(...) | main.rs:13:9:13:9 | a | provenance | |
5+
| main.rs:14:9:14:9 | b [&ref] | main.rs:15:14:15:14 | b [&ref] | provenance | |
6+
| main.rs:14:13:14:14 | &a [&ref] | main.rs:14:9:14:9 | b [&ref] | provenance | |
7+
| main.rs:14:14:14:14 | a | main.rs:14:13:14:14 | &a [&ref] | provenance | |
8+
| main.rs:15:9:15:9 | c | main.rs:16:10:16:10 | c | provenance | |
9+
| main.rs:15:13:15:14 | * ... | main.rs:15:9:15:9 | c | provenance | |
10+
| main.rs:15:14:15:14 | b [&ref] | main.rs:15:13:15:14 | * ... | provenance | |
11+
| main.rs:40:18:40:21 | SelfParam [MyNumber] | main.rs:41:15:41:18 | self [MyNumber] | provenance | |
12+
| main.rs:41:15:41:18 | self [MyNumber] | main.rs:42:13:42:38 | ...::MyNumber(...) [MyNumber] | provenance | |
13+
| main.rs:42:13:42:38 | ...::MyNumber(...) [MyNumber] | main.rs:42:32:42:37 | number | provenance | |
14+
| main.rs:42:32:42:37 | number | main.rs:40:31:46:5 | { ... } | provenance | |
15+
| main.rs:58:9:58:17 | my_number [MyNumber] | main.rs:59:10:59:18 | my_number [MyNumber] | provenance | |
16+
| main.rs:58:21:58:50 | ...::MyNumber(...) [MyNumber] | main.rs:58:9:58:17 | my_number [MyNumber] | provenance | |
17+
| main.rs:58:40:58:49 | source(...) | main.rs:58:21:58:50 | ...::MyNumber(...) [MyNumber] | provenance | |
18+
| main.rs:59:10:59:18 | my_number [MyNumber] | main.rs:40:18:40:21 | SelfParam [MyNumber] | provenance | |
19+
| main.rs:59:10:59:18 | my_number [MyNumber] | main.rs:59:10:59:30 | my_number.to_number(...) | provenance | |
20+
nodes
21+
| main.rs:13:9:13:9 | a | semmle.label | a |
22+
| main.rs:13:13:13:22 | source(...) | semmle.label | source(...) |
23+
| main.rs:14:9:14:9 | b [&ref] | semmle.label | b [&ref] |
24+
| main.rs:14:13:14:14 | &a [&ref] | semmle.label | &a [&ref] |
25+
| main.rs:14:14:14:14 | a | semmle.label | a |
26+
| main.rs:15:9:15:9 | c | semmle.label | c |
27+
| main.rs:15:13:15:14 | * ... | semmle.label | * ... |
28+
| main.rs:15:14:15:14 | b [&ref] | semmle.label | b [&ref] |
29+
| main.rs:16:10:16:10 | c | semmle.label | c |
30+
| main.rs:40:18:40:21 | SelfParam [MyNumber] | semmle.label | SelfParam [MyNumber] |
31+
| main.rs:40:31:46:5 | { ... } | semmle.label | { ... } |
32+
| main.rs:41:15:41:18 | self [MyNumber] | semmle.label | self [MyNumber] |
33+
| main.rs:42:13:42:38 | ...::MyNumber(...) [MyNumber] | semmle.label | ...::MyNumber(...) [MyNumber] |
34+
| main.rs:42:32:42:37 | number | semmle.label | number |
35+
| main.rs:58:9:58:17 | my_number [MyNumber] | semmle.label | my_number [MyNumber] |
36+
| main.rs:58:21:58:50 | ...::MyNumber(...) [MyNumber] | semmle.label | ...::MyNumber(...) [MyNumber] |
37+
| main.rs:58:40:58:49 | source(...) | semmle.label | source(...) |
38+
| main.rs:59:10:59:18 | my_number [MyNumber] | semmle.label | my_number [MyNumber] |
39+
| main.rs:59:10:59:30 | my_number.to_number(...) | semmle.label | my_number.to_number(...) |
40+
subpaths
41+
| main.rs:59:10:59:18 | my_number [MyNumber] | main.rs:40:18:40:21 | SelfParam [MyNumber] | main.rs:40:31:46:5 | { ... } | main.rs:59:10:59:30 | my_number.to_number(...) |
42+
testFailures
43+
#select
44+
| main.rs:16:10:16:10 | c | main.rs:13:13:13:22 | source(...) | main.rs:16:10:16:10 | c | $@ | main.rs:13:13:13:22 | source(...) | source(...) |
45+
| main.rs:59:10:59:30 | my_number.to_number(...) | main.rs:58:40:58:49 | source(...) | main.rs:59:10:59:30 | my_number.to_number(...) | $@ | main.rs:58:40:58:49 | source(...) | source(...) |

rust/ql/test/library-tests/dataflow/pointers/inline-flow.ql

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
*/
44

55
import rust
6-
import utils.InlineFlowTest
6+
import utils.test.InlineFlowTest
77
import DefaultFlowTest
88
import ValueFlow::PathGraph
99

Original file line numberDiff line numberDiff line change
@@ -1,6 +1,44 @@
1-
ERROR: could not resolve module DefaultFlowTest (inline-taint-flow.ql:7,8-23)
2-
ERROR: could not resolve module TaintFlow (inline-taint-flow.ql:8,8-17)
3-
ERROR: could not resolve module TaintFlow (inline-taint-flow.ql:10,6-15)
4-
ERROR: could not resolve module TaintFlow (inline-taint-flow.ql:10,34-43)
5-
ERROR: could not resolve module TaintFlow (inline-taint-flow.ql:11,7-16)
6-
ERROR: could not resolve module utils.InlineFlowTest (inline-taint-flow.ql:6,8-28)
1+
models
2+
| 1 | Summary: lang:alloc; <crate::string::String>::as_str; Argument[self]; ReturnValue; taint |
3+
edges
4+
| main.rs:20:9:20:9 | s | main.rs:21:9:21:14 | sliced | provenance | |
5+
| main.rs:20:9:20:9 | s | main.rs:21:19:21:25 | s[...] | provenance | |
6+
| main.rs:20:13:20:22 | source(...) | main.rs:20:9:20:9 | s | provenance | |
7+
| main.rs:21:9:21:14 | sliced | main.rs:22:16:22:21 | sliced | provenance | |
8+
| main.rs:21:9:21:14 | sliced [&ref] | main.rs:22:16:22:21 | sliced | provenance | |
9+
| main.rs:21:18:21:25 | &... [&ref] | main.rs:21:9:21:14 | sliced [&ref] | provenance | |
10+
| main.rs:21:19:21:25 | s[...] | main.rs:21:18:21:25 | &... [&ref] | provenance | |
11+
| main.rs:26:9:26:10 | s1 | main.rs:29:9:29:10 | s4 | provenance | |
12+
| main.rs:26:14:26:23 | source(...) | main.rs:26:9:26:10 | s1 | provenance | |
13+
| main.rs:29:9:29:10 | s4 | main.rs:32:10:32:11 | s4 | provenance | |
14+
| main.rs:37:9:37:10 | s1 | main.rs:40:10:40:35 | ... + ... | provenance | |
15+
| main.rs:37:14:37:23 | source(...) | main.rs:37:9:37:10 | s1 | provenance | |
16+
| main.rs:57:9:57:9 | s | main.rs:58:16:58:16 | s | provenance | |
17+
| main.rs:57:13:57:22 | source(...) | main.rs:57:9:57:9 | s | provenance | |
18+
| main.rs:58:16:58:16 | s | main.rs:58:16:58:25 | s.as_str(...) | provenance | MaD:1 |
19+
nodes
20+
| main.rs:20:9:20:9 | s | semmle.label | s |
21+
| main.rs:20:13:20:22 | source(...) | semmle.label | source(...) |
22+
| main.rs:21:9:21:14 | sliced | semmle.label | sliced |
23+
| main.rs:21:9:21:14 | sliced [&ref] | semmle.label | sliced [&ref] |
24+
| main.rs:21:18:21:25 | &... [&ref] | semmle.label | &... [&ref] |
25+
| main.rs:21:19:21:25 | s[...] | semmle.label | s[...] |
26+
| main.rs:22:16:22:21 | sliced | semmle.label | sliced |
27+
| main.rs:26:9:26:10 | s1 | semmle.label | s1 |
28+
| main.rs:26:14:26:23 | source(...) | semmle.label | source(...) |
29+
| main.rs:29:9:29:10 | s4 | semmle.label | s4 |
30+
| main.rs:32:10:32:11 | s4 | semmle.label | s4 |
31+
| main.rs:37:9:37:10 | s1 | semmle.label | s1 |
32+
| main.rs:37:14:37:23 | source(...) | semmle.label | source(...) |
33+
| main.rs:40:10:40:35 | ... + ... | semmle.label | ... + ... |
34+
| main.rs:57:9:57:9 | s | semmle.label | s |
35+
| main.rs:57:13:57:22 | source(...) | semmle.label | source(...) |
36+
| main.rs:58:16:58:16 | s | semmle.label | s |
37+
| main.rs:58:16:58:25 | s.as_str(...) | semmle.label | s.as_str(...) |
38+
subpaths
39+
testFailures
40+
#select
41+
| main.rs:22:16:22:21 | sliced | main.rs:20:13:20:22 | source(...) | main.rs:22:16:22:21 | sliced | $@ | main.rs:20:13:20:22 | source(...) | source(...) |
42+
| main.rs:32:10:32:11 | s4 | main.rs:26:14:26:23 | source(...) | main.rs:32:10:32:11 | s4 | $@ | main.rs:26:14:26:23 | source(...) | source(...) |
43+
| main.rs:40:10:40:35 | ... + ... | main.rs:37:14:37:23 | source(...) | main.rs:40:10:40:35 | ... + ... | $@ | main.rs:37:14:37:23 | source(...) | source(...) |
44+
| main.rs:58:16:58:25 | s.as_str(...) | main.rs:57:13:57:22 | source(...) | main.rs:58:16:58:25 | s.as_str(...) | $@ | main.rs:57:13:57:22 | source(...) | source(...) |

rust/ql/test/library-tests/dataflow/strings/inline-taint-flow.ql

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
*/
44

55
import rust
6-
import utils.InlineFlowTest
6+
import utils.test.InlineFlowTest
77
import DefaultFlowTest
88
import TaintFlow::PathGraph
99

rust/ql/test/library-tests/dataflow/taint/TaintFlowStep.expected

+4-5
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
1-
| file://:0:0:0:0 | [summary param] self in lang:alloc::_::<crate::string::String>::as_str | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:alloc::_::<crate::string::String>::as_str | MaD:11 |
1+
| file://:0:0:0:0 | [summary param] self in lang:alloc::_::<crate::string::String>::as_str | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:alloc::_::<crate::string::String>::as_str | MaD:10 |
22
| file://:0:0:0:0 | [summary param] self in lang:core::_::<crate::option::Option>::unwrap | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::<crate::option::Option>::unwrap | MaD:2 |
3-
| file://:0:0:0:0 | [summary param] self in lang:core::_::<crate::option::Option>::unwrap_or | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::<crate::option::Option>::unwrap_or | MaD:5 |
4-
| file://:0:0:0:0 | [summary param] self in lang:core::_::<crate::result::Result>::unwrap | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::<crate::result::Result>::unwrap | MaD:7 |
5-
| file://:0:0:0:0 | [summary param] self in lang:core::_::<crate::result::Result>::unwrap_or | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::<crate::result::Result>::unwrap_or | MaD:10 |
6-
| file://:0:0:0:0 | [summary param] self in repo:https://github.com/seanmonstar/reqwest:reqwest::_::<crate::blocking::response::Response>::text | file://:0:0:0:0 | [summary] to write: ReturnValue in repo:https://github.com/seanmonstar/reqwest:reqwest::_::<crate::blocking::response::Response>::text | MaD:0 |
3+
| file://:0:0:0:0 | [summary param] self in lang:core::_::<crate::result::Result>::unwrap | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::<crate::result::Result>::unwrap | MaD:6 |
4+
| file://:0:0:0:0 | [summary param] self in lang:core::_::<crate::result::Result>::unwrap_or | file://:0:0:0:0 | [summary] to write: ReturnValue in lang:core::_::<crate::result::Result>::unwrap_or | MaD:9 |
5+
| file://:0:0:0:0 | [summary param] self in repo:https://github.com/seanmonstar/reqwest:reqwest::_::<crate::blocking::response::Response>::text | file://:0:0:0:0 | [summary] to write: ReturnValue.Variant[crate::result::Result::Ok(0)] in repo:https://github.com/seanmonstar/reqwest:reqwest::_::<crate::blocking::response::Response>::text | MaD:0 |
76
| main.rs:4:5:4:8 | 1000 | main.rs:4:5:4:12 | ... + ... | |
87
| main.rs:4:12:4:12 | i | main.rs:4:5:4:12 | ... + ... | |
98
| main.rs:13:10:13:10 | a | main.rs:13:10:13:14 | ... + ... | |

rust/ql/test/library-tests/variables/Ssa.expected

+3-1
Original file line numberDiff line numberDiff line change
@@ -390,7 +390,6 @@ firstRead
390390
| variables.rs:510:9:510:13 | a | variables.rs:510:13:510:13 | a | variables.rs:511:15:511:15 | a |
391391
| variables.rs:514:5:514:5 | a | variables.rs:510:13:510:13 | a | variables.rs:515:15:515:15 | a |
392392
| variables.rs:519:9:519:9 | x | variables.rs:519:9:519:9 | x | variables.rs:520:20:520:20 | x |
393-
| variables.rs:519:9:519:9 | x | variables.rs:519:9:519:9 | x | variables.rs:521:15:521:15 | x |
394393
| variables.rs:523:9:523:9 | z | variables.rs:523:9:523:9 | z | variables.rs:524:20:524:20 | z |
395394
| variables.rs:532:10:532:18 | SelfParam | variables.rs:532:15:532:18 | self | variables.rs:533:6:533:9 | self |
396395
lastRead
@@ -400,6 +399,8 @@ lastRead
400399
| variables.rs:16:9:16:10 | x1 | variables.rs:16:9:16:10 | x1 | variables.rs:17:15:17:16 | x1 |
401400
| variables.rs:21:9:21:14 | x2 | variables.rs:21:13:21:14 | x2 | variables.rs:22:15:22:16 | x2 |
402401
| variables.rs:23:5:23:6 | x2 | variables.rs:21:13:21:14 | x2 | variables.rs:24:15:24:16 | x2 |
402+
| variables.rs:28:9:28:13 | x | variables.rs:28:13:28:13 | x | variables.rs:29:20:29:20 | x |
403+
| variables.rs:30:5:30:5 | x | variables.rs:28:13:28:13 | x | variables.rs:31:20:31:20 | x |
403404
| variables.rs:35:9:35:10 | x3 | variables.rs:35:9:35:10 | x3 | variables.rs:38:9:38:10 | x3 |
404405
| variables.rs:37:9:37:10 | x3 | variables.rs:37:9:37:10 | x3 | variables.rs:39:15:39:16 | x3 |
405406
| variables.rs:43:9:43:10 | x4 | variables.rs:43:9:43:10 | x4 | variables.rs:49:15:49:16 | x4 |
@@ -500,6 +501,7 @@ lastRead
500501
| variables.rs:510:9:510:13 | a | variables.rs:510:13:510:13 | a | variables.rs:513:15:513:15 | a |
501502
| variables.rs:514:5:514:5 | a | variables.rs:510:13:510:13 | a | variables.rs:515:15:515:15 | a |
502503
| variables.rs:519:9:519:9 | x | variables.rs:519:9:519:9 | x | variables.rs:521:15:521:15 | x |
504+
| variables.rs:523:9:523:9 | z | variables.rs:523:9:523:9 | z | variables.rs:524:20:524:20 | z |
503505
| variables.rs:532:10:532:18 | SelfParam | variables.rs:532:15:532:18 | self | variables.rs:533:6:533:9 | self |
504506
adjacentReads
505507
| variables.rs:35:9:35:10 | x3 | variables.rs:35:9:35:10 | x3 | variables.rs:36:15:36:16 | x3 | variables.rs:38:9:38:10 | x3 |

rust/ql/test/library-tests/variables/variables.expected

-10
Original file line numberDiff line numberDiff line change
@@ -293,8 +293,6 @@ variableReadAccess
293293
| variables.rs:17:15:17:16 | x1 | variables.rs:16:9:16:10 | x1 |
294294
| variables.rs:22:15:22:16 | x2 | variables.rs:21:13:21:14 | x2 |
295295
| variables.rs:24:15:24:16 | x2 | variables.rs:21:13:21:14 | x2 |
296-
| variables.rs:29:20:29:20 | x | variables.rs:28:13:28:13 | x |
297-
| variables.rs:31:20:31:20 | x | variables.rs:28:13:28:13 | x |
298296
| variables.rs:36:15:36:16 | x3 | variables.rs:35:9:35:10 | x3 |
299297
| variables.rs:38:9:38:10 | x3 | variables.rs:35:9:35:10 | x3 |
300298
| variables.rs:39:15:39:16 | x3 | variables.rs:37:9:37:10 | x3 |
@@ -371,9 +369,7 @@ variableReadAccess
371369
| variables.rs:335:12:335:12 | v | variables.rs:332:9:332:9 | v |
372370
| variables.rs:336:19:336:22 | text | variables.rs:334:9:334:12 | text |
373371
| variables.rs:343:15:343:15 | a | variables.rs:341:13:341:13 | a |
374-
| variables.rs:344:11:344:11 | a | variables.rs:341:13:341:13 | a |
375372
| variables.rs:345:15:345:15 | a | variables.rs:341:13:341:13 | a |
376-
| variables.rs:351:14:351:14 | i | variables.rs:349:13:349:13 | i |
377373
| variables.rs:352:6:352:10 | ref_i | variables.rs:350:9:350:13 | ref_i |
378374
| variables.rs:353:15:353:15 | i | variables.rs:349:13:349:13 | i |
379375
| variables.rs:357:6:357:6 | x | variables.rs:356:17:356:17 | x |
@@ -385,15 +381,11 @@ variableReadAccess
385381
| variables.rs:366:10:366:10 | x | variables.rs:363:22:363:22 | x |
386382
| variables.rs:367:6:367:6 | y | variables.rs:363:39:363:39 | y |
387383
| variables.rs:368:9:368:9 | x | variables.rs:363:22:363:22 | x |
388-
| variables.rs:374:27:374:27 | x | variables.rs:372:13:372:13 | x |
389384
| variables.rs:375:6:375:6 | y | variables.rs:373:9:373:9 | y |
390385
| variables.rs:377:15:377:15 | x | variables.rs:372:13:372:13 | x |
391-
| variables.rs:381:19:381:19 | x | variables.rs:372:13:372:13 | x |
392-
| variables.rs:383:14:383:14 | z | variables.rs:379:13:379:13 | z |
393386
| variables.rs:384:9:384:9 | w | variables.rs:380:9:380:9 | w |
394387
| variables.rs:386:7:386:7 | w | variables.rs:380:9:380:9 | w |
395388
| variables.rs:388:15:388:15 | z | variables.rs:379:13:379:13 | z |
396-
| variables.rs:394:14:394:14 | x | variables.rs:392:13:392:13 | x |
397389
| variables.rs:395:6:395:6 | y | variables.rs:393:9:393:9 | y |
398390
| variables.rs:396:15:396:15 | x | variables.rs:392:13:392:13 | x |
399391
| variables.rs:403:19:403:19 | x | variables.rs:400:9:400:9 | x |
@@ -437,9 +429,7 @@ variableReadAccess
437429
| variables.rs:512:5:512:5 | a | variables.rs:510:13:510:13 | a |
438430
| variables.rs:513:15:513:15 | a | variables.rs:510:13:510:13 | a |
439431
| variables.rs:515:15:515:15 | a | variables.rs:510:13:510:13 | a |
440-
| variables.rs:520:20:520:20 | x | variables.rs:519:9:519:9 | x |
441432
| variables.rs:521:15:521:15 | x | variables.rs:519:9:519:9 | x |
442-
| variables.rs:524:20:524:20 | z | variables.rs:523:9:523:9 | z |
443433
| variables.rs:533:6:533:9 | self | variables.rs:532:15:532:18 | self |
444434
| variables.rs:539:3:539:3 | a | variables.rs:538:11:538:11 | a |
445435
| variables.rs:541:13:541:13 | a | variables.rs:538:11:538:11 | a |

0 commit comments

Comments
 (0)