diff --git a/rust/ql/lib/codeql/rust/internal/TypeInference.qll b/rust/ql/lib/codeql/rust/internal/TypeInference.qll index 49eb11743c16..5f9a07a7a423 100644 --- a/rust/ql/lib/codeql/rust/internal/TypeInference.qll +++ b/rust/ql/lib/codeql/rust/internal/TypeInference.qll @@ -610,7 +610,7 @@ private module CallExprBaseMatchingInput implements MatchingInputSig { exists(Param p, int i | paramPos(this.getParamList(), p, i) and dpos = TPositionalDeclarationPosition(i) and - result = inferAnnotatedType(p.getPat(), path) + result = p.getTypeRepr().(TypeMention).resolveTypeAt(path) ) or exists(SelfParam self | @@ -1589,9 +1589,9 @@ private module Debug { result = inferType(n, path) } - Function debugResolveMethodCallExpr(MethodCallExpr mce) { - mce = getRelevantLocatable() and - result = resolveMethodCallTarget(mce) + Function debugResolveMethod(MethodCall mc) { + mc = getRelevantLocatable() and + result = resolveMethodCallTarget(mc) } pragma[nomagic] diff --git a/rust/ql/test/library-tests/dataflow/modeled/inline-flow.expected b/rust/ql/test/library-tests/dataflow/modeled/inline-flow.expected index 8219a03269f5..2e16caffa194 100644 --- a/rust/ql/test/library-tests/dataflow/modeled/inline-flow.expected +++ b/rust/ql/test/library-tests/dataflow/modeled/inline-flow.expected @@ -6,12 +6,15 @@ models | 5 | Summary: lang:core; ::zip; Argument[0].Field[core::option::Option::Some(0)]; ReturnValue.Field[core::option::Option::Some(0)].Field[1]; value | | 6 | Summary: lang:core; ::into_inner; Argument[0].Field[core::pin::Pin::__pointer]; ReturnValue; value | | 7 | Summary: lang:core; ::into_inner; Argument[0]; ReturnValue; value | -| 8 | Summary: lang:core; ::new; Argument[0]; ReturnValue.Field[core::pin::Pin::__pointer]; value | -| 9 | Summary: lang:core; ::new; Argument[0]; ReturnValue; value | -| 10 | Summary: lang:core; ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | -| 11 | Summary: lang:core; ::clone; Argument[self].Reference; ReturnValue; value | -| 12 | Summary: lang:core; crate::ptr::read; Argument[0].Reference; ReturnValue; value | -| 13 | Summary: lang:core; crate::ptr::write; Argument[1]; Argument[0].Reference; value | +| 8 | Summary: lang:core; ::into_inner_unchecked; Argument[0]; ReturnValue; value | +| 9 | Summary: lang:core; ::new; Argument[0].Reference; ReturnValue; value | +| 10 | Summary: lang:core; ::new; Argument[0]; ReturnValue.Field[core::pin::Pin::__pointer]; value | +| 11 | Summary: lang:core; ::new; Argument[0]; ReturnValue; value | +| 12 | Summary: lang:core; ::new_unchecked; Argument[0].Reference; ReturnValue; value | +| 13 | Summary: lang:core; ::unwrap; Argument[self].Field[core::result::Result::Ok(0)]; ReturnValue; value | +| 14 | Summary: lang:core; ::clone; Argument[self].Reference; ReturnValue; value | +| 15 | Summary: lang:core; crate::ptr::read; Argument[0].Reference; ReturnValue; value | +| 16 | Summary: lang:core; crate::ptr::write; Argument[1]; Argument[0].Reference; value | edges | main.rs:12:9:12:9 | a [Some] | main.rs:13:10:13:19 | a.unwrap() | provenance | MaD:4 | | main.rs:12:9:12:9 | a [Some] | main.rs:14:13:14:13 | a [Some] | provenance | | @@ -20,18 +23,18 @@ edges | main.rs:14:9:14:9 | b [Some] | main.rs:15:10:15:19 | b.unwrap() | provenance | MaD:4 | | main.rs:14:13:14:13 | a [Some] | main.rs:14:13:14:21 | a.clone() [Some] | provenance | generated | | main.rs:14:13:14:21 | a.clone() [Some] | main.rs:14:9:14:9 | b [Some] | provenance | | -| main.rs:19:9:19:9 | a [Ok] | main.rs:20:10:20:19 | a.unwrap() | provenance | MaD:10 | +| main.rs:19:9:19:9 | a [Ok] | main.rs:20:10:20:19 | a.unwrap() | provenance | MaD:13 | | main.rs:19:9:19:9 | a [Ok] | main.rs:21:13:21:13 | a [Ok] | provenance | | | main.rs:19:31:19:44 | Ok(...) [Ok] | main.rs:19:9:19:9 | a [Ok] | provenance | | | main.rs:19:34:19:43 | source(...) | main.rs:19:31:19:44 | Ok(...) [Ok] | provenance | | -| main.rs:21:9:21:9 | b [Ok] | main.rs:22:10:22:19 | b.unwrap() | provenance | MaD:10 | +| main.rs:21:9:21:9 | b [Ok] | main.rs:22:10:22:19 | b.unwrap() | provenance | MaD:13 | | main.rs:21:13:21:13 | a [Ok] | main.rs:21:13:21:21 | a.clone() [Ok] | provenance | generated | | main.rs:21:13:21:21 | a.clone() [Ok] | main.rs:21:9:21:9 | b [Ok] | provenance | | | main.rs:26:9:26:9 | a | main.rs:27:10:27:10 | a | provenance | | | main.rs:26:9:26:9 | a | main.rs:28:13:28:13 | a | provenance | | | main.rs:26:13:26:22 | source(...) | main.rs:26:9:26:9 | a | provenance | | | main.rs:28:9:28:9 | b | main.rs:29:10:29:10 | b | provenance | | -| main.rs:28:13:28:13 | a | main.rs:28:13:28:21 | a.clone() | provenance | MaD:11 | +| main.rs:28:13:28:13 | a | main.rs:28:13:28:21 | a.clone() | provenance | MaD:14 | | main.rs:28:13:28:13 | a | main.rs:28:13:28:21 | a.clone() | provenance | generated | | main.rs:28:13:28:21 | a.clone() | main.rs:28:9:28:9 | b | provenance | | | main.rs:43:18:43:22 | SelfParam [Wrapper] | main.rs:44:26:44:29 | self [Wrapper] | provenance | | @@ -64,8 +67,8 @@ edges | main.rs:69:18:69:23 | TuplePat [tuple.1] | main.rs:69:22:69:22 | m | provenance | | | main.rs:69:22:69:22 | m | main.rs:71:22:71:22 | m | provenance | | | main.rs:92:29:92:29 | [post] y [&ref] | main.rs:93:33:93:33 | y [&ref] | provenance | | -| main.rs:92:32:92:41 | source(...) | main.rs:92:29:92:29 | [post] y [&ref] | provenance | MaD:13 | -| main.rs:93:33:93:33 | y [&ref] | main.rs:93:18:93:34 | ...::read(...) | provenance | MaD:12 | +| main.rs:92:32:92:41 | source(...) | main.rs:92:29:92:29 | [post] y [&ref] | provenance | MaD:16 | +| main.rs:93:33:93:33 | y [&ref] | main.rs:93:18:93:34 | ...::read(...) | provenance | MaD:15 | | main.rs:108:13:108:17 | mut i | main.rs:109:34:109:34 | i | provenance | | | main.rs:108:13:108:17 | mut i | main.rs:110:33:110:33 | i | provenance | | | main.rs:108:13:108:17 | mut i | main.rs:111:47:111:47 | i | provenance | | @@ -76,8 +79,8 @@ edges | main.rs:109:13:109:20 | mut pin1 [Pin, &ref] | main.rs:115:31:115:34 | pin1 [Pin, &ref] | provenance | | | main.rs:109:24:109:35 | ...::new(...) [&ref] | main.rs:109:13:109:20 | mut pin1 [&ref] | provenance | | | main.rs:109:24:109:35 | ...::new(...) [Pin, &ref] | main.rs:109:13:109:20 | mut pin1 [Pin, &ref] | provenance | | -| main.rs:109:33:109:34 | &i [&ref] | main.rs:109:24:109:35 | ...::new(...) [&ref] | provenance | MaD:9 | -| main.rs:109:33:109:34 | &i [&ref] | main.rs:109:24:109:35 | ...::new(...) [Pin, &ref] | provenance | MaD:8 | +| main.rs:109:33:109:34 | &i [&ref] | main.rs:109:24:109:35 | ...::new(...) [&ref] | provenance | MaD:11 | +| main.rs:109:33:109:34 | &i [&ref] | main.rs:109:24:109:35 | ...::new(...) [Pin, &ref] | provenance | MaD:10 | | main.rs:109:34:109:34 | i | main.rs:109:33:109:34 | &i [&ref] | provenance | | | main.rs:110:13:110:20 | mut pin2 [&ref] | main.rs:116:15:116:18 | pin2 [&ref] | provenance | | | main.rs:110:24:110:34 | ...::pin(...) [&ref] | main.rs:110:13:110:20 | mut pin2 [&ref] | provenance | | @@ -92,10 +95,26 @@ edges | main.rs:115:31:115:34 | pin1 [Pin, &ref] | main.rs:115:15:115:35 | ...::into_inner(...) [&ref] | provenance | MaD:6 | | main.rs:116:15:116:18 | pin2 [&ref] | main.rs:116:14:116:18 | * ... | provenance | | | main.rs:117:15:117:18 | pin3 [&ref] | main.rs:117:14:117:18 | * ... | provenance | | +| main.rs:122:13:122:18 | mut ms [MyStruct] | main.rs:123:34:123:35 | ms [MyStruct] | provenance | | | main.rs:122:13:122:18 | mut ms [MyStruct] | main.rs:127:14:127:15 | ms [MyStruct] | provenance | | | main.rs:122:22:122:49 | MyStruct {...} [MyStruct] | main.rs:122:13:122:18 | mut ms [MyStruct] | provenance | | | main.rs:122:38:122:47 | source(...) | main.rs:122:22:122:49 | MyStruct {...} [MyStruct] | provenance | | +| main.rs:123:13:123:20 | mut pin1 [MyStruct] | main.rs:129:30:129:33 | pin1 [MyStruct] | provenance | | +| main.rs:123:24:123:36 | ...::new(...) [MyStruct] | main.rs:123:13:123:20 | mut pin1 [MyStruct] | provenance | | +| main.rs:123:33:123:35 | &ms [&ref, MyStruct] | main.rs:123:24:123:36 | ...::new(...) [MyStruct] | provenance | MaD:9 | +| main.rs:123:34:123:35 | ms [MyStruct] | main.rs:123:33:123:35 | &ms [&ref, MyStruct] | provenance | | | main.rs:127:14:127:15 | ms [MyStruct] | main.rs:127:14:127:19 | ms.val | provenance | | +| main.rs:129:14:129:34 | ...::into_inner(...) [MyStruct] | main.rs:129:14:129:38 | ... .val | provenance | | +| main.rs:129:30:129:33 | pin1 [MyStruct] | main.rs:129:14:129:34 | ...::into_inner(...) [MyStruct] | provenance | MaD:7 | +| main.rs:136:13:136:18 | mut ms [MyStruct] | main.rs:137:44:137:45 | ms [MyStruct] | provenance | | +| main.rs:136:22:136:49 | MyStruct {...} [MyStruct] | main.rs:136:13:136:18 | mut ms [MyStruct] | provenance | | +| main.rs:136:38:136:47 | source(...) | main.rs:136:22:136:49 | MyStruct {...} [MyStruct] | provenance | | +| main.rs:137:13:137:20 | mut pin5 [MyStruct] | main.rs:139:40:139:43 | pin5 [MyStruct] | provenance | | +| main.rs:137:24:137:46 | ...::new_unchecked(...) [MyStruct] | main.rs:137:13:137:20 | mut pin5 [MyStruct] | provenance | | +| main.rs:137:43:137:45 | &ms [&ref, MyStruct] | main.rs:137:24:137:46 | ...::new_unchecked(...) [MyStruct] | provenance | MaD:12 | +| main.rs:137:44:137:45 | ms [MyStruct] | main.rs:137:43:137:45 | &ms [&ref, MyStruct] | provenance | | +| main.rs:139:14:139:44 | ...::into_inner_unchecked(...) [MyStruct] | main.rs:139:14:139:48 | ... .val | provenance | | +| main.rs:139:40:139:43 | pin5 [MyStruct] | main.rs:139:14:139:44 | ...::into_inner_unchecked(...) [MyStruct] | provenance | MaD:8 | nodes | main.rs:12:9:12:9 | a [Some] | semmle.label | a [Some] | | main.rs:12:13:12:28 | Some(...) [Some] | semmle.label | Some(...) [Some] | @@ -183,8 +202,25 @@ nodes | main.rs:122:13:122:18 | mut ms [MyStruct] | semmle.label | mut ms [MyStruct] | | main.rs:122:22:122:49 | MyStruct {...} [MyStruct] | semmle.label | MyStruct {...} [MyStruct] | | main.rs:122:38:122:47 | source(...) | semmle.label | source(...) | +| main.rs:123:13:123:20 | mut pin1 [MyStruct] | semmle.label | mut pin1 [MyStruct] | +| main.rs:123:24:123:36 | ...::new(...) [MyStruct] | semmle.label | ...::new(...) [MyStruct] | +| main.rs:123:33:123:35 | &ms [&ref, MyStruct] | semmle.label | &ms [&ref, MyStruct] | +| main.rs:123:34:123:35 | ms [MyStruct] | semmle.label | ms [MyStruct] | | main.rs:127:14:127:15 | ms [MyStruct] | semmle.label | ms [MyStruct] | | main.rs:127:14:127:19 | ms.val | semmle.label | ms.val | +| main.rs:129:14:129:34 | ...::into_inner(...) [MyStruct] | semmle.label | ...::into_inner(...) [MyStruct] | +| main.rs:129:14:129:38 | ... .val | semmle.label | ... .val | +| main.rs:129:30:129:33 | pin1 [MyStruct] | semmle.label | pin1 [MyStruct] | +| main.rs:136:13:136:18 | mut ms [MyStruct] | semmle.label | mut ms [MyStruct] | +| main.rs:136:22:136:49 | MyStruct {...} [MyStruct] | semmle.label | MyStruct {...} [MyStruct] | +| main.rs:136:38:136:47 | source(...) | semmle.label | source(...) | +| main.rs:137:13:137:20 | mut pin5 [MyStruct] | semmle.label | mut pin5 [MyStruct] | +| main.rs:137:24:137:46 | ...::new_unchecked(...) [MyStruct] | semmle.label | ...::new_unchecked(...) [MyStruct] | +| main.rs:137:43:137:45 | &ms [&ref, MyStruct] | semmle.label | &ms [&ref, MyStruct] | +| main.rs:137:44:137:45 | ms [MyStruct] | semmle.label | ms [MyStruct] | +| main.rs:139:14:139:44 | ...::into_inner_unchecked(...) [MyStruct] | semmle.label | ...::into_inner_unchecked(...) [MyStruct] | +| main.rs:139:14:139:48 | ... .val | semmle.label | ... .val | +| main.rs:139:40:139:43 | pin5 [MyStruct] | semmle.label | pin5 [MyStruct] | subpaths | main.rs:50:15:50:15 | w [Wrapper] | main.rs:43:18:43:22 | SelfParam [Wrapper] | main.rs:43:33:45:9 | { ... } [Wrapper] | main.rs:53:17:53:25 | w.clone() [Wrapper] | testFailures @@ -205,3 +241,5 @@ testFailures | main.rs:116:14:116:18 | * ... | main.rs:108:21:108:30 | source(...) | main.rs:116:14:116:18 | * ... | $@ | main.rs:108:21:108:30 | source(...) | source(...) | | main.rs:117:14:117:18 | * ... | main.rs:108:21:108:30 | source(...) | main.rs:117:14:117:18 | * ... | $@ | main.rs:108:21:108:30 | source(...) | source(...) | | main.rs:127:14:127:19 | ms.val | main.rs:122:38:122:47 | source(...) | main.rs:127:14:127:19 | ms.val | $@ | main.rs:122:38:122:47 | source(...) | source(...) | +| main.rs:129:14:129:38 | ... .val | main.rs:122:38:122:47 | source(...) | main.rs:129:14:129:38 | ... .val | $@ | main.rs:122:38:122:47 | source(...) | source(...) | +| main.rs:139:14:139:48 | ... .val | main.rs:136:38:136:47 | source(...) | main.rs:139:14:139:48 | ... .val | $@ | main.rs:136:38:136:47 | source(...) | source(...) | diff --git a/rust/ql/test/library-tests/dataflow/modeled/main.rs b/rust/ql/test/library-tests/dataflow/modeled/main.rs index c660a33116dd..292dd2599af2 100644 --- a/rust/ql/test/library-tests/dataflow/modeled/main.rs +++ b/rust/ql/test/library-tests/dataflow/modeled/main.rs @@ -95,8 +95,8 @@ mod ptr { } } -use std::pin::Pin; use std::pin::pin; +use std::pin::Pin; #[derive(Clone)] struct MyStruct { @@ -126,7 +126,7 @@ fn test_pin() { let mut pin4 = pin!(&ms); sink(ms.val); // $ hasValueFlow=41 sink(pin1.val); // $ MISSING: hasValueFlow=41 - sink(Pin::into_inner(pin1).val); // $ MISSING: hasValueFlow=41 + sink(Pin::into_inner(pin1).val); // $ hasValueFlow=41 sink(pin2.val); // $ MISSING: hasValueFlow=41 sink(pin3.val); // $ MISSING: hasValueFlow=41 sink(pin4.val); // $ MISSING: hasValueFlow=41 @@ -136,7 +136,7 @@ fn test_pin() { let mut ms = MyStruct { val: source(42) }; let mut pin5 = Pin::new_unchecked(&ms); sink(pin5.val); // $ MISSING: hasValueFlow=42 - sink(Pin::into_inner_unchecked(pin5).val); // $ MISSING: hasValueFlow=42 + sink(Pin::into_inner_unchecked(pin5).val); // $ hasValueFlow=42 } { diff --git a/rust/ql/test/library-tests/frameworks/postgres/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/frameworks/postgres/CONSISTENCY/PathResolutionConsistency.expected index 0aa771632529..d1946a09d096 100644 --- a/rust/ql/test/library-tests/frameworks/postgres/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/library-tests/frameworks/postgres/CONSISTENCY/PathResolutionConsistency.expected @@ -1,3 +1,16 @@ +multipleMethodCallTargets +| main.rs:22:18:22:31 | query.as_str() | file://:0:0:0:0 | fn as_str | +| main.rs:22:18:22:31 | query.as_str() | file://:0:0:0:0 | fn as_str | +| main.rs:23:24:23:37 | query.as_str() | file://:0:0:0:0 | fn as_str | +| main.rs:23:24:23:37 | query.as_str() | file://:0:0:0:0 | fn as_str | +| main.rs:25:18:25:31 | query.as_str() | file://:0:0:0:0 | fn as_str | +| main.rs:25:18:25:31 | query.as_str() | file://:0:0:0:0 | fn as_str | +| main.rs:28:16:28:29 | query.as_str() | file://:0:0:0:0 | fn as_str | +| main.rs:28:16:28:29 | query.as_str() | file://:0:0:0:0 | fn as_str | +| main.rs:29:20:29:33 | query.as_str() | file://:0:0:0:0 | fn as_str | +| main.rs:29:20:29:33 | query.as_str() | file://:0:0:0:0 | fn as_str | +| main.rs:30:20:30:33 | query.as_str() | file://:0:0:0:0 | fn as_str | +| main.rs:30:20:30:33 | query.as_str() | file://:0:0:0:0 | fn as_str | multipleCanonicalPaths | file://:0:0:0:0 | fn to_ordering | file://:0:0:0:0 | Crate(typenum@1.18.0) | ::to_ordering | | file://:0:0:0:0 | fn to_ordering | file://:0:0:0:0 | Crate(typenum@1.18.0) | ::to_ordering | diff --git a/rust/ql/test/library-tests/type-inference/main.rs b/rust/ql/test/library-tests/type-inference/main.rs index 0d5c377b0dca..a22b68cd2580 100644 --- a/rust/ql/test/library-tests/type-inference/main.rs +++ b/rust/ql/test/library-tests/type-inference/main.rs @@ -1811,7 +1811,7 @@ mod indexers { mod macros { pub fn f() { - let x = format!("Hello, {}", "World!"); // $ MISSING: type=x:String -- needs https://github.com/github/codeql/pull/19658 + let x = format!("Hello, {}", "World!"); // $ type=x:String } } diff --git a/rust/ql/test/library-tests/type-inference/type-inference.expected b/rust/ql/test/library-tests/type-inference/type-inference.expected index 21f5ec0d4669..0e56cf30d2d2 100644 --- a/rust/ql/test/library-tests/type-inference/type-inference.expected +++ b/rust/ql/test/library-tests/type-inference/type-inference.expected @@ -6,6 +6,8 @@ inferType | main.rs:26:17:26:32 | MyThing {...} | | main.rs:5:5:8:5 | MyThing | | main.rs:26:30:26:30 | S | | main.rs:2:5:3:13 | S | | main.rs:27:18:27:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:27:18:27:28 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:27:18:27:28 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:27:26:27:26 | x | | main.rs:5:5:8:5 | MyThing | | main.rs:27:26:27:28 | x.a | | main.rs:2:5:3:13 | S | | main.rs:32:13:32:13 | x | | main.rs:16:5:19:5 | GenericThing | @@ -14,6 +16,8 @@ inferType | main.rs:32:17:32:42 | GenericThing::<...> {...} | A | main.rs:2:5:3:13 | S | | main.rs:32:40:32:40 | S | | main.rs:2:5:3:13 | S | | main.rs:33:18:33:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:33:18:33:28 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:33:18:33:28 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:33:26:33:26 | x | | main.rs:16:5:19:5 | GenericThing | | main.rs:33:26:33:26 | x | A | main.rs:2:5:3:13 | S | | main.rs:33:26:33:28 | x.a | | main.rs:2:5:3:13 | S | @@ -23,6 +27,8 @@ inferType | main.rs:36:17:36:37 | GenericThing {...} | A | main.rs:2:5:3:13 | S | | main.rs:36:35:36:35 | S | | main.rs:2:5:3:13 | S | | main.rs:37:18:37:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:37:18:37:28 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:37:18:37:28 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:37:26:37:26 | x | | main.rs:16:5:19:5 | GenericThing | | main.rs:37:26:37:26 | x | A | main.rs:2:5:3:13 | S | | main.rs:37:26:37:28 | x.a | | main.rs:2:5:3:13 | S | @@ -31,6 +37,8 @@ inferType | main.rs:42:16:42:33 | ...::MyNone(...) | | main.rs:10:5:14:5 | MyOption | | main.rs:42:16:42:33 | ...::MyNone(...) | T | main.rs:2:5:3:13 | S | | main.rs:44:18:44:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:44:18:44:28 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:44:18:44:28 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:44:26:44:26 | x | | main.rs:21:5:23:5 | OptionS | | main.rs:44:26:44:28 | x.a | | main.rs:10:5:14:5 | MyOption | | main.rs:44:26:44:28 | x.a | T | main.rs:2:5:3:13 | S | @@ -43,6 +51,8 @@ inferType | main.rs:48:16:48:33 | ...::MyNone(...) | | main.rs:10:5:14:5 | MyOption | | main.rs:48:16:48:33 | ...::MyNone(...) | T | main.rs:2:5:3:13 | S | | main.rs:50:18:50:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:50:18:50:28 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:50:18:50:28 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:50:26:50:26 | x | | main.rs:16:5:19:5 | GenericThing | | main.rs:50:26:50:26 | x | A | main.rs:10:5:14:5 | MyOption | | main.rs:50:26:50:26 | x | A.T | main.rs:2:5:3:13 | S | @@ -64,6 +74,8 @@ inferType | main.rs:56:30:56:32 | x.a | | main.rs:10:5:14:5 | MyOption | | main.rs:56:30:56:32 | x.a | T | main.rs:2:5:3:13 | S | | main.rs:57:18:57:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:57:18:57:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:57:18:57:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:57:26:57:26 | a | | main.rs:10:5:14:5 | MyOption | | main.rs:57:26:57:26 | a | T | main.rs:2:5:3:13 | S | | main.rs:70:19:70:22 | SelfParam | | main.rs:67:5:67:21 | Foo | @@ -74,6 +86,8 @@ inferType | main.rs:75:13:75:16 | self | | main.rs:67:5:67:21 | Foo | | main.rs:79:23:84:5 | { ... } | | main.rs:67:5:67:21 | Foo | | main.rs:80:18:80:33 | "main.rs::m1::f\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:80:18:80:33 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:80:18:80:33 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:81:13:81:13 | x | | main.rs:67:5:67:21 | Foo | | main.rs:81:17:81:22 | Foo {...} | | main.rs:67:5:67:21 | Foo | | main.rs:82:13:82:13 | y | | main.rs:67:5:67:21 | Foo | @@ -83,6 +97,8 @@ inferType | main.rs:86:22:86:22 | y | | main.rs:67:5:67:21 | Foo | | main.rs:86:37:90:5 | { ... } | | main.rs:67:5:67:21 | Foo | | main.rs:87:18:87:33 | "main.rs::m1::g\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:87:18:87:33 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:87:18:87:33 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:88:9:88:9 | x | | main.rs:67:5:67:21 | Foo | | main.rs:88:9:88:14 | x.m1() | | main.rs:67:5:67:21 | Foo | | main.rs:89:9:89:9 | y | | main.rs:67:5:67:21 | Foo | @@ -136,18 +152,26 @@ inferType | main.rs:152:17:152:33 | MyThing {...} | A | main.rs:127:5:128:14 | S2 | | main.rs:152:30:152:31 | S2 | | main.rs:127:5:128:14 | S2 | | main.rs:155:18:155:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:155:18:155:28 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:155:18:155:28 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:155:26:155:26 | x | | main.rs:120:5:123:5 | MyThing | | main.rs:155:26:155:26 | x | A | main.rs:125:5:126:14 | S1 | | main.rs:155:26:155:28 | x.a | | main.rs:125:5:126:14 | S1 | | main.rs:156:18:156:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:156:18:156:28 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:156:18:156:28 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:156:26:156:26 | y | | main.rs:120:5:123:5 | MyThing | | main.rs:156:26:156:26 | y | A | main.rs:127:5:128:14 | S2 | | main.rs:156:26:156:28 | y.a | | main.rs:127:5:128:14 | S2 | | main.rs:158:18:158:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:158:18:158:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:158:18:158:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:158:26:158:26 | x | | main.rs:120:5:123:5 | MyThing | | main.rs:158:26:158:26 | x | A | main.rs:125:5:126:14 | S1 | | main.rs:158:26:158:31 | x.m1() | | main.rs:125:5:126:14 | S1 | | main.rs:159:18:159:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:159:18:159:33 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:159:18:159:33 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:159:26:159:26 | y | | main.rs:120:5:123:5 | MyThing | | main.rs:159:26:159:26 | y | A | main.rs:127:5:128:14 | S2 | | main.rs:159:26:159:31 | y.m1() | | main.rs:120:5:123:5 | MyThing | @@ -164,10 +188,14 @@ inferType | main.rs:162:17:162:33 | MyThing {...} | A | main.rs:127:5:128:14 | S2 | | main.rs:162:30:162:31 | S2 | | main.rs:127:5:128:14 | S2 | | main.rs:164:18:164:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:164:18:164:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:164:18:164:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:164:26:164:26 | x | | main.rs:120:5:123:5 | MyThing | | main.rs:164:26:164:26 | x | A | main.rs:125:5:126:14 | S1 | | main.rs:164:26:164:31 | x.m2() | | main.rs:125:5:126:14 | S1 | | main.rs:165:18:165:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:165:18:165:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:165:18:165:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:165:26:165:26 | y | | main.rs:120:5:123:5 | MyThing | | main.rs:165:26:165:26 | y | A | main.rs:127:5:128:14 | S2 | | main.rs:165:26:165:31 | y.m2() | | main.rs:127:5:128:14 | S2 | @@ -307,10 +335,14 @@ inferType | main.rs:320:24:320:40 | MyThing {...} | A | main.rs:185:5:186:14 | S3 | | main.rs:320:37:320:38 | S3 | | main.rs:185:5:186:14 | S3 | | main.rs:324:18:324:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:324:18:324:38 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:324:18:324:38 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:324:26:324:33 | thing_s1 | | main.rs:170:5:173:5 | MyThing | | main.rs:324:26:324:33 | thing_s1 | A | main.rs:181:5:182:14 | S1 | | main.rs:324:26:324:38 | thing_s1.m1() | | main.rs:181:5:182:14 | S1 | | main.rs:325:18:325:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:325:18:325:40 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:325:18:325:40 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:325:26:325:33 | thing_s2 | | main.rs:170:5:173:5 | MyThing | | main.rs:325:26:325:33 | thing_s2 | A | main.rs:183:5:184:14 | S2 | | main.rs:325:26:325:38 | thing_s2.m1() | | main.rs:170:5:173:5 | MyThing | @@ -321,6 +353,8 @@ inferType | main.rs:326:22:326:29 | thing_s3 | A | main.rs:185:5:186:14 | S3 | | main.rs:326:22:326:34 | thing_s3.m1() | | main.rs:185:5:186:14 | S3 | | main.rs:327:18:327:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:327:18:327:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:327:18:327:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:327:26:327:27 | s3 | | main.rs:185:5:186:14 | S3 | | main.rs:329:13:329:14 | p1 | | main.rs:175:5:179:5 | MyPair | | main.rs:329:13:329:14 | p1 | P1 | main.rs:181:5:182:14 | S1 | @@ -331,6 +365,8 @@ inferType | main.rs:329:31:329:32 | S1 | | main.rs:181:5:182:14 | S1 | | main.rs:329:39:329:40 | S1 | | main.rs:181:5:182:14 | S1 | | main.rs:330:18:330:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:330:18:330:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:330:18:330:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:330:26:330:27 | p1 | | main.rs:175:5:179:5 | MyPair | | main.rs:330:26:330:27 | p1 | P1 | main.rs:181:5:182:14 | S1 | | main.rs:330:26:330:27 | p1 | P2 | main.rs:181:5:182:14 | S1 | @@ -344,6 +380,8 @@ inferType | main.rs:332:31:332:32 | S1 | | main.rs:181:5:182:14 | S1 | | main.rs:332:39:332:40 | S2 | | main.rs:183:5:184:14 | S2 | | main.rs:333:18:333:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:333:18:333:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:333:18:333:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:333:26:333:27 | p2 | | main.rs:175:5:179:5 | MyPair | | main.rs:333:26:333:27 | p2 | P1 | main.rs:181:5:182:14 | S1 | | main.rs:333:26:333:27 | p2 | P2 | main.rs:183:5:184:14 | S2 | @@ -361,6 +399,8 @@ inferType | main.rs:336:30:336:31 | S1 | | main.rs:181:5:182:14 | S1 | | main.rs:337:17:337:18 | S3 | | main.rs:185:5:186:14 | S3 | | main.rs:339:18:339:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:339:18:339:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:339:18:339:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:339:26:339:27 | p3 | | main.rs:175:5:179:5 | MyPair | | main.rs:339:26:339:27 | p3 | P1 | main.rs:170:5:173:5 | MyThing | | main.rs:339:26:339:27 | p3 | P1.A | main.rs:181:5:182:14 | S1 | @@ -380,6 +420,8 @@ inferType | main.rs:343:17:343:17 | a | P2 | main.rs:181:5:182:14 | S1 | | main.rs:343:17:343:23 | a.fst() | | main.rs:181:5:182:14 | S1 | | main.rs:344:18:344:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:344:18:344:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:344:18:344:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:344:26:344:26 | x | | main.rs:181:5:182:14 | S1 | | main.rs:345:13:345:13 | y | | main.rs:181:5:182:14 | S1 | | main.rs:345:17:345:17 | a | | main.rs:175:5:179:5 | MyPair | @@ -387,6 +429,8 @@ inferType | main.rs:345:17:345:17 | a | P2 | main.rs:181:5:182:14 | S1 | | main.rs:345:17:345:23 | a.snd() | | main.rs:181:5:182:14 | S1 | | main.rs:346:18:346:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:346:18:346:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:346:18:346:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:346:26:346:26 | y | | main.rs:181:5:182:14 | S1 | | main.rs:352:13:352:13 | b | | main.rs:175:5:179:5 | MyPair | | main.rs:352:13:352:13 | b | P1 | main.rs:183:5:184:14 | S2 | @@ -402,6 +446,8 @@ inferType | main.rs:353:17:353:17 | b | P2 | main.rs:181:5:182:14 | S1 | | main.rs:353:17:353:23 | b.fst() | | main.rs:181:5:182:14 | S1 | | main.rs:354:18:354:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:354:18:354:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:354:18:354:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:354:26:354:26 | x | | main.rs:181:5:182:14 | S1 | | main.rs:355:13:355:13 | y | | main.rs:183:5:184:14 | S2 | | main.rs:355:17:355:17 | b | | main.rs:175:5:179:5 | MyPair | @@ -409,12 +455,16 @@ inferType | main.rs:355:17:355:17 | b | P2 | main.rs:181:5:182:14 | S1 | | main.rs:355:17:355:23 | b.snd() | | main.rs:183:5:184:14 | S2 | | main.rs:356:18:356:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:356:18:356:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:356:18:356:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:356:26:356:26 | y | | main.rs:183:5:184:14 | S2 | | main.rs:360:13:360:13 | x | | main.rs:181:5:182:14 | S1 | | main.rs:360:17:360:39 | call_trait_m1(...) | | main.rs:181:5:182:14 | S1 | | main.rs:360:31:360:38 | thing_s1 | | main.rs:170:5:173:5 | MyThing | | main.rs:360:31:360:38 | thing_s1 | A | main.rs:181:5:182:14 | S1 | | main.rs:361:18:361:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:361:18:361:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:361:18:361:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:361:26:361:26 | x | | main.rs:181:5:182:14 | S1 | | main.rs:362:13:362:13 | y | | main.rs:170:5:173:5 | MyThing | | main.rs:362:13:362:13 | y | A | main.rs:183:5:184:14 | S2 | @@ -423,6 +473,8 @@ inferType | main.rs:362:31:362:38 | thing_s2 | | main.rs:170:5:173:5 | MyThing | | main.rs:362:31:362:38 | thing_s2 | A | main.rs:183:5:184:14 | S2 | | main.rs:363:18:363:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:363:18:363:28 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:363:18:363:28 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:363:26:363:26 | y | | main.rs:170:5:173:5 | MyThing | | main.rs:363:26:363:26 | y | A | main.rs:183:5:184:14 | S2 | | main.rs:363:26:363:28 | y.a | | main.rs:183:5:184:14 | S2 | @@ -440,6 +492,8 @@ inferType | main.rs:367:25:367:25 | a | P1 | main.rs:181:5:182:14 | S1 | | main.rs:367:25:367:25 | a | P2 | main.rs:181:5:182:14 | S1 | | main.rs:368:18:368:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:368:18:368:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:368:18:368:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:368:26:368:26 | x | | main.rs:181:5:182:14 | S1 | | main.rs:369:13:369:13 | y | | main.rs:181:5:182:14 | S1 | | main.rs:369:17:369:26 | get_snd(...) | | main.rs:181:5:182:14 | S1 | @@ -447,6 +501,8 @@ inferType | main.rs:369:25:369:25 | a | P1 | main.rs:181:5:182:14 | S1 | | main.rs:369:25:369:25 | a | P2 | main.rs:181:5:182:14 | S1 | | main.rs:370:18:370:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:370:18:370:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:370:18:370:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:370:26:370:26 | y | | main.rs:181:5:182:14 | S1 | | main.rs:373:13:373:13 | b | | main.rs:175:5:179:5 | MyPair | | main.rs:373:13:373:13 | b | P1 | main.rs:183:5:184:14 | S2 | @@ -462,6 +518,8 @@ inferType | main.rs:374:25:374:25 | b | P1 | main.rs:183:5:184:14 | S2 | | main.rs:374:25:374:25 | b | P2 | main.rs:181:5:182:14 | S1 | | main.rs:375:18:375:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:375:18:375:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:375:18:375:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:375:26:375:26 | x | | main.rs:181:5:182:14 | S1 | | main.rs:376:13:376:13 | y | | main.rs:183:5:184:14 | S2 | | main.rs:376:17:376:26 | get_snd(...) | | main.rs:183:5:184:14 | S2 | @@ -469,6 +527,8 @@ inferType | main.rs:376:25:376:25 | b | P1 | main.rs:183:5:184:14 | S2 | | main.rs:376:25:376:25 | b | P2 | main.rs:181:5:182:14 | S1 | | main.rs:377:18:377:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:377:18:377:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:377:18:377:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:377:26:377:26 | y | | main.rs:183:5:184:14 | S2 | | main.rs:379:13:379:13 | c | | main.rs:175:5:179:5 | MyPair | | main.rs:379:13:379:13 | c | P1 | main.rs:185:5:186:14 | S3 | @@ -510,10 +570,14 @@ inferType | main.rs:403:26:403:29 | SelfParam | | main.rs:392:5:393:14 | S1 | | main.rs:403:38:405:9 | { ... } | | main.rs:392:5:393:14 | S1 | | main.rs:404:20:404:31 | "not called" | | {EXTERNAL LOCATION} | str | +| main.rs:404:20:404:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:404:20:404:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:408:28:408:31 | SelfParam | | main.rs:392:5:393:14 | S1 | | main.rs:408:34:408:35 | s1 | | main.rs:392:5:393:14 | S1 | | main.rs:408:48:410:9 | { ... } | | main.rs:392:5:393:14 | S1 | | main.rs:409:20:409:31 | "not called" | | {EXTERNAL LOCATION} | str | +| main.rs:409:20:409:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:409:20:409:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:415:26:415:29 | SelfParam | | main.rs:392:5:393:14 | S1 | | main.rs:415:38:417:9 | { ... } | | main.rs:392:5:393:14 | S1 | | main.rs:416:13:416:16 | self | | main.rs:392:5:393:14 | S1 | @@ -523,9 +587,13 @@ inferType | main.rs:426:13:426:13 | x | | main.rs:392:5:393:14 | S1 | | main.rs:426:17:426:18 | S1 | | main.rs:392:5:393:14 | S1 | | main.rs:427:18:427:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:427:18:427:42 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:427:18:427:42 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:427:26:427:26 | x | | main.rs:392:5:393:14 | S1 | | main.rs:427:26:427:42 | x.common_method() | | main.rs:392:5:393:14 | S1 | | main.rs:428:18:428:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:428:18:428:44 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:428:18:428:44 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:428:26:428:26 | x | | main.rs:392:5:393:14 | S1 | | main.rs:428:26:428:44 | x.common_method_2() | | main.rs:392:5:393:14 | S1 | | main.rs:445:19:445:22 | SelfParam | | main.rs:443:5:446:5 | Self [trait FirstTrait] | @@ -535,24 +603,32 @@ inferType | main.rs:455:18:455:18 | x | | main.rs:453:45:453:61 | T | | main.rs:455:18:455:27 | x.method() | | main.rs:453:35:453:42 | I | | main.rs:456:18:456:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:456:18:456:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:456:18:456:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:456:26:456:27 | s1 | | main.rs:453:35:453:42 | I | | main.rs:459:65:459:65 | x | | main.rs:459:46:459:62 | T | | main.rs:461:13:461:14 | s2 | | main.rs:459:36:459:43 | I | | main.rs:461:18:461:18 | x | | main.rs:459:46:459:62 | T | | main.rs:461:18:461:27 | x.method() | | main.rs:459:36:459:43 | I | | main.rs:462:18:462:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:462:18:462:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:462:18:462:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:462:26:462:27 | s2 | | main.rs:459:36:459:43 | I | | main.rs:465:49:465:49 | x | | main.rs:465:30:465:46 | T | | main.rs:466:13:466:13 | s | | main.rs:435:5:436:14 | S1 | | main.rs:466:17:466:17 | x | | main.rs:465:30:465:46 | T | | main.rs:466:17:466:26 | x.method() | | main.rs:435:5:436:14 | S1 | | main.rs:467:18:467:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:467:18:467:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:467:18:467:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:467:26:467:26 | s | | main.rs:435:5:436:14 | S1 | | main.rs:470:53:470:53 | x | | main.rs:470:34:470:50 | T | | main.rs:471:13:471:13 | s | | main.rs:435:5:436:14 | S1 | | main.rs:471:17:471:17 | x | | main.rs:470:34:470:50 | T | | main.rs:471:17:471:26 | x.method() | | main.rs:435:5:436:14 | S1 | | main.rs:472:18:472:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:472:18:472:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:472:18:472:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:472:26:472:26 | s | | main.rs:435:5:436:14 | S1 | | main.rs:476:16:476:19 | SelfParam | | main.rs:475:5:479:5 | Self [trait Pair] | | main.rs:478:16:478:19 | SelfParam | | main.rs:475:5:479:5 | Self [trait Pair] | @@ -565,6 +641,8 @@ inferType | main.rs:484:18:484:18 | y | | main.rs:481:41:481:55 | T | | main.rs:484:18:484:24 | y.snd() | | main.rs:438:5:439:14 | S2 | | main.rs:485:18:485:29 | "{:?}, {:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:485:18:485:37 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:485:18:485:37 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:485:32:485:33 | s1 | | main.rs:435:5:436:14 | S1 | | main.rs:485:36:485:37 | s2 | | main.rs:438:5:439:14 | S2 | | main.rs:488:69:488:69 | x | | main.rs:488:52:488:66 | T | @@ -576,6 +654,8 @@ inferType | main.rs:491:18:491:18 | y | | main.rs:488:52:488:66 | T | | main.rs:491:18:491:24 | y.snd() | | main.rs:488:41:488:49 | T2 | | main.rs:492:18:492:29 | "{:?}, {:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:492:18:492:37 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:492:18:492:37 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:492:32:492:33 | s1 | | main.rs:435:5:436:14 | S1 | | main.rs:492:36:492:37 | s2 | | main.rs:488:41:488:49 | T2 | | main.rs:508:15:508:18 | SelfParam | | main.rs:507:5:516:5 | Self [trait MyTrait] | @@ -611,10 +691,14 @@ inferType | main.rs:536:17:536:33 | MyThing {...} | T | main.rs:504:5:505:14 | S2 | | main.rs:536:30:536:31 | S2 | | main.rs:504:5:505:14 | S2 | | main.rs:538:18:538:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:538:18:538:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:538:18:538:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:538:26:538:26 | x | | main.rs:497:5:500:5 | MyThing | | main.rs:538:26:538:26 | x | T | main.rs:502:5:503:14 | S1 | | main.rs:538:26:538:31 | x.m1() | | main.rs:502:5:503:14 | S1 | | main.rs:539:18:539:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:539:18:539:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:539:18:539:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:539:26:539:26 | y | | main.rs:497:5:500:5 | MyThing | | main.rs:539:26:539:26 | y | T | main.rs:504:5:505:14 | S2 | | main.rs:539:26:539:31 | y.m1() | | main.rs:504:5:505:14 | S2 | @@ -629,10 +713,14 @@ inferType | main.rs:542:17:542:33 | MyThing {...} | T | main.rs:504:5:505:14 | S2 | | main.rs:542:30:542:31 | S2 | | main.rs:504:5:505:14 | S2 | | main.rs:544:18:544:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:544:18:544:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:544:18:544:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:544:26:544:26 | x | | main.rs:497:5:500:5 | MyThing | | main.rs:544:26:544:26 | x | T | main.rs:502:5:503:14 | S1 | | main.rs:544:26:544:31 | x.m2() | | main.rs:502:5:503:14 | S1 | | main.rs:545:18:545:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:545:18:545:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:545:18:545:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:545:26:545:26 | y | | main.rs:497:5:500:5 | MyThing | | main.rs:545:26:545:26 | y | T | main.rs:504:5:505:14 | S2 | | main.rs:545:26:545:31 | y.m2() | | main.rs:504:5:505:14 | S2 | @@ -647,10 +735,14 @@ inferType | main.rs:548:18:548:34 | MyThing {...} | T | main.rs:504:5:505:14 | S2 | | main.rs:548:31:548:32 | S2 | | main.rs:504:5:505:14 | S2 | | main.rs:550:18:550:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:550:18:550:42 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:550:18:550:42 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:550:26:550:42 | call_trait_m1(...) | | main.rs:502:5:503:14 | S1 | | main.rs:550:40:550:41 | x2 | | main.rs:497:5:500:5 | MyThing | | main.rs:550:40:550:41 | x2 | T | main.rs:502:5:503:14 | S1 | | main.rs:551:18:551:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:551:18:551:42 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:551:18:551:42 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:551:26:551:42 | call_trait_m1(...) | | main.rs:504:5:505:14 | S2 | | main.rs:551:40:551:41 | y2 | | main.rs:497:5:500:5 | MyThing | | main.rs:551:40:551:41 | y2 | T | main.rs:504:5:505:14 | S2 | @@ -678,6 +770,8 @@ inferType | main.rs:560:37:560:38 | x3 | T | main.rs:497:5:500:5 | MyThing | | main.rs:560:37:560:38 | x3 | T.T | main.rs:502:5:503:14 | S1 | | main.rs:561:18:561:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:561:18:561:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:561:18:561:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:561:26:561:26 | a | | main.rs:502:5:503:14 | S1 | | main.rs:562:13:562:13 | b | | main.rs:504:5:505:14 | S2 | | main.rs:562:17:562:39 | call_trait_thing_m1(...) | | main.rs:504:5:505:14 | S2 | @@ -685,6 +779,8 @@ inferType | main.rs:562:37:562:38 | y3 | T | main.rs:497:5:500:5 | MyThing | | main.rs:562:37:562:38 | y3 | T.T | main.rs:504:5:505:14 | S2 | | main.rs:563:18:563:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:563:18:563:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:563:18:563:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:563:26:563:26 | b | | main.rs:504:5:505:14 | S2 | | main.rs:574:19:574:22 | SelfParam | | main.rs:568:5:571:5 | Wrapper | | main.rs:574:19:574:22 | SelfParam | A | main.rs:573:10:573:10 | A | @@ -759,6 +855,8 @@ inferType | main.rs:686:13:686:14 | x1 | | main.rs:619:5:620:13 | S | | main.rs:686:18:686:18 | S | | main.rs:619:5:620:13 | S | | main.rs:688:18:688:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:688:18:688:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:688:18:688:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:688:26:688:27 | x1 | | main.rs:619:5:620:13 | S | | main.rs:688:26:688:32 | x1.m1() | | main.rs:625:5:626:14 | AT | | main.rs:690:13:690:14 | x2 | | main.rs:619:5:620:13 | S | @@ -767,16 +865,22 @@ inferType | main.rs:692:17:692:18 | x2 | | main.rs:619:5:620:13 | S | | main.rs:692:17:692:23 | x2.m2() | | main.rs:625:5:626:14 | AT | | main.rs:693:18:693:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:693:18:693:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:693:18:693:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:693:26:693:26 | y | | main.rs:625:5:626:14 | AT | | main.rs:695:13:695:14 | x3 | | main.rs:619:5:620:13 | S | | main.rs:695:18:695:18 | S | | main.rs:619:5:620:13 | S | | main.rs:697:18:697:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:697:18:697:43 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:697:18:697:43 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:697:26:697:27 | x3 | | main.rs:619:5:620:13 | S | | main.rs:697:26:697:34 | x3.put(...) | | main.rs:568:5:571:5 | Wrapper | | main.rs:697:26:697:34 | x3.put(...) | A | {EXTERNAL LOCATION} | i32 | | main.rs:697:26:697:43 | ... .unwrap() | | {EXTERNAL LOCATION} | i32 | | main.rs:697:33:697:33 | 1 | | {EXTERNAL LOCATION} | i32 | | main.rs:700:18:700:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:700:18:700:49 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:700:18:700:49 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:700:26:700:27 | x3 | | main.rs:619:5:620:13 | S | | main.rs:700:26:700:40 | x3.putTwo(...) | | main.rs:568:5:571:5 | Wrapper | | main.rs:700:26:700:40 | x3.putTwo(...) | A | main.rs:639:36:639:50 | AssociatedParam | @@ -785,15 +889,21 @@ inferType | main.rs:700:39:700:39 | 3 | | {EXTERNAL LOCATION} | i32 | | main.rs:702:20:702:20 | S | | main.rs:619:5:620:13 | S | | main.rs:703:18:703:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:703:18:703:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:703:18:703:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:705:13:705:14 | x5 | | main.rs:622:5:623:14 | S2 | | main.rs:705:18:705:19 | S2 | | main.rs:622:5:623:14 | S2 | | main.rs:706:18:706:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:706:18:706:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:706:18:706:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:706:26:706:27 | x5 | | main.rs:622:5:623:14 | S2 | | main.rs:706:26:706:32 | x5.m1() | | main.rs:568:5:571:5 | Wrapper | | main.rs:706:26:706:32 | x5.m1() | A | main.rs:622:5:623:14 | S2 | | main.rs:707:13:707:14 | x6 | | main.rs:622:5:623:14 | S2 | | main.rs:707:18:707:19 | S2 | | main.rs:622:5:623:14 | S2 | | main.rs:708:18:708:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:708:18:708:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:708:18:708:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:708:26:708:27 | x6 | | main.rs:622:5:623:14 | S2 | | main.rs:708:26:708:32 | x6.m2() | | main.rs:568:5:571:5 | Wrapper | | main.rs:708:26:708:32 | x6.m2() | A | main.rs:622:5:623:14 | S2 | @@ -827,10 +937,14 @@ inferType | main.rs:739:17:739:36 | ...::C2 {...} | A | main.rs:725:5:726:14 | S2 | | main.rs:739:33:739:34 | S2 | | main.rs:725:5:726:14 | S2 | | main.rs:741:18:741:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:741:18:741:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:741:18:741:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:741:26:741:26 | x | | main.rs:717:5:721:5 | MyEnum | | main.rs:741:26:741:26 | x | A | main.rs:723:5:724:14 | S1 | | main.rs:741:26:741:31 | x.m1() | | main.rs:723:5:724:14 | S1 | | main.rs:742:18:742:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:742:18:742:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:742:18:742:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:742:26:742:26 | y | | main.rs:717:5:721:5 | MyEnum | | main.rs:742:26:742:26 | y | A | main.rs:725:5:726:14 | S2 | | main.rs:742:26:742:31 | y.m1() | | main.rs:725:5:726:14 | S2 | @@ -889,6 +1003,8 @@ inferType | main.rs:821:17:821:22 | x.m1() | | main.rs:747:5:750:5 | MyThing | | main.rs:821:17:821:22 | x.m1() | A | main.rs:757:5:758:14 | S1 | | main.rs:822:18:822:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:822:18:822:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:822:18:822:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:822:26:822:26 | a | | main.rs:747:5:750:5 | MyThing | | main.rs:822:26:822:26 | a | A | main.rs:757:5:758:14 | S1 | | main.rs:826:13:826:13 | x | | main.rs:747:5:750:5 | MyThing | @@ -902,10 +1018,14 @@ inferType | main.rs:827:17:827:33 | MyThing {...} | A | main.rs:759:5:760:14 | S2 | | main.rs:827:30:827:31 | S2 | | main.rs:759:5:760:14 | S2 | | main.rs:829:18:829:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:829:18:829:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:829:18:829:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:829:26:829:26 | x | | main.rs:747:5:750:5 | MyThing | | main.rs:829:26:829:26 | x | A | main.rs:757:5:758:14 | S1 | | main.rs:829:26:829:31 | x.m1() | | main.rs:757:5:758:14 | S1 | | main.rs:830:18:830:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:830:18:830:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:830:18:830:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:830:26:830:26 | y | | main.rs:747:5:750:5 | MyThing | | main.rs:830:26:830:26 | y | A | main.rs:759:5:760:14 | S2 | | main.rs:830:26:830:31 | y.m1() | | main.rs:759:5:760:14 | S2 | @@ -920,10 +1040,14 @@ inferType | main.rs:833:17:833:33 | MyThing {...} | A | main.rs:759:5:760:14 | S2 | | main.rs:833:30:833:31 | S2 | | main.rs:759:5:760:14 | S2 | | main.rs:835:18:835:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:835:18:835:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:835:18:835:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:835:26:835:26 | x | | main.rs:747:5:750:5 | MyThing | | main.rs:835:26:835:26 | x | A | main.rs:757:5:758:14 | S1 | | main.rs:835:26:835:31 | x.m2() | | main.rs:757:5:758:14 | S1 | | main.rs:836:18:836:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:836:18:836:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:836:18:836:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:836:26:836:26 | y | | main.rs:747:5:750:5 | MyThing | | main.rs:836:26:836:26 | y | A | main.rs:759:5:760:14 | S2 | | main.rs:836:26:836:31 | y.m2() | | main.rs:759:5:760:14 | S2 | @@ -938,10 +1062,14 @@ inferType | main.rs:839:17:839:34 | MyThing2 {...} | A | main.rs:759:5:760:14 | S2 | | main.rs:839:31:839:32 | S2 | | main.rs:759:5:760:14 | S2 | | main.rs:841:18:841:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:841:18:841:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:841:18:841:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:841:26:841:26 | x | | main.rs:752:5:755:5 | MyThing2 | | main.rs:841:26:841:26 | x | A | main.rs:757:5:758:14 | S1 | | main.rs:841:26:841:31 | x.m3() | | main.rs:757:5:758:14 | S1 | | main.rs:842:18:842:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:842:18:842:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:842:18:842:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:842:26:842:26 | y | | main.rs:752:5:755:5 | MyThing2 | | main.rs:842:26:842:26 | y | A | main.rs:759:5:760:14 | S2 | | main.rs:842:26:842:31 | y.m3() | | main.rs:759:5:760:14 | S2 | @@ -981,6 +1109,8 @@ inferType | main.rs:884:13:884:13 | x | | main.rs:856:5:857:14 | S1 | | main.rs:884:17:884:18 | S1 | | main.rs:856:5:857:14 | S1 | | main.rs:885:18:885:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:885:18:885:31 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:885:18:885:31 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:885:26:885:31 | id(...) | | file://:0:0:0:0 | & | | main.rs:885:26:885:31 | id(...) | &T | main.rs:856:5:857:14 | S1 | | main.rs:885:29:885:30 | &x | | file://:0:0:0:0 | & | @@ -989,6 +1119,8 @@ inferType | main.rs:887:13:887:13 | x | | main.rs:856:5:857:14 | S1 | | main.rs:887:17:887:18 | S1 | | main.rs:856:5:857:14 | S1 | | main.rs:888:18:888:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:888:18:888:37 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:888:18:888:37 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:888:26:888:37 | id::<...>(...) | | file://:0:0:0:0 | & | | main.rs:888:26:888:37 | id::<...>(...) | &T | main.rs:856:5:857:14 | S1 | | main.rs:888:35:888:36 | &x | | file://:0:0:0:0 | & | @@ -997,6 +1129,8 @@ inferType | main.rs:890:13:890:13 | x | | main.rs:856:5:857:14 | S1 | | main.rs:890:17:890:18 | S1 | | main.rs:856:5:857:14 | S1 | | main.rs:891:18:891:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:891:18:891:44 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:891:18:891:44 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:891:26:891:44 | id::<...>(...) | | file://:0:0:0:0 | & | | main.rs:891:26:891:44 | id::<...>(...) | &T | main.rs:856:5:857:14 | S1 | | main.rs:891:42:891:43 | &x | | file://:0:0:0:0 | & | @@ -1021,10 +1155,14 @@ inferType | main.rs:912:19:912:22 | self | Snd | main.rs:910:15:910:17 | Snd | | main.rs:913:43:913:82 | MacroExpr | | main.rs:910:15:910:17 | Snd | | main.rs:913:50:913:81 | "PairNone has no second elemen... | | {EXTERNAL LOCATION} | str | +| main.rs:913:50:913:81 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:913:50:913:81 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:913:50:913:81 | MacroExpr | | main.rs:910:15:910:17 | Snd | | main.rs:913:50:913:81 | { ... } | | main.rs:910:15:910:17 | Snd | | main.rs:914:43:914:81 | MacroExpr | | main.rs:910:15:910:17 | Snd | | main.rs:914:50:914:80 | "PairFst has no second element... | | {EXTERNAL LOCATION} | str | +| main.rs:914:50:914:80 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:914:50:914:80 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:914:50:914:80 | MacroExpr | | main.rs:910:15:910:17 | Snd | | main.rs:914:50:914:80 | { ... } | | main.rs:910:15:910:17 | Snd | | main.rs:915:37:915:39 | snd | | main.rs:910:15:910:17 | Snd | @@ -1047,6 +1185,8 @@ inferType | main.rs:943:17:943:29 | t.unwrapSnd() | Snd | main.rs:927:5:928:14 | S3 | | main.rs:943:17:943:41 | ... .unwrapSnd() | | main.rs:927:5:928:14 | S3 | | main.rs:944:18:944:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:944:18:944:26 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:944:18:944:26 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:944:26:944:26 | x | | main.rs:927:5:928:14 | S3 | | main.rs:949:13:949:14 | p1 | | main.rs:902:5:908:5 | PairOption | | main.rs:949:13:949:14 | p1 | Fst | main.rs:921:5:922:14 | S1 | @@ -1057,6 +1197,8 @@ inferType | main.rs:949:47:949:48 | S1 | | main.rs:921:5:922:14 | S1 | | main.rs:949:51:949:52 | S2 | | main.rs:924:5:925:14 | S2 | | main.rs:950:18:950:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:950:18:950:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:950:18:950:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:950:26:950:27 | p1 | | main.rs:902:5:908:5 | PairOption | | main.rs:950:26:950:27 | p1 | Fst | main.rs:921:5:922:14 | S1 | | main.rs:950:26:950:27 | p1 | Snd | main.rs:924:5:925:14 | S2 | @@ -1067,6 +1209,8 @@ inferType | main.rs:953:26:953:47 | ...::PairNone(...) | Fst | main.rs:921:5:922:14 | S1 | | main.rs:953:26:953:47 | ...::PairNone(...) | Snd | main.rs:924:5:925:14 | S2 | | main.rs:954:18:954:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:954:18:954:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:954:18:954:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:954:26:954:27 | p2 | | main.rs:902:5:908:5 | PairOption | | main.rs:954:26:954:27 | p2 | Fst | main.rs:921:5:922:14 | S1 | | main.rs:954:26:954:27 | p2 | Snd | main.rs:924:5:925:14 | S2 | @@ -1078,6 +1222,8 @@ inferType | main.rs:957:34:957:56 | ...::PairSnd(...) | Snd | main.rs:927:5:928:14 | S3 | | main.rs:957:54:957:55 | S3 | | main.rs:927:5:928:14 | S3 | | main.rs:958:18:958:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:958:18:958:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:958:18:958:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:958:26:958:27 | p3 | | main.rs:902:5:908:5 | PairOption | | main.rs:958:26:958:27 | p3 | Fst | main.rs:924:5:925:14 | S2 | | main.rs:958:26:958:27 | p3 | Snd | main.rs:927:5:928:14 | S3 | @@ -1088,6 +1234,8 @@ inferType | main.rs:961:35:961:56 | ...::PairNone(...) | Fst | main.rs:924:5:925:14 | S2 | | main.rs:961:35:961:56 | ...::PairNone(...) | Snd | main.rs:927:5:928:14 | S3 | | main.rs:962:18:962:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:962:18:962:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:962:18:962:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:962:26:962:27 | p3 | | main.rs:902:5:908:5 | PairOption | | main.rs:962:26:962:27 | p3 | Fst | main.rs:924:5:925:14 | S2 | | main.rs:962:26:962:27 | p3 | Snd | main.rs:927:5:928:14 | S3 | @@ -1136,6 +1284,8 @@ inferType | main.rs:1008:13:1008:14 | x1 | | main.rs:969:5:973:5 | MyOption | | main.rs:1008:18:1008:37 | ...::new(...) | | main.rs:969:5:973:5 | MyOption | | main.rs:1009:18:1009:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1009:18:1009:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1009:18:1009:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1009:26:1009:27 | x1 | | main.rs:969:5:973:5 | MyOption | | main.rs:1011:13:1011:18 | mut x2 | | main.rs:969:5:973:5 | MyOption | | main.rs:1011:13:1011:18 | mut x2 | T | main.rs:1004:5:1005:13 | S | @@ -1145,6 +1295,8 @@ inferType | main.rs:1012:9:1012:10 | x2 | T | main.rs:1004:5:1005:13 | S | | main.rs:1012:16:1012:16 | S | | main.rs:1004:5:1005:13 | S | | main.rs:1013:18:1013:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1013:18:1013:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1013:18:1013:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1013:26:1013:27 | x2 | | main.rs:969:5:973:5 | MyOption | | main.rs:1013:26:1013:27 | x2 | T | main.rs:1004:5:1005:13 | S | | main.rs:1015:13:1015:18 | mut x3 | | main.rs:969:5:973:5 | MyOption | @@ -1152,6 +1304,8 @@ inferType | main.rs:1016:9:1016:10 | x3 | | main.rs:969:5:973:5 | MyOption | | main.rs:1016:21:1016:21 | S | | main.rs:1004:5:1005:13 | S | | main.rs:1017:18:1017:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1017:18:1017:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1017:18:1017:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1017:26:1017:27 | x3 | | main.rs:969:5:973:5 | MyOption | | main.rs:1019:13:1019:18 | mut x4 | | main.rs:969:5:973:5 | MyOption | | main.rs:1019:13:1019:18 | mut x4 | T | main.rs:1004:5:1005:13 | S | @@ -1164,6 +1318,8 @@ inferType | main.rs:1020:28:1020:29 | x4 | T | main.rs:1004:5:1005:13 | S | | main.rs:1020:32:1020:32 | S | | main.rs:1004:5:1005:13 | S | | main.rs:1021:18:1021:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1021:18:1021:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1021:18:1021:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1021:26:1021:27 | x4 | | main.rs:969:5:973:5 | MyOption | | main.rs:1021:26:1021:27 | x4 | T | main.rs:1004:5:1005:13 | S | | main.rs:1023:13:1023:14 | x5 | | main.rs:969:5:973:5 | MyOption | @@ -1175,6 +1331,8 @@ inferType | main.rs:1023:35:1023:57 | ...::MyNone(...) | | main.rs:969:5:973:5 | MyOption | | main.rs:1023:35:1023:57 | ...::MyNone(...) | T | main.rs:1004:5:1005:13 | S | | main.rs:1024:18:1024:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1024:18:1024:37 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1024:18:1024:37 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1024:26:1024:27 | x5 | | main.rs:969:5:973:5 | MyOption | | main.rs:1024:26:1024:27 | x5 | T | main.rs:969:5:973:5 | MyOption | | main.rs:1024:26:1024:27 | x5 | T.T | main.rs:1004:5:1005:13 | S | @@ -1189,6 +1347,8 @@ inferType | main.rs:1026:35:1026:57 | ...::MyNone(...) | | main.rs:969:5:973:5 | MyOption | | main.rs:1026:35:1026:57 | ...::MyNone(...) | T | main.rs:1004:5:1005:13 | S | | main.rs:1027:18:1027:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1027:18:1027:61 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1027:18:1027:61 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1027:26:1027:61 | ...::flatten(...) | | main.rs:969:5:973:5 | MyOption | | main.rs:1027:26:1027:61 | ...::flatten(...) | T | main.rs:1004:5:1005:13 | S | | main.rs:1027:59:1027:60 | x6 | | main.rs:969:5:973:5 | MyOption | @@ -1211,6 +1371,8 @@ inferType | main.rs:1033:13:1033:31 | ...::MySome(...) | T | main.rs:1004:5:1005:13 | S | | main.rs:1033:30:1033:30 | S | | main.rs:1004:5:1005:13 | S | | main.rs:1035:18:1035:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1035:18:1035:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1035:18:1035:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1035:26:1035:32 | from_if | | main.rs:969:5:973:5 | MyOption | | main.rs:1035:26:1035:32 | from_if | T | main.rs:1004:5:1005:13 | S | | main.rs:1038:13:1038:22 | from_match | | main.rs:969:5:973:5 | MyOption | @@ -1228,6 +1390,8 @@ inferType | main.rs:1040:22:1040:40 | ...::MySome(...) | T | main.rs:1004:5:1005:13 | S | | main.rs:1040:39:1040:39 | S | | main.rs:1004:5:1005:13 | S | | main.rs:1042:18:1042:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1042:18:1042:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1042:18:1042:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1042:26:1042:35 | from_match | | main.rs:969:5:973:5 | MyOption | | main.rs:1042:26:1042:35 | from_match | T | main.rs:1004:5:1005:13 | S | | main.rs:1045:13:1045:21 | from_loop | | main.rs:969:5:973:5 | MyOption | @@ -1243,6 +1407,8 @@ inferType | main.rs:1049:19:1049:37 | ...::MySome(...) | T | main.rs:1004:5:1005:13 | S | | main.rs:1049:36:1049:36 | S | | main.rs:1004:5:1005:13 | S | | main.rs:1051:18:1051:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1051:18:1051:34 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1051:18:1051:34 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1051:26:1051:34 | from_loop | | main.rs:969:5:973:5 | MyOption | | main.rs:1051:26:1051:34 | from_loop | T | main.rs:1004:5:1005:13 | S | | main.rs:1064:15:1064:18 | SelfParam | | main.rs:1057:5:1058:19 | S | @@ -1279,6 +1445,8 @@ inferType | main.rs:1078:18:1078:22 | S(...) | T | main.rs:1060:5:1061:14 | S2 | | main.rs:1078:20:1078:21 | S2 | | main.rs:1060:5:1061:14 | S2 | | main.rs:1079:18:1079:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1079:18:1079:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1079:18:1079:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1079:26:1079:27 | x1 | | main.rs:1057:5:1058:19 | S | | main.rs:1079:26:1079:27 | x1 | T | main.rs:1060:5:1061:14 | S2 | | main.rs:1079:26:1079:32 | x1.m1() | | main.rs:1060:5:1061:14 | S2 | @@ -1288,11 +1456,15 @@ inferType | main.rs:1081:18:1081:22 | S(...) | T | main.rs:1060:5:1061:14 | S2 | | main.rs:1081:20:1081:21 | S2 | | main.rs:1060:5:1061:14 | S2 | | main.rs:1083:18:1083:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1083:18:1083:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1083:18:1083:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1083:26:1083:27 | x2 | | main.rs:1057:5:1058:19 | S | | main.rs:1083:26:1083:27 | x2 | T | main.rs:1060:5:1061:14 | S2 | | main.rs:1083:26:1083:32 | x2.m2() | | file://:0:0:0:0 | & | | main.rs:1083:26:1083:32 | x2.m2() | &T | main.rs:1060:5:1061:14 | S2 | | main.rs:1084:18:1084:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1084:18:1084:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1084:18:1084:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1084:26:1084:27 | x2 | | main.rs:1057:5:1058:19 | S | | main.rs:1084:26:1084:27 | x2 | T | main.rs:1060:5:1061:14 | S2 | | main.rs:1084:26:1084:32 | x2.m3() | | file://:0:0:0:0 | & | @@ -1303,6 +1475,8 @@ inferType | main.rs:1086:18:1086:22 | S(...) | T | main.rs:1060:5:1061:14 | S2 | | main.rs:1086:20:1086:21 | S2 | | main.rs:1060:5:1061:14 | S2 | | main.rs:1088:18:1088:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1088:18:1088:41 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1088:18:1088:41 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1088:26:1088:41 | ...::m2(...) | | file://:0:0:0:0 | & | | main.rs:1088:26:1088:41 | ...::m2(...) | &T | main.rs:1060:5:1061:14 | S2 | | main.rs:1088:38:1088:40 | &x3 | | file://:0:0:0:0 | & | @@ -1311,6 +1485,8 @@ inferType | main.rs:1088:39:1088:40 | x3 | | main.rs:1057:5:1058:19 | S | | main.rs:1088:39:1088:40 | x3 | T | main.rs:1060:5:1061:14 | S2 | | main.rs:1089:18:1089:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1089:18:1089:41 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1089:18:1089:41 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1089:26:1089:41 | ...::m3(...) | | file://:0:0:0:0 | & | | main.rs:1089:26:1089:41 | ...::m3(...) | &T | main.rs:1060:5:1061:14 | S2 | | main.rs:1089:38:1089:40 | &x3 | | file://:0:0:0:0 | & | @@ -1328,12 +1504,16 @@ inferType | main.rs:1091:19:1091:23 | S(...) | T | main.rs:1060:5:1061:14 | S2 | | main.rs:1091:21:1091:22 | S2 | | main.rs:1060:5:1061:14 | S2 | | main.rs:1093:18:1093:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1093:18:1093:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1093:18:1093:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1093:26:1093:27 | x4 | | file://:0:0:0:0 | & | | main.rs:1093:26:1093:27 | x4 | &T | main.rs:1057:5:1058:19 | S | | main.rs:1093:26:1093:27 | x4 | &T.T | main.rs:1060:5:1061:14 | S2 | | main.rs:1093:26:1093:32 | x4.m2() | | file://:0:0:0:0 | & | | main.rs:1093:26:1093:32 | x4.m2() | &T | main.rs:1060:5:1061:14 | S2 | | main.rs:1094:18:1094:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1094:18:1094:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1094:18:1094:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1094:26:1094:27 | x4 | | file://:0:0:0:0 | & | | main.rs:1094:26:1094:27 | x4 | &T | main.rs:1057:5:1058:19 | S | | main.rs:1094:26:1094:27 | x4 | &T.T | main.rs:1060:5:1061:14 | S2 | @@ -1349,11 +1529,15 @@ inferType | main.rs:1096:19:1096:23 | S(...) | T | main.rs:1060:5:1061:14 | S2 | | main.rs:1096:21:1096:22 | S2 | | main.rs:1060:5:1061:14 | S2 | | main.rs:1098:18:1098:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1098:18:1098:32 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1098:18:1098:32 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1098:26:1098:27 | x5 | | file://:0:0:0:0 | & | | main.rs:1098:26:1098:27 | x5 | &T | main.rs:1057:5:1058:19 | S | | main.rs:1098:26:1098:27 | x5 | &T.T | main.rs:1060:5:1061:14 | S2 | | main.rs:1098:26:1098:32 | x5.m1() | | main.rs:1060:5:1061:14 | S2 | | main.rs:1099:18:1099:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1099:18:1099:29 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1099:18:1099:29 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1099:26:1099:27 | x5 | | file://:0:0:0:0 | & | | main.rs:1099:26:1099:27 | x5 | &T | main.rs:1057:5:1058:19 | S | | main.rs:1099:26:1099:27 | x5 | &T.T | main.rs:1060:5:1061:14 | S2 | @@ -1377,6 +1561,8 @@ inferType | main.rs:1101:19:1101:23 | S(...) | T | main.rs:1060:5:1061:14 | S2 | | main.rs:1101:21:1101:22 | S2 | | main.rs:1060:5:1061:14 | S2 | | main.rs:1104:18:1104:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1104:18:1104:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1104:18:1104:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1104:26:1104:30 | (...) | | file://:0:0:0:0 | & | | main.rs:1104:26:1104:30 | (...) | | main.rs:1057:5:1058:19 | S | | main.rs:1104:26:1104:30 | (...) | &T | main.rs:1057:5:1058:19 | S | @@ -1411,6 +1597,8 @@ inferType | main.rs:1109:17:1109:23 | x7.m1() | | file://:0:0:0:0 | & | | main.rs:1109:17:1109:23 | x7.m1() | &T | main.rs:1060:5:1061:14 | S2 | | main.rs:1110:18:1110:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1110:18:1110:27 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1110:18:1110:27 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1110:26:1110:27 | x7 | | main.rs:1057:5:1058:19 | S | | main.rs:1110:26:1110:27 | x7 | T | file://:0:0:0:0 | & | | main.rs:1110:26:1110:27 | x7 | T.&T | main.rs:1060:5:1061:14 | S2 | @@ -1585,6 +1773,8 @@ inferType | main.rs:1205:22:1205:30 | &mut flag | &T | main.rs:1163:5:1166:5 | MyFlag | | main.rs:1205:27:1205:30 | flag | | main.rs:1163:5:1166:5 | MyFlag | | main.rs:1206:18:1206:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1206:18:1206:29 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1206:18:1206:29 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1206:26:1206:29 | flag | | main.rs:1163:5:1166:5 | MyFlag | | main.rs:1220:43:1223:5 | { ... } | | {EXTERNAL LOCATION} | Result | | main.rs:1220:43:1223:5 | { ... } | E | main.rs:1213:5:1214:14 | S1 | @@ -1654,6 +1844,8 @@ inferType | main.rs:1243:53:1246:9 | { ... } | | {EXTERNAL LOCATION} | Result | | main.rs:1243:53:1246:9 | { ... } | E | main.rs:1213:5:1214:14 | S1 | | main.rs:1244:22:1244:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1244:22:1244:30 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1244:22:1244:30 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1245:13:1245:34 | ...::Ok::<...>(...) | | {EXTERNAL LOCATION} | Result | | main.rs:1245:13:1245:34 | ...::Ok::<...>(...) | E | main.rs:1213:5:1214:14 | S1 | | main.rs:1247:9:1247:23 | ...::Err(...) | | {EXTERNAL LOCATION} | Result | @@ -1664,14 +1856,20 @@ inferType | main.rs:1251:37:1251:52 | try_same_error(...) | E | main.rs:1213:5:1214:14 | S1 | | main.rs:1251:37:1251:52 | try_same_error(...) | T | main.rs:1213:5:1214:14 | S1 | | main.rs:1252:22:1252:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1252:22:1252:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1252:22:1252:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1255:37:1255:55 | try_convert_error(...) | | {EXTERNAL LOCATION} | Result | | main.rs:1255:37:1255:55 | try_convert_error(...) | E | main.rs:1216:5:1217:14 | S2 | | main.rs:1255:37:1255:55 | try_convert_error(...) | T | main.rs:1213:5:1214:14 | S1 | | main.rs:1256:22:1256:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1256:22:1256:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1256:22:1256:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1259:37:1259:49 | try_chained(...) | | {EXTERNAL LOCATION} | Result | | main.rs:1259:37:1259:49 | try_chained(...) | E | main.rs:1216:5:1217:14 | S2 | | main.rs:1259:37:1259:49 | try_chained(...) | T | main.rs:1213:5:1214:14 | S1 | | main.rs:1260:22:1260:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1260:22:1260:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1260:22:1260:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1263:37:1263:63 | try_complex(...) | | {EXTERNAL LOCATION} | Result | | main.rs:1263:37:1263:63 | try_complex(...) | E | main.rs:1213:5:1214:14 | S1 | | main.rs:1263:37:1263:63 | try_complex(...) | T | main.rs:1213:5:1214:14 | S1 | @@ -1680,6 +1878,8 @@ inferType | main.rs:1263:49:1263:62 | ...::Ok(...) | T | main.rs:1213:5:1214:14 | S1 | | main.rs:1263:60:1263:61 | S1 | | main.rs:1213:5:1214:14 | S1 | | main.rs:1264:22:1264:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1264:22:1264:35 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1264:22:1264:35 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1271:13:1271:13 | x | | {EXTERNAL LOCATION} | i32 | | main.rs:1271:22:1271:22 | 1 | | {EXTERNAL LOCATION} | i32 | | main.rs:1272:13:1272:13 | y | | {EXTERNAL LOCATION} | i32 | @@ -2598,8 +2798,13 @@ inferType | main.rs:1808:24:1808:25 | xs | | file://:0:0:0:0 | [] | | main.rs:1808:24:1808:25 | xs | [T;...] | main.rs:1763:5:1764:13 | S | | main.rs:1808:24:1808:25 | xs | [T] | main.rs:1763:5:1764:13 | S | +| main.rs:1814:13:1814:13 | x | | {EXTERNAL LOCATION} | String | +| main.rs:1814:17:1814:46 | MacroExpr | | {EXTERNAL LOCATION} | String | | main.rs:1814:25:1814:35 | "Hello, {}" | | {EXTERNAL LOCATION} | str | | main.rs:1814:25:1814:45 | ...::format(...) | | {EXTERNAL LOCATION} | String | +| main.rs:1814:25:1814:45 | ...::must_use(...) | | {EXTERNAL LOCATION} | String | +| main.rs:1814:25:1814:45 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments | +| main.rs:1814:25:1814:45 | MacroExpr | | {EXTERNAL LOCATION} | Arguments | | main.rs:1814:25:1814:45 | { ... } | | {EXTERNAL LOCATION} | String | | main.rs:1814:38:1814:45 | "World!" | | {EXTERNAL LOCATION} | str | | main.rs:1820:19:1820:23 | SelfParam | | file://:0:0:0:0 | & | diff --git a/rust/ql/test/query-tests/security/CWE-089/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/query-tests/security/CWE-089/CONSISTENCY/PathResolutionConsistency.expected index 598e52f932c1..53a0536a4013 100644 --- a/rust/ql/test/query-tests/security/CWE-089/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/query-tests/security/CWE-089/CONSISTENCY/PathResolutionConsistency.expected @@ -3,6 +3,8 @@ multipleMethodCallTargets | sqlx.rs:64:26:64:46 | safe_query_1.as_str() | file://:0:0:0:0 | fn as_str | | sqlx.rs:65:26:65:46 | safe_query_2.as_str() | file://:0:0:0:0 | fn as_str | | sqlx.rs:65:26:65:46 | safe_query_2.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:66:26:66:46 | safe_query_3.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:66:26:66:46 | safe_query_3.as_str() | file://:0:0:0:0 | fn as_str | | sqlx.rs:67:26:67:48 | unsafe_query_1.as_str() | file://:0:0:0:0 | fn as_str | | sqlx.rs:67:26:67:48 | unsafe_query_1.as_str() | file://:0:0:0:0 | fn as_str | | sqlx.rs:69:30:69:52 | unsafe_query_2.as_str() | file://:0:0:0:0 | fn as_str | @@ -13,6 +15,8 @@ multipleMethodCallTargets | sqlx.rs:75:25:75:45 | safe_query_1.as_str() | file://:0:0:0:0 | fn as_str | | sqlx.rs:76:25:76:45 | safe_query_2.as_str() | file://:0:0:0:0 | fn as_str | | sqlx.rs:76:25:76:45 | safe_query_2.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:77:25:77:45 | safe_query_3.as_str() | file://:0:0:0:0 | fn as_str | +| sqlx.rs:77:25:77:45 | safe_query_3.as_str() | file://:0:0:0:0 | fn as_str | | sqlx.rs:78:25:78:47 | unsafe_query_1.as_str() | file://:0:0:0:0 | fn as_str | | sqlx.rs:78:25:78:47 | unsafe_query_1.as_str() | file://:0:0:0:0 | fn as_str | | sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() | file://:0:0:0:0 | fn as_str | diff --git a/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected b/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected index ab8e995be762..c642c75df1d8 100644 --- a/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected +++ b/rust/ql/test/query-tests/security/CWE-089/SqlInjection.expected @@ -24,7 +24,9 @@ edges | sqlx.rs:49:9:49:21 | remote_number | sqlx.rs:52:32:52:87 | MacroExpr | provenance | | | sqlx.rs:49:25:49:52 | remote_string.parse() [Ok] | sqlx.rs:49:25:49:65 | ... .unwrap_or(...) | provenance | MaD:7 | | sqlx.rs:49:25:49:65 | ... .unwrap_or(...) | sqlx.rs:49:9:49:21 | remote_number | provenance | | +| sqlx.rs:52:9:52:20 | safe_query_3 | sqlx.rs:66:26:66:37 | safe_query_3 | provenance | | | sqlx.rs:52:9:52:20 | safe_query_3 | sqlx.rs:66:26:66:46 | safe_query_3.as_str() | provenance | MaD:3 | +| sqlx.rs:52:9:52:20 | safe_query_3 | sqlx.rs:77:25:77:36 | safe_query_3 | provenance | | | sqlx.rs:52:9:52:20 | safe_query_3 | sqlx.rs:77:25:77:45 | safe_query_3.as_str() | provenance | MaD:3 | | sqlx.rs:52:24:52:88 | res | sqlx.rs:52:32:52:87 | { ... } | provenance | | | sqlx.rs:52:32:52:87 | ...::format(...) | sqlx.rs:52:24:52:88 | res | provenance | | @@ -46,6 +48,8 @@ edges | sqlx.rs:59:17:59:72 | ...::must_use(...) | sqlx.rs:56:9:56:22 | unsafe_query_4 | provenance | | | sqlx.rs:59:17:59:72 | MacroExpr | sqlx.rs:59:17:59:72 | ...::format(...) | provenance | MaD:4 | | sqlx.rs:59:17:59:72 | { ... } | sqlx.rs:59:17:59:72 | ...::must_use(...) | provenance | MaD:9 | +| sqlx.rs:66:26:66:37 | safe_query_3 | sqlx.rs:66:26:66:46 | safe_query_3.as_str() | provenance | MaD:3 | +| sqlx.rs:77:25:77:36 | safe_query_3 | sqlx.rs:77:25:77:45 | safe_query_3.as_str() | provenance | MaD:3 | models | 1 | Source: lang:std; crate::env::args; commandargs; ReturnValue.Element | | 2 | Source: repo:https://github.com/seanmonstar/reqwest:reqwest; crate::blocking::get; remote; ReturnValue.Field[core::result::Result::Ok(0)] | @@ -91,10 +95,12 @@ nodes | sqlx.rs:59:17:59:72 | ...::must_use(...) | semmle.label | ...::must_use(...) | | sqlx.rs:59:17:59:72 | MacroExpr | semmle.label | MacroExpr | | sqlx.rs:59:17:59:72 | { ... } | semmle.label | { ... } | +| sqlx.rs:66:26:66:37 | safe_query_3 | semmle.label | safe_query_3 | | sqlx.rs:66:26:66:46 | safe_query_3.as_str() | semmle.label | safe_query_3.as_str() | | sqlx.rs:67:26:67:48 | unsafe_query_1.as_str() | semmle.label | unsafe_query_1.as_str() | | sqlx.rs:69:30:69:52 | unsafe_query_2.as_str() | semmle.label | unsafe_query_2.as_str() | | sqlx.rs:71:30:71:52 | unsafe_query_4.as_str() | semmle.label | unsafe_query_4.as_str() | +| sqlx.rs:77:25:77:36 | safe_query_3 | semmle.label | safe_query_3 | | sqlx.rs:77:25:77:45 | safe_query_3.as_str() | semmle.label | safe_query_3.as_str() | | sqlx.rs:78:25:78:47 | unsafe_query_1.as_str() | semmle.label | unsafe_query_1.as_str() | | sqlx.rs:80:29:80:51 | unsafe_query_2.as_str() | semmle.label | unsafe_query_2.as_str() | diff --git a/rust/ql/test/query-tests/security/CWE-312/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/query-tests/security/CWE-312/CONSISTENCY/PathResolutionConsistency.expected index 36e75877d2be..dbbd99bc9d2b 100644 --- a/rust/ql/test/query-tests/security/CWE-312/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/query-tests/security/CWE-312/CONSISTENCY/PathResolutionConsistency.expected @@ -5,3 +5,13 @@ multipleMethodCallTargets | test_logging.rs:78:22:78:38 | password.as_str() | file://:0:0:0:0 | fn as_str | | test_logging.rs:88:18:88:34 | password.as_str() | file://:0:0:0:0 | fn as_str | | test_logging.rs:88:18:88:34 | password.as_str() | file://:0:0:0:0 | fn as_str | +| test_logging.rs:229:30:229:71 | ... .as_str() | file://:0:0:0:0 | fn as_str | +| test_logging.rs:229:30:229:71 | ... .as_str() | file://:0:0:0:0 | fn as_str | +| test_logging.rs:242:16:242:61 | ... .as_bytes() | file://:0:0:0:0 | fn as_bytes | +| test_logging.rs:242:16:242:61 | ... .as_bytes() | file://:0:0:0:0 | fn as_bytes | +| test_logging.rs:245:20:245:65 | ... .as_bytes() | file://:0:0:0:0 | fn as_bytes | +| test_logging.rs:245:20:245:65 | ... .as_bytes() | file://:0:0:0:0 | fn as_bytes | +| test_logging.rs:248:15:248:60 | ... .as_bytes() | file://:0:0:0:0 | fn as_bytes | +| test_logging.rs:248:15:248:60 | ... .as_bytes() | file://:0:0:0:0 | fn as_bytes | +| test_logging.rs:251:15:251:60 | ... .as_bytes() | file://:0:0:0:0 | fn as_bytes | +| test_logging.rs:251:15:251:60 | ... .as_bytes() | file://:0:0:0:0 | fn as_bytes | diff --git a/rust/ql/test/query-tests/security/CWE-312/CleartextLogging.expected b/rust/ql/test/query-tests/security/CWE-312/CleartextLogging.expected index 2c6b8207b70f..60ca54b6902f 100644 --- a/rust/ql/test/query-tests/security/CWE-312/CleartextLogging.expected +++ b/rust/ql/test/query-tests/security/CWE-312/CleartextLogging.expected @@ -228,38 +228,54 @@ edges | test_logging.rs:226:36:226:59 | ...::Some(...) [Some] | test_logging.rs:226:13:226:60 | ...::assert_failed [Some] | provenance | MaD:2 | | test_logging.rs:226:36:226:59 | MacroExpr | test_logging.rs:226:36:226:59 | ...::Some(...) [Some] | provenance | | | test_logging.rs:226:52:226:59 | password | test_logging.rs:226:36:226:59 | MacroExpr | provenance | | +| test_logging.rs:229:30:229:62 | MacroExpr | test_logging.rs:229:30:229:71 | ... .as_str() [&ref] | provenance | MaD:17 | | test_logging.rs:229:30:229:62 | res | test_logging.rs:229:38:229:61 | { ... } | provenance | | | test_logging.rs:229:30:229:71 | ... .as_str() | test_logging.rs:229:23:229:28 | expect | provenance | MaD:1 Sink:MaD:1 | | test_logging.rs:229:30:229:71 | ... .as_str() | test_logging.rs:229:23:229:28 | expect | provenance | MaD:1 Sink:MaD:1 | +| test_logging.rs:229:30:229:71 | ... .as_str() [&ref] | test_logging.rs:229:23:229:28 | expect | provenance | MaD:1 Sink:MaD:1 | +| test_logging.rs:229:30:229:71 | ... .as_str() [&ref] | test_logging.rs:229:23:229:28 | expect | provenance | MaD:1 Sink:MaD:1 | | test_logging.rs:229:38:229:61 | ...::format(...) | test_logging.rs:229:30:229:62 | res | provenance | | +| test_logging.rs:229:38:229:61 | ...::must_use(...) | test_logging.rs:229:30:229:62 | MacroExpr | provenance | | | test_logging.rs:229:38:229:61 | ...::must_use(...) | test_logging.rs:229:30:229:71 | ... .as_str() | provenance | MaD:17 | | test_logging.rs:229:38:229:61 | MacroExpr | test_logging.rs:229:38:229:61 | ...::format(...) | provenance | MaD:18 | | test_logging.rs:229:38:229:61 | { ... } | test_logging.rs:229:38:229:61 | ...::must_use(...) | provenance | MaD:19 | | test_logging.rs:229:54:229:61 | password | test_logging.rs:229:38:229:61 | MacroExpr | provenance | | +| test_logging.rs:242:16:242:50 | MacroExpr | test_logging.rs:242:16:242:61 | ... .as_bytes() [&ref] | provenance | MaD:16 | | test_logging.rs:242:16:242:50 | res | test_logging.rs:242:24:242:49 | { ... } | provenance | | | test_logging.rs:242:16:242:61 | ... .as_bytes() | test_logging.rs:242:10:242:14 | write | provenance | MaD:6 Sink:MaD:6 | +| test_logging.rs:242:16:242:61 | ... .as_bytes() [&ref] | test_logging.rs:242:10:242:14 | write | provenance | MaD:6 Sink:MaD:6 | | test_logging.rs:242:24:242:49 | ...::format(...) | test_logging.rs:242:16:242:50 | res | provenance | | +| test_logging.rs:242:24:242:49 | ...::must_use(...) | test_logging.rs:242:16:242:50 | MacroExpr | provenance | | | test_logging.rs:242:24:242:49 | ...::must_use(...) | test_logging.rs:242:16:242:61 | ... .as_bytes() | provenance | MaD:16 | | test_logging.rs:242:24:242:49 | MacroExpr | test_logging.rs:242:24:242:49 | ...::format(...) | provenance | MaD:18 | | test_logging.rs:242:24:242:49 | { ... } | test_logging.rs:242:24:242:49 | ...::must_use(...) | provenance | MaD:19 | | test_logging.rs:242:42:242:49 | password | test_logging.rs:242:24:242:49 | MacroExpr | provenance | | +| test_logging.rs:245:20:245:54 | MacroExpr | test_logging.rs:245:20:245:65 | ... .as_bytes() [&ref] | provenance | MaD:16 | | test_logging.rs:245:20:245:54 | res | test_logging.rs:245:28:245:53 | { ... } | provenance | | | test_logging.rs:245:20:245:65 | ... .as_bytes() | test_logging.rs:245:10:245:18 | write_all | provenance | MaD:7 Sink:MaD:7 | +| test_logging.rs:245:20:245:65 | ... .as_bytes() [&ref] | test_logging.rs:245:10:245:18 | write_all | provenance | MaD:7 Sink:MaD:7 | | test_logging.rs:245:28:245:53 | ...::format(...) | test_logging.rs:245:20:245:54 | res | provenance | | +| test_logging.rs:245:28:245:53 | ...::must_use(...) | test_logging.rs:245:20:245:54 | MacroExpr | provenance | | | test_logging.rs:245:28:245:53 | ...::must_use(...) | test_logging.rs:245:20:245:65 | ... .as_bytes() | provenance | MaD:16 | | test_logging.rs:245:28:245:53 | MacroExpr | test_logging.rs:245:28:245:53 | ...::format(...) | provenance | MaD:18 | | test_logging.rs:245:28:245:53 | { ... } | test_logging.rs:245:28:245:53 | ...::must_use(...) | provenance | MaD:19 | | test_logging.rs:245:46:245:53 | password | test_logging.rs:245:28:245:53 | MacroExpr | provenance | | +| test_logging.rs:248:15:248:49 | MacroExpr | test_logging.rs:248:15:248:60 | ... .as_bytes() [&ref] | provenance | MaD:16 | | test_logging.rs:248:15:248:49 | res | test_logging.rs:248:23:248:48 | { ... } | provenance | | | test_logging.rs:248:15:248:60 | ... .as_bytes() | test_logging.rs:248:9:248:13 | write | provenance | MaD:6 Sink:MaD:6 | +| test_logging.rs:248:15:248:60 | ... .as_bytes() [&ref] | test_logging.rs:248:9:248:13 | write | provenance | MaD:6 Sink:MaD:6 | | test_logging.rs:248:23:248:48 | ...::format(...) | test_logging.rs:248:15:248:49 | res | provenance | | +| test_logging.rs:248:23:248:48 | ...::must_use(...) | test_logging.rs:248:15:248:49 | MacroExpr | provenance | | | test_logging.rs:248:23:248:48 | ...::must_use(...) | test_logging.rs:248:15:248:60 | ... .as_bytes() | provenance | MaD:16 | | test_logging.rs:248:23:248:48 | MacroExpr | test_logging.rs:248:23:248:48 | ...::format(...) | provenance | MaD:18 | | test_logging.rs:248:23:248:48 | { ... } | test_logging.rs:248:23:248:48 | ...::must_use(...) | provenance | MaD:19 | | test_logging.rs:248:41:248:48 | password | test_logging.rs:248:23:248:48 | MacroExpr | provenance | | +| test_logging.rs:251:15:251:49 | MacroExpr | test_logging.rs:251:15:251:60 | ... .as_bytes() [&ref] | provenance | MaD:16 | | test_logging.rs:251:15:251:49 | res | test_logging.rs:251:23:251:48 | { ... } | provenance | | | test_logging.rs:251:15:251:60 | ... .as_bytes() | test_logging.rs:251:9:251:13 | write | provenance | MaD:5 Sink:MaD:5 | +| test_logging.rs:251:15:251:60 | ... .as_bytes() [&ref] | test_logging.rs:251:9:251:13 | write | provenance | MaD:5 Sink:MaD:5 | | test_logging.rs:251:23:251:48 | ...::format(...) | test_logging.rs:251:15:251:49 | res | provenance | | +| test_logging.rs:251:23:251:48 | ...::must_use(...) | test_logging.rs:251:15:251:49 | MacroExpr | provenance | | | test_logging.rs:251:23:251:48 | ...::must_use(...) | test_logging.rs:251:15:251:60 | ... .as_bytes() | provenance | MaD:16 | | test_logging.rs:251:23:251:48 | MacroExpr | test_logging.rs:251:23:251:48 | ...::format(...) | provenance | MaD:18 | | test_logging.rs:251:23:251:48 | { ... } | test_logging.rs:251:23:251:48 | ...::must_use(...) | provenance | MaD:19 | @@ -495,40 +511,50 @@ nodes | test_logging.rs:226:52:226:59 | password | semmle.label | password | | test_logging.rs:229:23:229:28 | expect | semmle.label | expect | | test_logging.rs:229:23:229:28 | expect | semmle.label | expect | +| test_logging.rs:229:30:229:62 | MacroExpr | semmle.label | MacroExpr | | test_logging.rs:229:30:229:62 | res | semmle.label | res | | test_logging.rs:229:30:229:71 | ... .as_str() | semmle.label | ... .as_str() | +| test_logging.rs:229:30:229:71 | ... .as_str() [&ref] | semmle.label | ... .as_str() [&ref] | | test_logging.rs:229:38:229:61 | ...::format(...) | semmle.label | ...::format(...) | | test_logging.rs:229:38:229:61 | ...::must_use(...) | semmle.label | ...::must_use(...) | | test_logging.rs:229:38:229:61 | MacroExpr | semmle.label | MacroExpr | | test_logging.rs:229:38:229:61 | { ... } | semmle.label | { ... } | | test_logging.rs:229:54:229:61 | password | semmle.label | password | | test_logging.rs:242:10:242:14 | write | semmle.label | write | +| test_logging.rs:242:16:242:50 | MacroExpr | semmle.label | MacroExpr | | test_logging.rs:242:16:242:50 | res | semmle.label | res | | test_logging.rs:242:16:242:61 | ... .as_bytes() | semmle.label | ... .as_bytes() | +| test_logging.rs:242:16:242:61 | ... .as_bytes() [&ref] | semmle.label | ... .as_bytes() [&ref] | | test_logging.rs:242:24:242:49 | ...::format(...) | semmle.label | ...::format(...) | | test_logging.rs:242:24:242:49 | ...::must_use(...) | semmle.label | ...::must_use(...) | | test_logging.rs:242:24:242:49 | MacroExpr | semmle.label | MacroExpr | | test_logging.rs:242:24:242:49 | { ... } | semmle.label | { ... } | | test_logging.rs:242:42:242:49 | password | semmle.label | password | | test_logging.rs:245:10:245:18 | write_all | semmle.label | write_all | +| test_logging.rs:245:20:245:54 | MacroExpr | semmle.label | MacroExpr | | test_logging.rs:245:20:245:54 | res | semmle.label | res | | test_logging.rs:245:20:245:65 | ... .as_bytes() | semmle.label | ... .as_bytes() | +| test_logging.rs:245:20:245:65 | ... .as_bytes() [&ref] | semmle.label | ... .as_bytes() [&ref] | | test_logging.rs:245:28:245:53 | ...::format(...) | semmle.label | ...::format(...) | | test_logging.rs:245:28:245:53 | ...::must_use(...) | semmle.label | ...::must_use(...) | | test_logging.rs:245:28:245:53 | MacroExpr | semmle.label | MacroExpr | | test_logging.rs:245:28:245:53 | { ... } | semmle.label | { ... } | | test_logging.rs:245:46:245:53 | password | semmle.label | password | | test_logging.rs:248:9:248:13 | write | semmle.label | write | +| test_logging.rs:248:15:248:49 | MacroExpr | semmle.label | MacroExpr | | test_logging.rs:248:15:248:49 | res | semmle.label | res | | test_logging.rs:248:15:248:60 | ... .as_bytes() | semmle.label | ... .as_bytes() | +| test_logging.rs:248:15:248:60 | ... .as_bytes() [&ref] | semmle.label | ... .as_bytes() [&ref] | | test_logging.rs:248:23:248:48 | ...::format(...) | semmle.label | ...::format(...) | | test_logging.rs:248:23:248:48 | ...::must_use(...) | semmle.label | ...::must_use(...) | | test_logging.rs:248:23:248:48 | MacroExpr | semmle.label | MacroExpr | | test_logging.rs:248:23:248:48 | { ... } | semmle.label | { ... } | | test_logging.rs:248:41:248:48 | password | semmle.label | password | | test_logging.rs:251:9:251:13 | write | semmle.label | write | +| test_logging.rs:251:15:251:49 | MacroExpr | semmle.label | MacroExpr | | test_logging.rs:251:15:251:49 | res | semmle.label | res | | test_logging.rs:251:15:251:60 | ... .as_bytes() | semmle.label | ... .as_bytes() | +| test_logging.rs:251:15:251:60 | ... .as_bytes() [&ref] | semmle.label | ... .as_bytes() [&ref] | | test_logging.rs:251:23:251:48 | ...::format(...) | semmle.label | ...::format(...) | | test_logging.rs:251:23:251:48 | ...::must_use(...) | semmle.label | ...::must_use(...) | | test_logging.rs:251:23:251:48 | MacroExpr | semmle.label | MacroExpr | diff --git a/rust/ql/test/query-tests/security/CWE-770/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/query-tests/security/CWE-770/CONSISTENCY/PathResolutionConsistency.expected index 99dc5510ef34..767f33660084 100644 --- a/rust/ql/test/query-tests/security/CWE-770/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/query-tests/security/CWE-770/CONSISTENCY/PathResolutionConsistency.expected @@ -1,18 +1,32 @@ multiplePathResolutions | main.rs:218:14:218:17 | libc | file://:0:0:0:0 | Crate(libc@0.2.172) | -| main.rs:218:14:218:17 | libc | file://:0:0:0:0 | Crate(libc@0.2.172) | -| main.rs:219:13:219:16 | libc | file://:0:0:0:0 | Crate(libc@0.2.172) | +| main.rs:218:14:218:17 | libc | file://:0:0:0:0 | Crate(libc@0.2.173) | +| main.rs:218:14:218:25 | ...::malloc | file://:0:0:0:0 | fn malloc | +| main.rs:218:14:218:25 | ...::malloc | file://:0:0:0:0 | fn malloc | | main.rs:219:13:219:16 | libc | file://:0:0:0:0 | Crate(libc@0.2.172) | +| main.rs:219:13:219:16 | libc | file://:0:0:0:0 | Crate(libc@0.2.173) | +| main.rs:219:13:219:24 | ...::malloc | file://:0:0:0:0 | fn malloc | +| main.rs:219:13:219:24 | ...::malloc | file://:0:0:0:0 | fn malloc | | main.rs:220:13:220:16 | libc | file://:0:0:0:0 | Crate(libc@0.2.172) | -| main.rs:220:13:220:16 | libc | file://:0:0:0:0 | Crate(libc@0.2.172) | -| main.rs:221:13:221:16 | libc | file://:0:0:0:0 | Crate(libc@0.2.172) | +| main.rs:220:13:220:16 | libc | file://:0:0:0:0 | Crate(libc@0.2.173) | +| main.rs:220:13:220:31 | ...::aligned_alloc | file://:0:0:0:0 | fn aligned_alloc | +| main.rs:220:13:220:31 | ...::aligned_alloc | file://:0:0:0:0 | fn aligned_alloc | | main.rs:221:13:221:16 | libc | file://:0:0:0:0 | Crate(libc@0.2.172) | +| main.rs:221:13:221:16 | libc | file://:0:0:0:0 | Crate(libc@0.2.173) | +| main.rs:221:13:221:31 | ...::aligned_alloc | file://:0:0:0:0 | fn aligned_alloc | +| main.rs:221:13:221:31 | ...::aligned_alloc | file://:0:0:0:0 | fn aligned_alloc | | main.rs:222:13:222:16 | libc | file://:0:0:0:0 | Crate(libc@0.2.172) | -| main.rs:222:13:222:16 | libc | file://:0:0:0:0 | Crate(libc@0.2.172) | -| main.rs:223:13:223:16 | libc | file://:0:0:0:0 | Crate(libc@0.2.172) | +| main.rs:222:13:222:16 | libc | file://:0:0:0:0 | Crate(libc@0.2.173) | +| main.rs:222:13:222:24 | ...::calloc | file://:0:0:0:0 | fn calloc | +| main.rs:222:13:222:24 | ...::calloc | file://:0:0:0:0 | fn calloc | | main.rs:223:13:223:16 | libc | file://:0:0:0:0 | Crate(libc@0.2.172) | +| main.rs:223:13:223:16 | libc | file://:0:0:0:0 | Crate(libc@0.2.173) | +| main.rs:223:13:223:24 | ...::calloc | file://:0:0:0:0 | fn calloc | +| main.rs:223:13:223:24 | ...::calloc | file://:0:0:0:0 | fn calloc | | main.rs:224:13:224:16 | libc | file://:0:0:0:0 | Crate(libc@0.2.172) | -| main.rs:224:13:224:16 | libc | file://:0:0:0:0 | Crate(libc@0.2.172) | +| main.rs:224:13:224:16 | libc | file://:0:0:0:0 | Crate(libc@0.2.173) | +| main.rs:224:13:224:25 | ...::realloc | file://:0:0:0:0 | fn realloc | +| main.rs:224:13:224:25 | ...::realloc | file://:0:0:0:0 | fn realloc | | main.rs:229:13:229:37 | ...::with_capacity | file://:0:0:0:0 | fn with_capacity | | main.rs:229:13:229:37 | ...::with_capacity | file://:0:0:0:0 | fn with_capacity | | main.rs:233:18:233:42 | ...::with_capacity | file://:0:0:0:0 | fn with_capacity | diff --git a/rust/ql/test/query-tests/security/CWE-825/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/query-tests/security/CWE-825/CONSISTENCY/PathResolutionConsistency.expected index 4105369917f3..d326b510db4c 100644 --- a/rust/ql/test/query-tests/security/CWE-825/CONSISTENCY/PathResolutionConsistency.expected +++ b/rust/ql/test/query-tests/security/CWE-825/CONSISTENCY/PathResolutionConsistency.expected @@ -1,14 +1,14 @@ multiplePathResolutions | deallocation.rs:106:16:106:19 | libc | file://:0:0:0:0 | Crate(libc@0.2.171) | -| deallocation.rs:106:16:106:19 | libc | file://:0:0:0:0 | Crate(libc@0.2.172) | +| deallocation.rs:106:16:106:19 | libc | file://:0:0:0:0 | Crate(libc@0.2.173) | | deallocation.rs:106:16:106:27 | ...::malloc | file://:0:0:0:0 | fn malloc | | deallocation.rs:106:16:106:27 | ...::malloc | file://:0:0:0:0 | fn malloc | | deallocation.rs:112:3:112:6 | libc | file://:0:0:0:0 | Crate(libc@0.2.171) | -| deallocation.rs:112:3:112:6 | libc | file://:0:0:0:0 | Crate(libc@0.2.172) | +| deallocation.rs:112:3:112:6 | libc | file://:0:0:0:0 | Crate(libc@0.2.173) | | deallocation.rs:112:3:112:12 | ...::free | file://:0:0:0:0 | fn free | | deallocation.rs:112:3:112:12 | ...::free | file://:0:0:0:0 | fn free | | deallocation.rs:112:29:112:32 | libc | file://:0:0:0:0 | Crate(libc@0.2.171) | -| deallocation.rs:112:29:112:32 | libc | file://:0:0:0:0 | Crate(libc@0.2.172) | +| deallocation.rs:112:29:112:32 | libc | file://:0:0:0:0 | Crate(libc@0.2.173) | | deallocation.rs:260:11:260:22 | ...::from | file://:0:0:0:0 | fn from | | deallocation.rs:260:11:260:22 | ...::from | file://:0:0:0:0 | fn from | | deallocation.rs:260:11:260:22 | ...::from | file://:0:0:0:0 | fn from |