From 9bdb541065155f3ff1f5c82fdedb5fa5c4b826b8 Mon Sep 17 00:00:00 2001 From: Simon Friis Vindum Date: Wed, 18 Jun 2025 10:45:22 +0200 Subject: [PATCH 1/7] Rust: Add type inference tests for dereferencing --- .../type-inference/dereference.rs | 102 ++++++++ .../test/library-tests/type-inference/main.rs | 3 + .../type-inference/type-inference.expected | 245 +++++++++++++++++- 3 files changed, 345 insertions(+), 5 deletions(-) create mode 100644 rust/ql/test/library-tests/type-inference/dereference.rs diff --git a/rust/ql/test/library-tests/type-inference/dereference.rs b/rust/ql/test/library-tests/type-inference/dereference.rs new file mode 100644 index 000000000000..8ceb8ec78de7 --- /dev/null +++ b/rust/ql/test/library-tests/type-inference/dereference.rs @@ -0,0 +1,102 @@ +/// This file contains tests for dereferencing with through the `Deref` trait. +use std::ops::Deref; + +struct MyIntPointer { + value: i64, +} + +impl Deref for MyIntPointer { + type Target = i64; + + // MyIntPointer::deref + fn deref(&self) -> &i64 { + &self.value // $ fieldof=MyIntPointer + } +} + +struct MySmartPointer { + value: T, +} + +impl Deref for MySmartPointer { + type Target = T; + + // MySmartPointer::deref + fn deref(&self) -> &T { + &self.value // $ fieldof=MySmartPointer + } +} + +fn explicit_monomorphic_dereference() { + // Dereference with method call + let a1 = MyIntPointer { value: 34i64 }; + let _b1 = a1.deref(); // $ method=MyIntPointer::deref type=_b1:&T.i64 + + // Dereference with overloaded dereference operator + let a2 = MyIntPointer { value: 34i64 }; + let _b2 = *a2; // $ method=MyIntPointer::deref MISSING: type=_b2:i64 + + // Call method on explicitly dereferenced value + let a3 = MyIntPointer { value: 34i64 }; + let _b3 = (*a3).is_positive(); // $ method=MyIntPointer::deref method=is_positive type=_b3:bool +} + +fn explicit_polymorphic_dereference() { + // Explicit dereference with type parameter + let c1 = MySmartPointer { value: 'a' }; + let _d1 = c1.deref(); // $ method=MySmartPointer::deref type=_d1:&T.char + + // Explicit dereference with type parameter + let c2 = MySmartPointer { value: 'a' }; + let _d2 = *c2; // $ method=MySmartPointer::deref MISSING: type=_d2:char + + // Call method on explicitly dereferenced value with type parameter + let c3 = MySmartPointer { value: 34i64 }; + let _d3 = (*c3).is_positive(); // $ method=MySmartPointer::deref MISSING: method=is_positive type=_d3:bool +} + +fn explicit_ref_dereference() { + // Explicit dereference with type parameter + let e1 = &'a'; + let _f1 = e1.deref(); // $ MISSING: method=deref type=_f1:&T.char + + // Explicit dereference with type parameter + let e2 = &'a'; + let _f2 = *e2; // $ method=deref type=_f2:char + + // Call method on explicitly dereferenced value with type parameter + let e3 = &34i64; + let _f3 = (*e3).is_positive(); // $ method=deref method=is_positive type=_f3:bool +} + +fn explicit_box_dereference() { + // Explicit dereference with type parameter + let g1: Box = Box::new('a'); + let _h1 = g1.deref(); // $ method=deref type=_h1:&T.char + + // Explicit dereference with type parameter + let g2: Box = Box::new('a'); + let _h2 = *g2; // $ method=deref MISSING: type=_h2:char + + // Call method on explicitly dereferenced value with type parameter + let g3: Box = Box::new(34i64); + let _h3 = (*g3).is_positive(); // $ method=deref MISSING: method=is_positive type=_h3:bool +} + +fn implicit_dereference() { + // Call method on implicitly dereferenced value + let x = MyIntPointer { value: 34i64 }; + let _y = x.is_positive(); // $ MISSING: method=is_positive type=_y:bool + + // Call method on implicitly dereferenced value + let x = MySmartPointer { value: 34i64 }; + let _y = x.is_positive(); // $ MISSING: method=is_positive type=_y:bool +} + +pub fn test() { + explicit_monomorphic_dereference(); + explicit_polymorphic_dereference(); + explicit_ref_dereference(); + explicit_box_dereference(); + implicit_dereference(); +} diff --git a/rust/ql/test/library-tests/type-inference/main.rs b/rust/ql/test/library-tests/type-inference/main.rs index 5b7232ae8494..1197670c7149 100644 --- a/rust/ql/test/library-tests/type-inference/main.rs +++ b/rust/ql/test/library-tests/type-inference/main.rs @@ -1881,6 +1881,8 @@ mod method_determined_by_argument_type { } } +mod dereference; + fn main() { field_access::f(); method_impl::f(); @@ -1905,4 +1907,5 @@ fn main() { indexers::f(); macros::f(); method_determined_by_argument_type::f(); + dereference::test(); } 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 758882f52d84..53c85a28c4b5 100644 --- a/rust/ql/test/library-tests/type-inference/type-inference.expected +++ b/rust/ql/test/library-tests/type-inference/type-inference.expected @@ -1,4 +1,239 @@ inferType +| dereference.rs:12:14:12:18 | SelfParam | | file://:0:0:0:0 | & | +| dereference.rs:12:14:12:18 | SelfParam | &T | dereference.rs:4:1:6:1 | MyIntPointer | +| dereference.rs:12:29:14:5 | { ... } | | file://:0:0:0:0 | & | +| dereference.rs:12:29:14:5 | { ... } | &T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:13:9:13:19 | &... | | file://:0:0:0:0 | & | +| dereference.rs:13:9:13:19 | &... | &T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:13:10:13:13 | self | | file://:0:0:0:0 | & | +| dereference.rs:13:10:13:13 | self | &T | dereference.rs:4:1:6:1 | MyIntPointer | +| dereference.rs:13:10:13:19 | self.value | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:25:14:25:18 | SelfParam | | file://:0:0:0:0 | & | +| dereference.rs:25:14:25:18 | SelfParam | &T | dereference.rs:17:1:19:1 | MySmartPointer | +| dereference.rs:25:14:25:18 | SelfParam | &T.T | dereference.rs:21:6:21:6 | T | +| dereference.rs:25:27:27:5 | { ... } | | file://:0:0:0:0 | & | +| dereference.rs:25:27:27:5 | { ... } | &T | dereference.rs:21:6:21:6 | T | +| dereference.rs:26:9:26:19 | &... | | file://:0:0:0:0 | & | +| dereference.rs:26:9:26:19 | &... | &T | dereference.rs:21:6:21:6 | T | +| dereference.rs:26:10:26:13 | self | | file://:0:0:0:0 | & | +| dereference.rs:26:10:26:13 | self | &T | dereference.rs:17:1:19:1 | MySmartPointer | +| dereference.rs:26:10:26:13 | self | &T.T | dereference.rs:21:6:21:6 | T | +| dereference.rs:26:10:26:19 | self.value | | dereference.rs:21:6:21:6 | T | +| dereference.rs:32:9:32:10 | a1 | | dereference.rs:4:1:6:1 | MyIntPointer | +| dereference.rs:32:14:32:42 | MyIntPointer {...} | | dereference.rs:4:1:6:1 | MyIntPointer | +| dereference.rs:32:36:32:40 | 34i64 | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:33:9:33:11 | _b1 | | file://:0:0:0:0 | & | +| dereference.rs:33:9:33:11 | _b1 | &T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:33:15:33:16 | a1 | | dereference.rs:4:1:6:1 | MyIntPointer | +| dereference.rs:33:15:33:24 | a1.deref() | | file://:0:0:0:0 | & | +| dereference.rs:33:15:33:24 | a1.deref() | &T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:36:9:36:10 | a2 | | dereference.rs:4:1:6:1 | MyIntPointer | +| dereference.rs:36:9:36:10 | a2 | | file://:0:0:0:0 | & | +| dereference.rs:36:9:36:10 | a2 | &T | dereference.rs:4:1:6:1 | MyIntPointer | +| dereference.rs:36:9:36:10 | a2 | &T | file://:0:0:0:0 | & | +| dereference.rs:36:9:36:10 | a2 | &T.&T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:36:14:36:42 | MyIntPointer {...} | | dereference.rs:4:1:6:1 | MyIntPointer | +| dereference.rs:36:14:36:42 | MyIntPointer {...} | | file://:0:0:0:0 | & | +| dereference.rs:36:14:36:42 | MyIntPointer {...} | &T | dereference.rs:4:1:6:1 | MyIntPointer | +| dereference.rs:36:14:36:42 | MyIntPointer {...} | &T | file://:0:0:0:0 | & | +| dereference.rs:36:14:36:42 | MyIntPointer {...} | &T.&T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:36:36:36:40 | 34i64 | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:37:9:37:11 | _b2 | | dereference.rs:4:1:6:1 | MyIntPointer | +| dereference.rs:37:9:37:11 | _b2 | | file://:0:0:0:0 | & | +| dereference.rs:37:9:37:11 | _b2 | &T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:37:15:37:17 | * ... | | dereference.rs:4:1:6:1 | MyIntPointer | +| dereference.rs:37:15:37:17 | * ... | | file://:0:0:0:0 | & | +| dereference.rs:37:15:37:17 | * ... | &T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:37:16:37:17 | a2 | | dereference.rs:4:1:6:1 | MyIntPointer | +| dereference.rs:37:16:37:17 | a2 | | file://:0:0:0:0 | & | +| dereference.rs:37:16:37:17 | a2 | &T | dereference.rs:4:1:6:1 | MyIntPointer | +| dereference.rs:37:16:37:17 | a2 | &T | file://:0:0:0:0 | & | +| dereference.rs:37:16:37:17 | a2 | &T.&T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:40:9:40:10 | a3 | | dereference.rs:4:1:6:1 | MyIntPointer | +| dereference.rs:40:9:40:10 | a3 | | file://:0:0:0:0 | & | +| dereference.rs:40:9:40:10 | a3 | &T | dereference.rs:4:1:6:1 | MyIntPointer | +| dereference.rs:40:9:40:10 | a3 | &T | file://:0:0:0:0 | & | +| dereference.rs:40:9:40:10 | a3 | &T.&T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:40:14:40:42 | MyIntPointer {...} | | dereference.rs:4:1:6:1 | MyIntPointer | +| dereference.rs:40:14:40:42 | MyIntPointer {...} | | file://:0:0:0:0 | & | +| dereference.rs:40:14:40:42 | MyIntPointer {...} | &T | dereference.rs:4:1:6:1 | MyIntPointer | +| dereference.rs:40:14:40:42 | MyIntPointer {...} | &T | file://:0:0:0:0 | & | +| dereference.rs:40:14:40:42 | MyIntPointer {...} | &T.&T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:40:36:40:40 | 34i64 | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:41:9:41:11 | _b3 | | {EXTERNAL LOCATION} | bool | +| dereference.rs:41:15:41:19 | (...) | | dereference.rs:4:1:6:1 | MyIntPointer | +| dereference.rs:41:15:41:19 | (...) | | file://:0:0:0:0 | & | +| dereference.rs:41:15:41:19 | (...) | &T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:41:15:41:33 | ... .is_positive() | | {EXTERNAL LOCATION} | bool | +| dereference.rs:41:16:41:18 | * ... | | dereference.rs:4:1:6:1 | MyIntPointer | +| dereference.rs:41:16:41:18 | * ... | | file://:0:0:0:0 | & | +| dereference.rs:41:16:41:18 | * ... | &T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:41:17:41:18 | a3 | | dereference.rs:4:1:6:1 | MyIntPointer | +| dereference.rs:41:17:41:18 | a3 | | file://:0:0:0:0 | & | +| dereference.rs:41:17:41:18 | a3 | &T | dereference.rs:4:1:6:1 | MyIntPointer | +| dereference.rs:41:17:41:18 | a3 | &T | file://:0:0:0:0 | & | +| dereference.rs:41:17:41:18 | a3 | &T.&T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:46:9:46:10 | c1 | | dereference.rs:17:1:19:1 | MySmartPointer | +| dereference.rs:46:9:46:10 | c1 | T | {EXTERNAL LOCATION} | char | +| dereference.rs:46:14:46:42 | MySmartPointer {...} | | dereference.rs:17:1:19:1 | MySmartPointer | +| dereference.rs:46:14:46:42 | MySmartPointer {...} | T | {EXTERNAL LOCATION} | char | +| dereference.rs:46:38:46:40 | 'a' | | {EXTERNAL LOCATION} | char | +| dereference.rs:47:9:47:11 | _d1 | | file://:0:0:0:0 | & | +| dereference.rs:47:9:47:11 | _d1 | &T | {EXTERNAL LOCATION} | char | +| dereference.rs:47:15:47:16 | c1 | | dereference.rs:17:1:19:1 | MySmartPointer | +| dereference.rs:47:15:47:16 | c1 | T | {EXTERNAL LOCATION} | char | +| dereference.rs:47:15:47:24 | c1.deref() | | file://:0:0:0:0 | & | +| dereference.rs:47:15:47:24 | c1.deref() | &T | {EXTERNAL LOCATION} | char | +| dereference.rs:50:9:50:10 | c2 | | dereference.rs:17:1:19:1 | MySmartPointer | +| dereference.rs:50:9:50:10 | c2 | | file://:0:0:0:0 | & | +| dereference.rs:50:9:50:10 | c2 | &T | dereference.rs:17:1:19:1 | MySmartPointer | +| dereference.rs:50:9:50:10 | c2 | &T | file://:0:0:0:0 | & | +| dereference.rs:50:9:50:10 | c2 | T | {EXTERNAL LOCATION} | char | +| dereference.rs:50:14:50:42 | MySmartPointer {...} | | dereference.rs:17:1:19:1 | MySmartPointer | +| dereference.rs:50:14:50:42 | MySmartPointer {...} | | file://:0:0:0:0 | & | +| dereference.rs:50:14:50:42 | MySmartPointer {...} | &T | dereference.rs:17:1:19:1 | MySmartPointer | +| dereference.rs:50:14:50:42 | MySmartPointer {...} | &T | file://:0:0:0:0 | & | +| dereference.rs:50:14:50:42 | MySmartPointer {...} | T | {EXTERNAL LOCATION} | char | +| dereference.rs:50:38:50:40 | 'a' | | {EXTERNAL LOCATION} | char | +| dereference.rs:51:9:51:11 | _d2 | | dereference.rs:17:1:19:1 | MySmartPointer | +| dereference.rs:51:9:51:11 | _d2 | | file://:0:0:0:0 | & | +| dereference.rs:51:15:51:17 | * ... | | dereference.rs:17:1:19:1 | MySmartPointer | +| dereference.rs:51:15:51:17 | * ... | | file://:0:0:0:0 | & | +| dereference.rs:51:16:51:17 | c2 | | dereference.rs:17:1:19:1 | MySmartPointer | +| dereference.rs:51:16:51:17 | c2 | | file://:0:0:0:0 | & | +| dereference.rs:51:16:51:17 | c2 | &T | dereference.rs:17:1:19:1 | MySmartPointer | +| dereference.rs:51:16:51:17 | c2 | &T | file://:0:0:0:0 | & | +| dereference.rs:51:16:51:17 | c2 | T | {EXTERNAL LOCATION} | char | +| dereference.rs:54:9:54:10 | c3 | | dereference.rs:17:1:19:1 | MySmartPointer | +| dereference.rs:54:9:54:10 | c3 | | file://:0:0:0:0 | & | +| dereference.rs:54:9:54:10 | c3 | &T | dereference.rs:17:1:19:1 | MySmartPointer | +| dereference.rs:54:9:54:10 | c3 | &T | file://:0:0:0:0 | & | +| dereference.rs:54:9:54:10 | c3 | T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:54:14:54:44 | MySmartPointer {...} | | dereference.rs:17:1:19:1 | MySmartPointer | +| dereference.rs:54:14:54:44 | MySmartPointer {...} | | file://:0:0:0:0 | & | +| dereference.rs:54:14:54:44 | MySmartPointer {...} | &T | dereference.rs:17:1:19:1 | MySmartPointer | +| dereference.rs:54:14:54:44 | MySmartPointer {...} | &T | file://:0:0:0:0 | & | +| dereference.rs:54:14:54:44 | MySmartPointer {...} | T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:54:38:54:42 | 34i64 | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:55:15:55:19 | (...) | | dereference.rs:17:1:19:1 | MySmartPointer | +| dereference.rs:55:15:55:19 | (...) | | file://:0:0:0:0 | & | +| dereference.rs:55:16:55:18 | * ... | | dereference.rs:17:1:19:1 | MySmartPointer | +| dereference.rs:55:16:55:18 | * ... | | file://:0:0:0:0 | & | +| dereference.rs:55:17:55:18 | c3 | | dereference.rs:17:1:19:1 | MySmartPointer | +| dereference.rs:55:17:55:18 | c3 | | file://:0:0:0:0 | & | +| dereference.rs:55:17:55:18 | c3 | &T | dereference.rs:17:1:19:1 | MySmartPointer | +| dereference.rs:55:17:55:18 | c3 | &T | file://:0:0:0:0 | & | +| dereference.rs:55:17:55:18 | c3 | T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:60:9:60:10 | e1 | | file://:0:0:0:0 | & | +| dereference.rs:60:9:60:10 | e1 | &T | {EXTERNAL LOCATION} | char | +| dereference.rs:60:14:60:17 | &'a' | | file://:0:0:0:0 | & | +| dereference.rs:60:14:60:17 | &'a' | &T | {EXTERNAL LOCATION} | char | +| dereference.rs:60:15:60:17 | 'a' | | {EXTERNAL LOCATION} | char | +| dereference.rs:61:15:61:16 | e1 | | file://:0:0:0:0 | & | +| dereference.rs:61:15:61:16 | e1 | &T | {EXTERNAL LOCATION} | char | +| dereference.rs:64:9:64:10 | e2 | | file://:0:0:0:0 | & | +| dereference.rs:64:9:64:10 | e2 | &T | {EXTERNAL LOCATION} | char | +| dereference.rs:64:9:64:10 | e2 | &T | file://:0:0:0:0 | & | +| dereference.rs:64:14:64:17 | &'a' | | file://:0:0:0:0 | & | +| dereference.rs:64:14:64:17 | &'a' | &T | {EXTERNAL LOCATION} | char | +| dereference.rs:64:14:64:17 | &'a' | &T | file://:0:0:0:0 | & | +| dereference.rs:64:15:64:17 | 'a' | | {EXTERNAL LOCATION} | char | +| dereference.rs:64:15:64:17 | 'a' | | file://:0:0:0:0 | & | +| dereference.rs:65:9:65:11 | _f2 | | {EXTERNAL LOCATION} | char | +| dereference.rs:65:9:65:11 | _f2 | | file://:0:0:0:0 | & | +| dereference.rs:65:15:65:17 | * ... | | {EXTERNAL LOCATION} | char | +| dereference.rs:65:15:65:17 | * ... | | file://:0:0:0:0 | & | +| dereference.rs:65:16:65:17 | e2 | | file://:0:0:0:0 | & | +| dereference.rs:65:16:65:17 | e2 | &T | {EXTERNAL LOCATION} | char | +| dereference.rs:65:16:65:17 | e2 | &T | file://:0:0:0:0 | & | +| dereference.rs:68:9:68:10 | e3 | | file://:0:0:0:0 | & | +| dereference.rs:68:9:68:10 | e3 | &T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:68:9:68:10 | e3 | &T | file://:0:0:0:0 | & | +| dereference.rs:68:14:68:19 | &34i64 | | file://:0:0:0:0 | & | +| dereference.rs:68:14:68:19 | &34i64 | &T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:68:14:68:19 | &34i64 | &T | file://:0:0:0:0 | & | +| dereference.rs:68:15:68:19 | 34i64 | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:68:15:68:19 | 34i64 | | file://:0:0:0:0 | & | +| dereference.rs:69:9:69:11 | _f3 | | {EXTERNAL LOCATION} | bool | +| dereference.rs:69:15:69:19 | (...) | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:69:15:69:19 | (...) | | file://:0:0:0:0 | & | +| dereference.rs:69:15:69:33 | ... .is_positive() | | {EXTERNAL LOCATION} | bool | +| dereference.rs:69:16:69:18 | * ... | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:69:16:69:18 | * ... | | file://:0:0:0:0 | & | +| dereference.rs:69:17:69:18 | e3 | | file://:0:0:0:0 | & | +| dereference.rs:69:17:69:18 | e3 | &T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:69:17:69:18 | e3 | &T | file://:0:0:0:0 | & | +| dereference.rs:74:9:74:10 | g1 | | {EXTERNAL LOCATION} | Box | +| dereference.rs:74:9:74:10 | g1 | A | {EXTERNAL LOCATION} | Global | +| dereference.rs:74:9:74:10 | g1 | T | {EXTERNAL LOCATION} | char | +| dereference.rs:74:25:74:37 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| dereference.rs:74:25:74:37 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| dereference.rs:74:25:74:37 | ...::new(...) | T | {EXTERNAL LOCATION} | char | +| dereference.rs:74:34:74:36 | 'a' | | {EXTERNAL LOCATION} | char | +| dereference.rs:75:9:75:11 | _h1 | | file://:0:0:0:0 | & | +| dereference.rs:75:9:75:11 | _h1 | &T | {EXTERNAL LOCATION} | char | +| dereference.rs:75:15:75:16 | g1 | | {EXTERNAL LOCATION} | Box | +| dereference.rs:75:15:75:16 | g1 | A | {EXTERNAL LOCATION} | Global | +| dereference.rs:75:15:75:16 | g1 | T | {EXTERNAL LOCATION} | char | +| dereference.rs:75:15:75:24 | g1.deref() | | file://:0:0:0:0 | & | +| dereference.rs:75:15:75:24 | g1.deref() | &T | {EXTERNAL LOCATION} | char | +| dereference.rs:78:9:78:10 | g2 | | {EXTERNAL LOCATION} | Box | +| dereference.rs:78:9:78:10 | g2 | | file://:0:0:0:0 | & | +| dereference.rs:78:9:78:10 | g2 | &T | {EXTERNAL LOCATION} | Box | +| dereference.rs:78:9:78:10 | g2 | &T | file://:0:0:0:0 | & | +| dereference.rs:78:9:78:10 | g2 | A | {EXTERNAL LOCATION} | Global | +| dereference.rs:78:9:78:10 | g2 | T | {EXTERNAL LOCATION} | char | +| dereference.rs:78:25:78:37 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| dereference.rs:78:25:78:37 | ...::new(...) | | file://:0:0:0:0 | & | +| dereference.rs:78:25:78:37 | ...::new(...) | &T | {EXTERNAL LOCATION} | Box | +| dereference.rs:78:25:78:37 | ...::new(...) | &T | file://:0:0:0:0 | & | +| dereference.rs:78:25:78:37 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| dereference.rs:78:25:78:37 | ...::new(...) | T | {EXTERNAL LOCATION} | char | +| dereference.rs:78:34:78:36 | 'a' | | {EXTERNAL LOCATION} | char | +| dereference.rs:79:9:79:11 | _h2 | | {EXTERNAL LOCATION} | Box | +| dereference.rs:79:9:79:11 | _h2 | | file://:0:0:0:0 | & | +| dereference.rs:79:15:79:17 | * ... | | {EXTERNAL LOCATION} | Box | +| dereference.rs:79:15:79:17 | * ... | | file://:0:0:0:0 | & | +| dereference.rs:79:16:79:17 | g2 | | {EXTERNAL LOCATION} | Box | +| dereference.rs:79:16:79:17 | g2 | | file://:0:0:0:0 | & | +| dereference.rs:79:16:79:17 | g2 | &T | {EXTERNAL LOCATION} | Box | +| dereference.rs:79:16:79:17 | g2 | &T | file://:0:0:0:0 | & | +| dereference.rs:79:16:79:17 | g2 | A | {EXTERNAL LOCATION} | Global | +| dereference.rs:79:16:79:17 | g2 | T | {EXTERNAL LOCATION} | char | +| dereference.rs:82:9:82:10 | g3 | | {EXTERNAL LOCATION} | Box | +| dereference.rs:82:9:82:10 | g3 | | file://:0:0:0:0 | & | +| dereference.rs:82:9:82:10 | g3 | &T | {EXTERNAL LOCATION} | Box | +| dereference.rs:82:9:82:10 | g3 | &T | file://:0:0:0:0 | & | +| dereference.rs:82:9:82:10 | g3 | A | {EXTERNAL LOCATION} | Global | +| dereference.rs:82:9:82:10 | g3 | T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:82:24:82:38 | ...::new(...) | | {EXTERNAL LOCATION} | Box | +| dereference.rs:82:24:82:38 | ...::new(...) | | file://:0:0:0:0 | & | +| dereference.rs:82:24:82:38 | ...::new(...) | &T | {EXTERNAL LOCATION} | Box | +| dereference.rs:82:24:82:38 | ...::new(...) | &T | file://:0:0:0:0 | & | +| dereference.rs:82:24:82:38 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| dereference.rs:82:24:82:38 | ...::new(...) | T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:82:33:82:37 | 34i64 | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:83:15:83:19 | (...) | | {EXTERNAL LOCATION} | Box | +| dereference.rs:83:15:83:19 | (...) | | file://:0:0:0:0 | & | +| dereference.rs:83:16:83:18 | * ... | | {EXTERNAL LOCATION} | Box | +| dereference.rs:83:16:83:18 | * ... | | file://:0:0:0:0 | & | +| dereference.rs:83:17:83:18 | g3 | | {EXTERNAL LOCATION} | Box | +| dereference.rs:83:17:83:18 | g3 | | file://:0:0:0:0 | & | +| dereference.rs:83:17:83:18 | g3 | &T | {EXTERNAL LOCATION} | Box | +| dereference.rs:83:17:83:18 | g3 | &T | file://:0:0:0:0 | & | +| dereference.rs:83:17:83:18 | g3 | A | {EXTERNAL LOCATION} | Global | +| dereference.rs:83:17:83:18 | g3 | T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:88:9:88:9 | x | | dereference.rs:4:1:6:1 | MyIntPointer | +| dereference.rs:88:13:88:41 | MyIntPointer {...} | | dereference.rs:4:1:6:1 | MyIntPointer | +| dereference.rs:88:35:88:39 | 34i64 | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:89:14:89:14 | x | | dereference.rs:4:1:6:1 | MyIntPointer | +| dereference.rs:92:9:92:9 | x | | dereference.rs:17:1:19:1 | MySmartPointer | +| dereference.rs:92:9:92:9 | x | T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:92:13:92:43 | MySmartPointer {...} | | dereference.rs:17:1:19:1 | MySmartPointer | +| dereference.rs:92:13:92:43 | MySmartPointer {...} | T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:92:37:92:41 | 34i64 | | {EXTERNAL LOCATION} | i64 | +| dereference.rs:93:14:93:14 | x | | dereference.rs:17:1:19:1 | MySmartPointer | +| dereference.rs:93:14:93:14 | x | T | {EXTERNAL LOCATION} | i64 | | loop/main.rs:7:12:7:15 | SelfParam | | loop/main.rs:6:1:8:1 | Self [trait T1] | | loop/main.rs:11:12:11:15 | SelfParam | | loop/main.rs:10:1:14:1 | Self [trait T2] | | loop/main.rs:12:9:12:12 | self | | loop/main.rs:10:1:14:1 | Self [trait T2] | @@ -2705,9 +2940,9 @@ inferType | main.rs:1880:9:1880:9 | x | | {EXTERNAL LOCATION} | i64 | | main.rs:1880:9:1880:22 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | | main.rs:1880:18:1880:21 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:1886:5:1886:20 | ...::f(...) | | main.rs:72:5:72:21 | Foo | -| main.rs:1887:5:1887:60 | ...::g(...) | | main.rs:72:5:72:21 | Foo | -| main.rs:1887:20:1887:38 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | -| main.rs:1887:41:1887:59 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | -| main.rs:1903:5:1903:15 | ...::f(...) | | {EXTERNAL LOCATION} | trait Future | +| main.rs:1888:5:1888:20 | ...::f(...) | | main.rs:72:5:72:21 | Foo | +| main.rs:1889:5:1889:60 | ...::g(...) | | main.rs:72:5:72:21 | Foo | +| main.rs:1889:20:1889:38 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | +| main.rs:1889:41:1889:59 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | +| main.rs:1905:5:1905:15 | ...::f(...) | | {EXTERNAL LOCATION} | trait Future | testFailures From 7c9d15b6051ac6e4dfdb90046bffbefc71b1a289 Mon Sep 17 00:00:00 2001 From: Simon Friis Vindum Date: Wed, 18 Jun 2025 12:58:22 +0200 Subject: [PATCH 2/7] Rust: Add test with method on borrow --- .../test/library-tests/type-inference/main.rs | 36 +- .../type-inference/type-inference.expected | 2811 +++++++++-------- 2 files changed, 1473 insertions(+), 1374 deletions(-) diff --git a/rust/ql/test/library-tests/type-inference/main.rs b/rust/ql/test/library-tests/type-inference/main.rs index 1197670c7149..0b6d2b754a19 100644 --- a/rust/ql/test/library-tests/type-inference/main.rs +++ b/rust/ql/test/library-tests/type-inference/main.rs @@ -1079,6 +1079,11 @@ mod method_call_type_conversion { #[derive(Debug, Copy, Clone)] struct S2; + #[derive(Debug, Copy, Clone, Default)] + struct MyInt { + a: i64, + } + impl S { fn m1(self) -> T { self.0 // $ fieldof=S @@ -1093,6 +1098,24 @@ mod method_call_type_conversion { } } + trait ATrait { + fn method_on_borrow(&self) -> i64; + fn method_not_on_borrow(self) -> i64; + } + + // Trait implementation on a borrow. + impl ATrait for &MyInt { + // MyInt::method_on_borrow + fn method_on_borrow(&self) -> i64 { + (*(*self)).a // $ method=deref fieldof=MyInt + } + + // MyInt::method_not_on_borrow + fn method_not_on_borrow(self) -> i64 { + (*self).a // $ method=deref fieldof=MyInt + } + } + pub fn f() { let x1 = S(S2); println!("{:?}", x1.m1()); // $ method=m1 @@ -1128,10 +1151,21 @@ mod method_call_type_conversion { let t = x7.m1(); // $ method=m1 type=t:& type=t:&T.S2 println!("{:?}", x7); - let x9 : String = "Hello".to_string(); // $ type=x9:String + let x9: String = "Hello".to_string(); // $ type=x9:String + // Implicit `String` -> `str` conversion happens via the `Deref` trait: // https://doc.rust-lang.org/std/string/struct.String.html#deref. let u = x9.parse::(); // $ method=parse type=u:T.u32 + + let my_thing = &MyInt { a: 37 }; + // implicit borrow of a `&` + let a = my_thing.method_on_borrow(); // $ MISSING: method=MyInt::method_on_borrow + println!("{:?}", a); + + // no implicit borrow + let my_thing = &MyInt { a: 38 }; + let a = my_thing.method_not_on_borrow(); // $ MISSING: method=MyInt::method_not_on_borrow + println!("{:?}", a); } } 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 53c85a28c4b5..e7f2d2b10c1b 100644 --- a/rust/ql/test/library-tests/type-inference/type-inference.expected +++ b/rust/ql/test/library-tests/type-inference/type-inference.expected @@ -1510,1439 +1510,1504 @@ inferType | main.rs:1070:18:1070:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | | main.rs:1070:26:1070:34 | from_loop | | main.rs:988:5:992:5 | MyOption | | main.rs:1070:26:1070:34 | from_loop | T | main.rs:1023:5:1024:13 | S | -| main.rs:1083:15:1083:18 | SelfParam | | main.rs:1076:5:1077:19 | S | -| main.rs:1083:15:1083:18 | SelfParam | T | main.rs:1082:10:1082:10 | T | -| main.rs:1083:26:1085:9 | { ... } | | main.rs:1082:10:1082:10 | T | -| main.rs:1084:13:1084:16 | self | | main.rs:1076:5:1077:19 | S | -| main.rs:1084:13:1084:16 | self | T | main.rs:1082:10:1082:10 | T | -| main.rs:1084:13:1084:18 | self.0 | | main.rs:1082:10:1082:10 | T | -| main.rs:1087:15:1087:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1087:15:1087:19 | SelfParam | &T | main.rs:1076:5:1077:19 | S | -| main.rs:1087:15:1087:19 | SelfParam | &T.T | main.rs:1082:10:1082:10 | T | -| main.rs:1087:28:1089:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1087:28:1089:9 | { ... } | &T | main.rs:1082:10:1082:10 | T | -| main.rs:1088:13:1088:19 | &... | | file://:0:0:0:0 | & | -| main.rs:1088:13:1088:19 | &... | &T | main.rs:1082:10:1082:10 | T | -| main.rs:1088:14:1088:17 | self | | file://:0:0:0:0 | & | -| main.rs:1088:14:1088:17 | self | &T | main.rs:1076:5:1077:19 | S | -| main.rs:1088:14:1088:17 | self | &T.T | main.rs:1082:10:1082:10 | T | -| main.rs:1088:14:1088:19 | self.0 | | main.rs:1082:10:1082:10 | T | -| main.rs:1091:15:1091:25 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1091:15:1091:25 | SelfParam | &T | main.rs:1076:5:1077:19 | S | -| main.rs:1091:15:1091:25 | SelfParam | &T.T | main.rs:1082:10:1082:10 | T | -| main.rs:1091:34:1093:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1091:34:1093:9 | { ... } | &T | main.rs:1082:10:1082:10 | T | -| main.rs:1092:13:1092:19 | &... | | file://:0:0:0:0 | & | -| main.rs:1092:13:1092:19 | &... | &T | main.rs:1082:10:1082:10 | T | -| main.rs:1092:14:1092:17 | self | | file://:0:0:0:0 | & | -| main.rs:1092:14:1092:17 | self | &T | main.rs:1076:5:1077:19 | S | -| main.rs:1092:14:1092:17 | self | &T.T | main.rs:1082:10:1082:10 | T | -| main.rs:1092:14:1092:19 | self.0 | | main.rs:1082:10:1082:10 | T | -| main.rs:1097:13:1097:14 | x1 | | main.rs:1076:5:1077:19 | S | -| main.rs:1097:13:1097:14 | x1 | T | main.rs:1079:5:1080:14 | S2 | -| main.rs:1097:18:1097:22 | S(...) | | main.rs:1076:5:1077:19 | S | -| main.rs:1097:18:1097:22 | S(...) | T | main.rs:1079:5:1080:14 | S2 | -| main.rs:1097:20:1097:21 | S2 | | main.rs:1079:5:1080:14 | S2 | -| main.rs:1098:18:1098:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:1098:26:1098:27 | x1 | | main.rs:1076:5:1077:19 | S | -| main.rs:1098:26:1098:27 | x1 | T | main.rs:1079:5:1080:14 | S2 | -| main.rs:1098:26:1098:32 | x1.m1() | | main.rs:1079:5:1080:14 | S2 | -| main.rs:1100:13:1100:14 | x2 | | main.rs:1076:5:1077:19 | S | -| main.rs:1100:13:1100:14 | x2 | T | main.rs:1079:5:1080:14 | S2 | -| main.rs:1100:18:1100:22 | S(...) | | main.rs:1076:5:1077:19 | S | -| main.rs:1100:18:1100:22 | S(...) | T | main.rs:1079:5:1080:14 | S2 | -| main.rs:1100:20:1100:21 | S2 | | main.rs:1079:5:1080:14 | S2 | -| main.rs:1102:18:1102:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:1102:26:1102:27 | x2 | | main.rs:1076:5:1077:19 | S | -| main.rs:1102:26:1102:27 | x2 | T | main.rs:1079:5:1080:14 | S2 | -| main.rs:1102:26:1102:32 | x2.m2() | | file://:0:0:0:0 | & | -| main.rs:1102:26:1102:32 | x2.m2() | &T | main.rs:1079:5:1080:14 | S2 | -| main.rs:1103:18:1103:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:1103:26:1103:27 | x2 | | main.rs:1076:5:1077:19 | S | -| main.rs:1103:26:1103:27 | x2 | T | main.rs:1079:5:1080:14 | S2 | -| main.rs:1103:26:1103:32 | x2.m3() | | file://:0:0:0:0 | & | -| main.rs:1103:26:1103:32 | x2.m3() | &T | main.rs:1079:5:1080:14 | S2 | -| main.rs:1105:13:1105:14 | x3 | | main.rs:1076:5:1077:19 | S | -| main.rs:1105:13:1105:14 | x3 | T | main.rs:1079:5:1080:14 | S2 | -| main.rs:1105:18:1105:22 | S(...) | | main.rs:1076:5:1077:19 | S | -| main.rs:1105:18:1105:22 | S(...) | T | main.rs:1079:5:1080:14 | S2 | -| main.rs:1105:20:1105:21 | S2 | | main.rs:1079:5:1080:14 | S2 | -| main.rs:1107:18:1107:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:1107:26:1107:41 | ...::m2(...) | | file://:0:0:0:0 | & | -| main.rs:1107:26:1107:41 | ...::m2(...) | &T | main.rs:1079:5:1080:14 | S2 | -| main.rs:1107:38:1107:40 | &x3 | | file://:0:0:0:0 | & | -| main.rs:1107:38:1107:40 | &x3 | &T | main.rs:1076:5:1077:19 | S | -| main.rs:1107:38:1107:40 | &x3 | &T.T | main.rs:1079:5:1080:14 | S2 | -| main.rs:1107:39:1107:40 | x3 | | main.rs:1076:5:1077:19 | S | -| main.rs:1107:39:1107:40 | x3 | T | main.rs:1079:5:1080:14 | S2 | -| main.rs:1108:18:1108:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:1108:26:1108:41 | ...::m3(...) | | file://:0:0:0:0 | & | -| main.rs:1108:26:1108:41 | ...::m3(...) | &T | main.rs:1079:5:1080:14 | S2 | -| main.rs:1108:38:1108:40 | &x3 | | file://:0:0:0:0 | & | -| main.rs:1108:38:1108:40 | &x3 | &T | main.rs:1076:5:1077:19 | S | -| main.rs:1108:38:1108:40 | &x3 | &T.T | main.rs:1079:5:1080:14 | S2 | -| main.rs:1108:39:1108:40 | x3 | | main.rs:1076:5:1077:19 | S | -| main.rs:1108:39:1108:40 | x3 | T | main.rs:1079:5:1080:14 | S2 | -| main.rs:1110:13:1110:14 | x4 | | file://:0:0:0:0 | & | -| main.rs:1110:13:1110:14 | x4 | &T | main.rs:1076:5:1077:19 | S | -| main.rs:1110:13:1110:14 | x4 | &T.T | main.rs:1079:5:1080:14 | S2 | -| main.rs:1110:18:1110:23 | &... | | file://:0:0:0:0 | & | -| main.rs:1110:18:1110:23 | &... | &T | main.rs:1076:5:1077:19 | S | -| main.rs:1110:18:1110:23 | &... | &T.T | main.rs:1079:5:1080:14 | S2 | -| main.rs:1110:19:1110:23 | S(...) | | main.rs:1076:5:1077:19 | S | -| main.rs:1110:19:1110:23 | S(...) | T | main.rs:1079:5:1080:14 | S2 | -| main.rs:1110:21:1110:22 | S2 | | main.rs:1079:5:1080:14 | S2 | -| main.rs:1112:18:1112:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:1112:26:1112:27 | x4 | | file://:0:0:0:0 | & | -| main.rs:1112:26:1112:27 | x4 | &T | main.rs:1076:5:1077:19 | S | -| main.rs:1112:26:1112:27 | x4 | &T.T | main.rs:1079:5:1080:14 | S2 | -| main.rs:1112:26:1112:32 | x4.m2() | | file://:0:0:0:0 | & | -| main.rs:1112:26:1112:32 | x4.m2() | &T | main.rs:1079:5:1080:14 | S2 | -| main.rs:1113:18:1113:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:1113:26:1113:27 | x4 | | file://:0:0:0:0 | & | -| main.rs:1113:26:1113:27 | x4 | &T | main.rs:1076:5:1077:19 | S | -| main.rs:1113:26:1113:27 | x4 | &T.T | main.rs:1079:5:1080:14 | S2 | -| main.rs:1113:26:1113:32 | x4.m3() | | file://:0:0:0:0 | & | -| main.rs:1113:26:1113:32 | x4.m3() | &T | main.rs:1079:5:1080:14 | S2 | -| main.rs:1115:13:1115:14 | x5 | | file://:0:0:0:0 | & | -| main.rs:1115:13:1115:14 | x5 | &T | main.rs:1076:5:1077:19 | S | -| main.rs:1115:13:1115:14 | x5 | &T.T | main.rs:1079:5:1080:14 | S2 | -| main.rs:1115:18:1115:23 | &... | | file://:0:0:0:0 | & | -| main.rs:1115:18:1115:23 | &... | &T | main.rs:1076:5:1077:19 | S | -| main.rs:1115:18:1115:23 | &... | &T.T | main.rs:1079:5:1080:14 | S2 | -| main.rs:1115:19:1115:23 | S(...) | | main.rs:1076:5:1077:19 | S | -| main.rs:1115:19:1115:23 | S(...) | T | main.rs:1079:5:1080:14 | S2 | -| main.rs:1115:21:1115:22 | S2 | | main.rs:1079:5:1080:14 | S2 | -| main.rs:1117:18:1117:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:1117:26:1117:27 | x5 | | file://:0:0:0:0 | & | -| main.rs:1117:26:1117:27 | x5 | &T | main.rs:1076:5:1077:19 | S | -| main.rs:1117:26:1117:27 | x5 | &T.T | main.rs:1079:5:1080:14 | S2 | -| main.rs:1117:26:1117:32 | x5.m1() | | main.rs:1079:5:1080:14 | S2 | -| main.rs:1118:18:1118:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:1118:26:1118:27 | x5 | | file://:0:0:0:0 | & | -| main.rs:1118:26:1118:27 | x5 | &T | main.rs:1076:5:1077:19 | S | -| main.rs:1118:26:1118:27 | x5 | &T.T | main.rs:1079:5:1080:14 | S2 | -| main.rs:1118:26:1118:29 | x5.0 | | main.rs:1079:5:1080:14 | S2 | -| main.rs:1120:13:1120:14 | x6 | | file://:0:0:0:0 | & | -| main.rs:1120:13:1120:14 | x6 | &T | file://:0:0:0:0 | & | -| main.rs:1120:13:1120:14 | x6 | &T | main.rs:1076:5:1077:19 | S | -| main.rs:1120:13:1120:14 | x6 | &T.&T | main.rs:1076:5:1077:19 | S | -| main.rs:1120:13:1120:14 | x6 | &T.&T.T | main.rs:1079:5:1080:14 | S2 | -| main.rs:1120:13:1120:14 | x6 | &T.T | main.rs:1079:5:1080:14 | S2 | -| main.rs:1120:18:1120:23 | &... | | file://:0:0:0:0 | & | -| main.rs:1120:18:1120:23 | &... | &T | file://:0:0:0:0 | & | -| main.rs:1120:18:1120:23 | &... | &T | main.rs:1076:5:1077:19 | S | -| main.rs:1120:18:1120:23 | &... | &T.&T | main.rs:1076:5:1077:19 | S | -| main.rs:1120:18:1120:23 | &... | &T.&T.T | main.rs:1079:5:1080:14 | S2 | -| main.rs:1120:18:1120:23 | &... | &T.T | main.rs:1079:5:1080:14 | S2 | -| main.rs:1120:19:1120:23 | S(...) | | file://:0:0:0:0 | & | -| main.rs:1120:19:1120:23 | S(...) | | main.rs:1076:5:1077:19 | S | -| main.rs:1120:19:1120:23 | S(...) | &T | main.rs:1076:5:1077:19 | S | -| main.rs:1120:19:1120:23 | S(...) | &T.T | main.rs:1079:5:1080:14 | S2 | -| main.rs:1120:19:1120:23 | S(...) | T | main.rs:1079:5:1080:14 | S2 | -| main.rs:1120:21:1120:22 | S2 | | main.rs:1079:5:1080:14 | S2 | -| main.rs:1123:18:1123:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:1123:26:1123:30 | (...) | | file://:0:0:0:0 | & | -| main.rs:1123:26:1123:30 | (...) | | main.rs:1076:5:1077:19 | S | -| main.rs:1123:26:1123:30 | (...) | &T | main.rs:1076:5:1077:19 | S | -| main.rs:1123:26:1123:30 | (...) | &T.T | main.rs:1079:5:1080:14 | S2 | -| main.rs:1123:26:1123:30 | (...) | T | main.rs:1079:5:1080:14 | S2 | -| main.rs:1123:26:1123:35 | ... .m1() | | main.rs:1079:5:1080:14 | S2 | -| main.rs:1123:27:1123:29 | * ... | | file://:0:0:0:0 | & | -| main.rs:1123:27:1123:29 | * ... | | main.rs:1076:5:1077:19 | S | -| main.rs:1123:27:1123:29 | * ... | &T | main.rs:1076:5:1077:19 | S | -| main.rs:1123:27:1123:29 | * ... | &T.T | main.rs:1079:5:1080:14 | S2 | -| main.rs:1123:27:1123:29 | * ... | T | main.rs:1079:5:1080:14 | S2 | -| main.rs:1123:28:1123:29 | x6 | | file://:0:0:0:0 | & | -| main.rs:1123:28:1123:29 | x6 | &T | file://:0:0:0:0 | & | -| main.rs:1123:28:1123:29 | x6 | &T | main.rs:1076:5:1077:19 | S | -| main.rs:1123:28:1123:29 | x6 | &T.&T | main.rs:1076:5:1077:19 | S | -| main.rs:1123:28:1123:29 | x6 | &T.&T.T | main.rs:1079:5:1080:14 | S2 | -| main.rs:1123:28:1123:29 | x6 | &T.T | main.rs:1079:5:1080:14 | S2 | -| main.rs:1125:13:1125:14 | x7 | | main.rs:1076:5:1077:19 | S | -| main.rs:1125:13:1125:14 | x7 | T | file://:0:0:0:0 | & | -| main.rs:1125:13:1125:14 | x7 | T.&T | main.rs:1079:5:1080:14 | S2 | -| main.rs:1125:18:1125:23 | S(...) | | main.rs:1076:5:1077:19 | S | -| main.rs:1125:18:1125:23 | S(...) | T | file://:0:0:0:0 | & | -| main.rs:1125:18:1125:23 | S(...) | T.&T | main.rs:1079:5:1080:14 | S2 | -| main.rs:1125:20:1125:22 | &S2 | | file://:0:0:0:0 | & | -| main.rs:1125:20:1125:22 | &S2 | &T | main.rs:1079:5:1080:14 | S2 | -| main.rs:1125:21:1125:22 | S2 | | main.rs:1079:5:1080:14 | S2 | -| main.rs:1128:13:1128:13 | t | | file://:0:0:0:0 | & | -| main.rs:1128:13:1128:13 | t | &T | main.rs:1079:5:1080:14 | S2 | -| main.rs:1128:17:1128:18 | x7 | | main.rs:1076:5:1077:19 | S | -| main.rs:1128:17:1128:18 | x7 | T | file://:0:0:0:0 | & | -| main.rs:1128:17:1128:18 | x7 | T.&T | main.rs:1079:5:1080:14 | S2 | -| main.rs:1128:17:1128:23 | x7.m1() | | file://:0:0:0:0 | & | -| main.rs:1128:17:1128:23 | x7.m1() | &T | main.rs:1079:5:1080:14 | S2 | -| main.rs:1129:18:1129:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:1129:26:1129:27 | x7 | | main.rs:1076:5:1077:19 | S | -| main.rs:1129:26:1129:27 | x7 | T | file://:0:0:0:0 | & | -| main.rs:1129:26:1129:27 | x7 | T.&T | main.rs:1079:5:1080:14 | S2 | -| main.rs:1131:13:1131:14 | x9 | | {EXTERNAL LOCATION} | String | -| main.rs:1131:27:1131:33 | "Hello" | | {EXTERNAL LOCATION} | str | -| main.rs:1131:27:1131:45 | "Hello".to_string() | | {EXTERNAL LOCATION} | String | -| main.rs:1134:13:1134:13 | u | | {EXTERNAL LOCATION} | Result | -| main.rs:1134:13:1134:13 | u | T | {EXTERNAL LOCATION} | u32 | -| main.rs:1134:17:1134:18 | x9 | | {EXTERNAL LOCATION} | String | -| main.rs:1134:17:1134:33 | x9.parse() | | {EXTERNAL LOCATION} | Result | -| main.rs:1134:17:1134:33 | x9.parse() | T | {EXTERNAL LOCATION} | u32 | -| main.rs:1141:16:1141:20 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1141:16:1141:20 | SelfParam | &T | main.rs:1139:5:1147:5 | Self [trait MyTrait] | -| main.rs:1144:16:1144:20 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1144:16:1144:20 | SelfParam | &T | main.rs:1139:5:1147:5 | Self [trait MyTrait] | -| main.rs:1144:32:1146:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1144:32:1146:9 | { ... } | &T | main.rs:1139:5:1147:5 | Self [trait MyTrait] | -| main.rs:1145:13:1145:16 | self | | file://:0:0:0:0 | & | -| main.rs:1145:13:1145:16 | self | &T | main.rs:1139:5:1147:5 | Self [trait MyTrait] | -| main.rs:1145:13:1145:22 | self.foo() | | file://:0:0:0:0 | & | -| main.rs:1145:13:1145:22 | self.foo() | &T | main.rs:1139:5:1147:5 | Self [trait MyTrait] | -| main.rs:1153:16:1153:20 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1153:16:1153:20 | SelfParam | &T | main.rs:1149:5:1149:20 | MyStruct | -| main.rs:1153:36:1155:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1153:36:1155:9 | { ... } | &T | main.rs:1149:5:1149:20 | MyStruct | -| main.rs:1154:13:1154:16 | self | | file://:0:0:0:0 | & | -| main.rs:1154:13:1154:16 | self | &T | main.rs:1149:5:1149:20 | MyStruct | -| main.rs:1159:13:1159:13 | x | | main.rs:1149:5:1149:20 | MyStruct | -| main.rs:1159:17:1159:24 | MyStruct | | main.rs:1149:5:1149:20 | MyStruct | -| main.rs:1160:9:1160:9 | x | | main.rs:1149:5:1149:20 | MyStruct | -| main.rs:1160:9:1160:15 | x.bar() | | file://:0:0:0:0 | & | -| main.rs:1160:9:1160:15 | x.bar() | &T | main.rs:1149:5:1149:20 | MyStruct | -| main.rs:1170:16:1170:20 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1170:16:1170:20 | SelfParam | &T | main.rs:1167:5:1167:26 | MyStruct | -| main.rs:1170:16:1170:20 | SelfParam | &T.T | main.rs:1169:10:1169:10 | T | -| main.rs:1170:32:1172:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1170:32:1172:9 | { ... } | &T | main.rs:1167:5:1167:26 | MyStruct | -| main.rs:1170:32:1172:9 | { ... } | &T.T | main.rs:1169:10:1169:10 | T | -| main.rs:1171:13:1171:16 | self | | file://:0:0:0:0 | & | -| main.rs:1171:13:1171:16 | self | &T | main.rs:1167:5:1167:26 | MyStruct | -| main.rs:1171:13:1171:16 | self | &T.T | main.rs:1169:10:1169:10 | T | -| main.rs:1176:13:1176:13 | x | | main.rs:1167:5:1167:26 | MyStruct | -| main.rs:1176:13:1176:13 | x | T | main.rs:1165:5:1165:13 | S | -| main.rs:1176:17:1176:27 | MyStruct(...) | | main.rs:1167:5:1167:26 | MyStruct | -| main.rs:1176:17:1176:27 | MyStruct(...) | T | main.rs:1165:5:1165:13 | S | -| main.rs:1176:26:1176:26 | S | | main.rs:1165:5:1165:13 | S | -| main.rs:1177:9:1177:9 | x | | main.rs:1167:5:1167:26 | MyStruct | -| main.rs:1177:9:1177:9 | x | T | main.rs:1165:5:1165:13 | S | -| main.rs:1177:9:1177:15 | x.foo() | | file://:0:0:0:0 | & | -| main.rs:1177:9:1177:15 | x.foo() | &T | main.rs:1167:5:1167:26 | MyStruct | -| main.rs:1177:9:1177:15 | x.foo() | &T.T | main.rs:1165:5:1165:13 | S | -| main.rs:1188:17:1188:25 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1188:17:1188:25 | SelfParam | &T | main.rs:1182:5:1185:5 | MyFlag | -| main.rs:1189:13:1189:16 | self | | file://:0:0:0:0 | & | -| main.rs:1189:13:1189:16 | self | &T | main.rs:1182:5:1185:5 | MyFlag | -| main.rs:1189:13:1189:21 | self.bool | | {EXTERNAL LOCATION} | bool | -| main.rs:1189:13:1189:34 | ... = ... | | file://:0:0:0:0 | () | -| main.rs:1189:25:1189:34 | ! ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1189:26:1189:29 | self | | file://:0:0:0:0 | & | -| main.rs:1189:26:1189:29 | self | &T | main.rs:1182:5:1185:5 | MyFlag | -| main.rs:1189:26:1189:34 | self.bool | | {EXTERNAL LOCATION} | bool | -| main.rs:1196:15:1196:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1196:15:1196:19 | SelfParam | &T | main.rs:1193:5:1193:13 | S | -| main.rs:1196:31:1198:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1196:31:1198:9 | { ... } | &T | file://:0:0:0:0 | & | -| main.rs:1196:31:1198:9 | { ... } | &T | main.rs:1193:5:1193:13 | S | -| main.rs:1196:31:1198:9 | { ... } | &T.&T | file://:0:0:0:0 | & | -| main.rs:1196:31:1198:9 | { ... } | &T.&T.&T | file://:0:0:0:0 | & | -| main.rs:1196:31:1198:9 | { ... } | &T.&T.&T.&T | main.rs:1193:5:1193:13 | S | -| main.rs:1197:13:1197:19 | &... | | file://:0:0:0:0 | & | -| main.rs:1197:13:1197:19 | &... | &T | file://:0:0:0:0 | & | -| main.rs:1197:13:1197:19 | &... | &T | main.rs:1193:5:1193:13 | S | -| main.rs:1197:13:1197:19 | &... | &T.&T | file://:0:0:0:0 | & | -| main.rs:1197:13:1197:19 | &... | &T.&T.&T | file://:0:0:0:0 | & | -| main.rs:1197:13:1197:19 | &... | &T.&T.&T.&T | main.rs:1193:5:1193:13 | S | -| main.rs:1197:14:1197:19 | &... | | file://:0:0:0:0 | & | -| main.rs:1197:14:1197:19 | &... | | main.rs:1193:5:1193:13 | S | -| main.rs:1197:14:1197:19 | &... | &T | file://:0:0:0:0 | & | -| main.rs:1197:14:1197:19 | &... | &T.&T | file://:0:0:0:0 | & | -| main.rs:1197:14:1197:19 | &... | &T.&T.&T | main.rs:1193:5:1193:13 | S | -| main.rs:1197:15:1197:19 | &self | | file://:0:0:0:0 | & | -| main.rs:1197:15:1197:19 | &self | &T | file://:0:0:0:0 | & | -| main.rs:1197:15:1197:19 | &self | &T.&T | main.rs:1193:5:1193:13 | S | -| main.rs:1197:16:1197:19 | self | | file://:0:0:0:0 | & | -| main.rs:1197:16:1197:19 | self | &T | main.rs:1193:5:1193:13 | S | -| main.rs:1200:15:1200:25 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1200:15:1200:25 | SelfParam | &T | main.rs:1193:5:1193:13 | S | -| main.rs:1200:37:1202:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1200:37:1202:9 | { ... } | &T | file://:0:0:0:0 | & | -| main.rs:1200:37:1202:9 | { ... } | &T | main.rs:1193:5:1193:13 | S | -| main.rs:1200:37:1202:9 | { ... } | &T.&T | file://:0:0:0:0 | & | -| main.rs:1200:37:1202:9 | { ... } | &T.&T.&T | file://:0:0:0:0 | & | -| main.rs:1200:37:1202:9 | { ... } | &T.&T.&T.&T | main.rs:1193:5:1193:13 | S | -| main.rs:1201:13:1201:19 | &... | | file://:0:0:0:0 | & | -| main.rs:1201:13:1201:19 | &... | &T | file://:0:0:0:0 | & | -| main.rs:1201:13:1201:19 | &... | &T | main.rs:1193:5:1193:13 | S | -| main.rs:1201:13:1201:19 | &... | &T.&T | file://:0:0:0:0 | & | -| main.rs:1201:13:1201:19 | &... | &T.&T.&T | file://:0:0:0:0 | & | -| main.rs:1201:13:1201:19 | &... | &T.&T.&T.&T | main.rs:1193:5:1193:13 | S | -| main.rs:1201:14:1201:19 | &... | | file://:0:0:0:0 | & | -| main.rs:1201:14:1201:19 | &... | | main.rs:1193:5:1193:13 | S | -| main.rs:1201:14:1201:19 | &... | &T | file://:0:0:0:0 | & | -| main.rs:1201:14:1201:19 | &... | &T.&T | file://:0:0:0:0 | & | -| main.rs:1201:14:1201:19 | &... | &T.&T.&T | main.rs:1193:5:1193:13 | S | -| main.rs:1201:15:1201:19 | &self | | file://:0:0:0:0 | & | -| main.rs:1201:15:1201:19 | &self | &T | file://:0:0:0:0 | & | -| main.rs:1201:15:1201:19 | &self | &T.&T | main.rs:1193:5:1193:13 | S | -| main.rs:1201:16:1201:19 | self | | file://:0:0:0:0 | & | -| main.rs:1201:16:1201:19 | self | &T | main.rs:1193:5:1193:13 | S | -| main.rs:1204:15:1204:15 | x | | file://:0:0:0:0 | & | -| main.rs:1204:15:1204:15 | x | &T | main.rs:1193:5:1193:13 | S | -| main.rs:1204:34:1206:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1204:34:1206:9 | { ... } | &T | main.rs:1193:5:1193:13 | S | -| main.rs:1205:13:1205:13 | x | | file://:0:0:0:0 | & | -| main.rs:1205:13:1205:13 | x | &T | main.rs:1193:5:1193:13 | S | -| main.rs:1208:15:1208:15 | x | | file://:0:0:0:0 | & | -| main.rs:1208:15:1208:15 | x | &T | main.rs:1193:5:1193:13 | S | -| main.rs:1208:34:1210:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1208:34:1210:9 | { ... } | &T | file://:0:0:0:0 | & | -| main.rs:1208:34:1210:9 | { ... } | &T | main.rs:1193:5:1193:13 | S | -| main.rs:1208:34:1210:9 | { ... } | &T.&T | file://:0:0:0:0 | & | -| main.rs:1208:34:1210:9 | { ... } | &T.&T.&T | file://:0:0:0:0 | & | -| main.rs:1208:34:1210:9 | { ... } | &T.&T.&T.&T | main.rs:1193:5:1193:13 | S | -| main.rs:1209:13:1209:16 | &... | | file://:0:0:0:0 | & | -| main.rs:1209:13:1209:16 | &... | &T | file://:0:0:0:0 | & | -| main.rs:1209:13:1209:16 | &... | &T | main.rs:1193:5:1193:13 | S | -| main.rs:1209:13:1209:16 | &... | &T.&T | file://:0:0:0:0 | & | -| main.rs:1209:13:1209:16 | &... | &T.&T.&T | file://:0:0:0:0 | & | -| main.rs:1209:13:1209:16 | &... | &T.&T.&T.&T | main.rs:1193:5:1193:13 | S | -| main.rs:1209:14:1209:16 | &... | | file://:0:0:0:0 | & | -| main.rs:1209:14:1209:16 | &... | | main.rs:1193:5:1193:13 | S | -| main.rs:1209:14:1209:16 | &... | &T | file://:0:0:0:0 | & | -| main.rs:1209:14:1209:16 | &... | &T.&T | file://:0:0:0:0 | & | -| main.rs:1209:14:1209:16 | &... | &T.&T.&T | main.rs:1193:5:1193:13 | S | -| main.rs:1209:15:1209:16 | &x | | file://:0:0:0:0 | & | -| main.rs:1209:15:1209:16 | &x | &T | file://:0:0:0:0 | & | -| main.rs:1209:15:1209:16 | &x | &T.&T | main.rs:1193:5:1193:13 | S | -| main.rs:1209:16:1209:16 | x | | file://:0:0:0:0 | & | -| main.rs:1209:16:1209:16 | x | &T | main.rs:1193:5:1193:13 | S | -| main.rs:1214:13:1214:13 | x | | main.rs:1193:5:1193:13 | S | -| main.rs:1214:17:1214:20 | S {...} | | main.rs:1193:5:1193:13 | S | -| main.rs:1215:9:1215:9 | x | | main.rs:1193:5:1193:13 | S | -| main.rs:1215:9:1215:14 | x.f1() | | file://:0:0:0:0 | & | -| main.rs:1215:9:1215:14 | x.f1() | &T | main.rs:1193:5:1193:13 | S | -| main.rs:1216:9:1216:9 | x | | main.rs:1193:5:1193:13 | S | -| main.rs:1216:9:1216:14 | x.f2() | | file://:0:0:0:0 | & | -| main.rs:1216:9:1216:14 | x.f2() | &T | main.rs:1193:5:1193:13 | S | -| main.rs:1217:9:1217:17 | ...::f3(...) | | file://:0:0:0:0 | & | -| main.rs:1217:9:1217:17 | ...::f3(...) | &T | main.rs:1193:5:1193:13 | S | -| main.rs:1217:15:1217:16 | &x | | file://:0:0:0:0 | & | -| main.rs:1217:15:1217:16 | &x | &T | main.rs:1193:5:1193:13 | S | -| main.rs:1217:16:1217:16 | x | | main.rs:1193:5:1193:13 | S | -| main.rs:1219:13:1219:13 | n | | {EXTERNAL LOCATION} | bool | -| main.rs:1219:13:1219:13 | n | | file://:0:0:0:0 | & | -| main.rs:1219:17:1219:24 | * ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1219:17:1219:24 | * ... | | file://:0:0:0:0 | & | -| main.rs:1219:18:1219:24 | * ... | | file://:0:0:0:0 | & | -| main.rs:1219:18:1219:24 | * ... | &T | {EXTERNAL LOCATION} | bool | -| main.rs:1219:18:1219:24 | * ... | &T | file://:0:0:0:0 | & | -| main.rs:1219:19:1219:24 | &... | | file://:0:0:0:0 | & | -| main.rs:1219:19:1219:24 | &... | &T | file://:0:0:0:0 | & | -| main.rs:1219:19:1219:24 | &... | &T.&T | {EXTERNAL LOCATION} | bool | -| main.rs:1219:19:1219:24 | &... | &T.&T | file://:0:0:0:0 | & | -| main.rs:1219:20:1219:24 | &true | | file://:0:0:0:0 | & | -| main.rs:1219:20:1219:24 | &true | &T | {EXTERNAL LOCATION} | bool | -| main.rs:1219:20:1219:24 | &true | &T | file://:0:0:0:0 | & | -| main.rs:1219:21:1219:24 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:1219:21:1219:24 | true | | file://:0:0:0:0 | & | -| main.rs:1223:13:1223:20 | mut flag | | main.rs:1182:5:1185:5 | MyFlag | -| main.rs:1223:24:1223:41 | ...::default(...) | | main.rs:1182:5:1185:5 | MyFlag | -| main.rs:1224:22:1224:30 | &mut flag | | file://:0:0:0:0 | & | -| main.rs:1224:22:1224:30 | &mut flag | &T | main.rs:1182:5:1185:5 | MyFlag | -| main.rs:1224:27:1224:30 | flag | | main.rs:1182:5:1185:5 | MyFlag | -| main.rs:1225:18:1225:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:1225:26:1225:29 | flag | | main.rs:1182:5:1185:5 | MyFlag | -| main.rs:1239:43:1242:5 | { ... } | | {EXTERNAL LOCATION} | Result | -| main.rs:1239:43:1242:5 | { ... } | E | main.rs:1232:5:1233:14 | S1 | -| main.rs:1239:43:1242:5 | { ... } | T | main.rs:1232:5:1233:14 | S1 | -| main.rs:1240:13:1240:13 | x | | main.rs:1232:5:1233:14 | S1 | -| main.rs:1240:17:1240:30 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1240:17:1240:30 | ...::Ok(...) | T | main.rs:1232:5:1233:14 | S1 | -| main.rs:1240:17:1240:31 | TryExpr | | main.rs:1232:5:1233:14 | S1 | -| main.rs:1240:28:1240:29 | S1 | | main.rs:1232:5:1233:14 | S1 | -| main.rs:1241:9:1241:22 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1241:9:1241:22 | ...::Ok(...) | E | main.rs:1232:5:1233:14 | S1 | -| main.rs:1241:9:1241:22 | ...::Ok(...) | T | main.rs:1232:5:1233:14 | S1 | -| main.rs:1241:20:1241:21 | S1 | | main.rs:1232:5:1233:14 | S1 | -| main.rs:1245:46:1249:5 | { ... } | | {EXTERNAL LOCATION} | Result | -| main.rs:1245:46:1249:5 | { ... } | E | main.rs:1235:5:1236:14 | S2 | -| main.rs:1245:46:1249:5 | { ... } | T | main.rs:1232:5:1233:14 | S1 | -| main.rs:1246:13:1246:13 | x | | {EXTERNAL LOCATION} | Result | -| main.rs:1246:13:1246:13 | x | T | main.rs:1232:5:1233:14 | S1 | -| main.rs:1246:17:1246:30 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1246:17:1246:30 | ...::Ok(...) | T | main.rs:1232:5:1233:14 | S1 | -| main.rs:1246:28:1246:29 | S1 | | main.rs:1232:5:1233:14 | S1 | -| main.rs:1247:13:1247:13 | y | | main.rs:1232:5:1233:14 | S1 | -| main.rs:1247:17:1247:17 | x | | {EXTERNAL LOCATION} | Result | -| main.rs:1247:17:1247:17 | x | T | main.rs:1232:5:1233:14 | S1 | -| main.rs:1247:17:1247:18 | TryExpr | | main.rs:1232:5:1233:14 | S1 | -| main.rs:1248:9:1248:22 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1248:9:1248:22 | ...::Ok(...) | E | main.rs:1235:5:1236:14 | S2 | -| main.rs:1248:9:1248:22 | ...::Ok(...) | T | main.rs:1232:5:1233:14 | S1 | -| main.rs:1248:20:1248:21 | S1 | | main.rs:1232:5:1233:14 | S1 | -| main.rs:1252:40:1257:5 | { ... } | | {EXTERNAL LOCATION} | Result | -| main.rs:1252:40:1257:5 | { ... } | E | main.rs:1235:5:1236:14 | S2 | -| main.rs:1252:40:1257:5 | { ... } | T | main.rs:1232:5:1233:14 | S1 | -| main.rs:1253:13:1253:13 | x | | {EXTERNAL LOCATION} | Result | -| main.rs:1253:13:1253:13 | x | T | {EXTERNAL LOCATION} | Result | -| main.rs:1253:13:1253:13 | x | T.T | main.rs:1232:5:1233:14 | S1 | -| main.rs:1253:17:1253:42 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1253:17:1253:42 | ...::Ok(...) | T | {EXTERNAL LOCATION} | Result | -| main.rs:1253:17:1253:42 | ...::Ok(...) | T.T | main.rs:1232:5:1233:14 | S1 | -| main.rs:1253:28:1253:41 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1253:28:1253:41 | ...::Ok(...) | T | main.rs:1232:5:1233:14 | S1 | -| main.rs:1253:39:1253:40 | S1 | | main.rs:1232:5:1233:14 | S1 | -| main.rs:1255:17:1255:17 | x | | {EXTERNAL LOCATION} | Result | -| main.rs:1255:17:1255:17 | x | T | {EXTERNAL LOCATION} | Result | -| main.rs:1255:17:1255:17 | x | T.T | main.rs:1232:5:1233:14 | S1 | -| main.rs:1255:17:1255:18 | TryExpr | | {EXTERNAL LOCATION} | Result | -| main.rs:1255:17:1255:18 | TryExpr | T | main.rs:1232:5:1233:14 | S1 | -| main.rs:1255:17:1255:29 | ... .map(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1256:9:1256:22 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1256:9:1256:22 | ...::Ok(...) | E | main.rs:1235:5:1236:14 | S2 | -| main.rs:1256:9:1256:22 | ...::Ok(...) | T | main.rs:1232:5:1233:14 | S1 | -| main.rs:1256:20:1256:21 | S1 | | main.rs:1232:5:1233:14 | S1 | -| main.rs:1260:30:1260:34 | input | | {EXTERNAL LOCATION} | Result | -| main.rs:1260:30:1260:34 | input | E | main.rs:1232:5:1233:14 | S1 | -| main.rs:1260:30:1260:34 | input | T | main.rs:1260:20:1260:27 | T | -| main.rs:1260:69:1267:5 | { ... } | | {EXTERNAL LOCATION} | Result | -| main.rs:1260:69:1267:5 | { ... } | E | main.rs:1232:5:1233:14 | S1 | -| main.rs:1260:69:1267:5 | { ... } | T | main.rs:1260:20:1260:27 | T | -| main.rs:1261:13:1261:17 | value | | main.rs:1260:20:1260:27 | T | -| main.rs:1261:21:1261:25 | input | | {EXTERNAL LOCATION} | Result | -| main.rs:1261:21:1261:25 | input | E | main.rs:1232:5:1233:14 | S1 | -| main.rs:1261:21:1261:25 | input | T | main.rs:1260:20:1260:27 | T | -| main.rs:1261:21:1261:26 | TryExpr | | main.rs:1260:20:1260:27 | T | -| main.rs:1262:22:1262:38 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1262:22:1262:38 | ...::Ok(...) | T | main.rs:1260:20:1260:27 | T | -| main.rs:1262:22:1265:10 | ... .and_then(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1262:33:1262:37 | value | | main.rs:1260:20:1260:27 | T | -| main.rs:1262:53:1265:9 | { ... } | | {EXTERNAL LOCATION} | Result | -| main.rs:1262:53:1265:9 | { ... } | E | main.rs:1232:5:1233:14 | S1 | -| main.rs:1263:22:1263:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:1264:13:1264:34 | ...::Ok::<...>(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1264:13:1264:34 | ...::Ok::<...>(...) | E | main.rs:1232:5:1233:14 | S1 | -| main.rs:1266:9:1266:23 | ...::Err(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1266:9:1266:23 | ...::Err(...) | E | main.rs:1232:5:1233:14 | S1 | -| main.rs:1266:9:1266:23 | ...::Err(...) | T | main.rs:1260:20:1260:27 | T | -| main.rs:1266:21:1266:22 | S1 | | main.rs:1232:5:1233:14 | S1 | -| main.rs:1270:37:1270:52 | try_same_error(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1270:37:1270:52 | try_same_error(...) | E | main.rs:1232:5:1233:14 | S1 | -| main.rs:1270:37:1270:52 | try_same_error(...) | T | main.rs:1232:5:1233:14 | S1 | -| main.rs:1271:22:1271:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:1274:37:1274:55 | try_convert_error(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1274:37:1274:55 | try_convert_error(...) | E | main.rs:1235:5:1236:14 | S2 | -| main.rs:1274:37:1274:55 | try_convert_error(...) | T | main.rs:1232:5:1233:14 | S1 | -| main.rs:1275:22:1275:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:1278:37:1278:49 | try_chained(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1278:37:1278:49 | try_chained(...) | E | main.rs:1235:5:1236:14 | S2 | -| main.rs:1278:37:1278:49 | try_chained(...) | T | main.rs:1232:5:1233:14 | S1 | -| main.rs:1279:22:1279:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:1282:37:1282:63 | try_complex(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1282:37:1282:63 | try_complex(...) | E | main.rs:1232:5:1233:14 | S1 | -| main.rs:1282:37:1282:63 | try_complex(...) | T | main.rs:1232:5:1233:14 | S1 | -| main.rs:1282:49:1282:62 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | -| main.rs:1282:49:1282:62 | ...::Ok(...) | E | main.rs:1232:5:1233:14 | S1 | -| main.rs:1282:49:1282:62 | ...::Ok(...) | T | main.rs:1232:5:1233:14 | S1 | -| main.rs:1282:60:1282:61 | S1 | | main.rs:1232:5:1233:14 | S1 | -| main.rs:1283:22:1283:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:1290:13:1290:13 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:1290:22:1290:22 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1291:13:1291:13 | y | | {EXTERNAL LOCATION} | i32 | -| main.rs:1291:17:1291:17 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1292:13:1292:13 | z | | {EXTERNAL LOCATION} | i32 | -| main.rs:1292:17:1292:17 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:1292:17:1292:21 | ... + ... | | {EXTERNAL LOCATION} | i32 | -| main.rs:1292:21:1292:21 | y | | {EXTERNAL LOCATION} | i32 | -| main.rs:1293:13:1293:13 | z | | {EXTERNAL LOCATION} | i32 | -| main.rs:1293:17:1293:17 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:1293:17:1293:23 | x.abs() | | {EXTERNAL LOCATION} | i32 | -| main.rs:1294:13:1294:13 | c | | {EXTERNAL LOCATION} | char | -| main.rs:1294:17:1294:19 | 'c' | | {EXTERNAL LOCATION} | char | -| main.rs:1295:13:1295:17 | hello | | {EXTERNAL LOCATION} | str | -| main.rs:1295:21:1295:27 | "Hello" | | {EXTERNAL LOCATION} | str | -| main.rs:1296:13:1296:13 | f | | {EXTERNAL LOCATION} | f64 | -| main.rs:1296:17:1296:24 | 123.0f64 | | {EXTERNAL LOCATION} | f64 | -| main.rs:1297:13:1297:13 | t | | {EXTERNAL LOCATION} | bool | -| main.rs:1297:17:1297:20 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:1298:13:1298:13 | f | | {EXTERNAL LOCATION} | bool | -| main.rs:1298:17:1298:21 | false | | {EXTERNAL LOCATION} | bool | -| main.rs:1305:13:1305:13 | x | | {EXTERNAL LOCATION} | bool | -| main.rs:1305:17:1305:20 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:1305:17:1305:29 | ... && ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1305:25:1305:29 | false | | {EXTERNAL LOCATION} | bool | -| main.rs:1306:13:1306:13 | y | | {EXTERNAL LOCATION} | bool | -| main.rs:1306:17:1306:20 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:1306:17:1306:29 | ... \|\| ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1306:25:1306:29 | false | | {EXTERNAL LOCATION} | bool | -| main.rs:1308:13:1308:17 | mut a | | {EXTERNAL LOCATION} | i32 | -| main.rs:1309:13:1309:16 | cond | | {EXTERNAL LOCATION} | bool | -| main.rs:1309:20:1309:21 | 34 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1309:20:1309:27 | ... == ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1309:26:1309:27 | 33 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1310:12:1310:15 | cond | | {EXTERNAL LOCATION} | bool | -| main.rs:1311:17:1311:17 | z | | file://:0:0:0:0 | () | -| main.rs:1311:21:1311:27 | (...) | | file://:0:0:0:0 | () | -| main.rs:1311:22:1311:22 | a | | {EXTERNAL LOCATION} | i32 | -| main.rs:1311:22:1311:26 | ... = ... | | file://:0:0:0:0 | () | -| main.rs:1311:26:1311:26 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1313:13:1313:13 | a | | {EXTERNAL LOCATION} | i32 | -| main.rs:1313:13:1313:17 | ... = ... | | file://:0:0:0:0 | () | -| main.rs:1313:17:1313:17 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1315:9:1315:9 | a | | {EXTERNAL LOCATION} | i32 | -| main.rs:1329:30:1331:9 | { ... } | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1330:13:1330:31 | Vec2 {...} | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1330:23:1330:23 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1330:23:1330:23 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1330:29:1330:29 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1330:29:1330:29 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1337:16:1337:19 | SelfParam | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1337:22:1337:24 | rhs | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1337:41:1342:9 | { ... } | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1338:13:1341:13 | Vec2 {...} | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1339:20:1339:23 | self | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1339:20:1339:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1339:20:1339:33 | ... + ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1339:29:1339:31 | rhs | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1339:29:1339:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1340:20:1340:23 | self | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1340:20:1340:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1340:20:1340:33 | ... + ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1340:29:1340:31 | rhs | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1340:29:1340:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1347:23:1347:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1347:23:1347:31 | SelfParam | &T | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1347:34:1347:36 | rhs | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1348:13:1348:16 | self | | file://:0:0:0:0 | & | -| main.rs:1348:13:1348:16 | self | &T | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1348:13:1348:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1348:13:1348:27 | ... += ... | | file://:0:0:0:0 | () | -| main.rs:1348:23:1348:25 | rhs | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1348:23:1348:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1349:13:1349:16 | self | | file://:0:0:0:0 | & | -| main.rs:1349:13:1349:16 | self | &T | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1349:13:1349:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1349:13:1349:27 | ... += ... | | file://:0:0:0:0 | () | -| main.rs:1349:23:1349:25 | rhs | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1349:23:1349:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1355:16:1355:19 | SelfParam | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1355:22:1355:24 | rhs | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1355:41:1360:9 | { ... } | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1356:13:1359:13 | Vec2 {...} | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1357:20:1357:23 | self | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1357:20:1357:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1357:20:1357:33 | ... - ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1357:29:1357:31 | rhs | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1357:29:1357:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1358:20:1358:23 | self | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1358:20:1358:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1358:20:1358:33 | ... - ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1358:29:1358:31 | rhs | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1358:29:1358:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1365:23:1365:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1365:23:1365:31 | SelfParam | &T | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1365:34:1365:36 | rhs | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1366:13:1366:16 | self | | file://:0:0:0:0 | & | -| main.rs:1366:13:1366:16 | self | &T | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1366:13:1366:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1366:13:1366:27 | ... -= ... | | file://:0:0:0:0 | () | -| main.rs:1366:23:1366:25 | rhs | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1366:23:1366:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1367:13:1367:16 | self | | file://:0:0:0:0 | & | -| main.rs:1367:13:1367:16 | self | &T | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1367:13:1367:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1367:13:1367:27 | ... -= ... | | file://:0:0:0:0 | () | -| main.rs:1367:23:1367:25 | rhs | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1367:23:1367:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1373:16:1373:19 | SelfParam | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1373:22:1373:24 | rhs | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1373:41:1378:9 | { ... } | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1374:13:1377:13 | Vec2 {...} | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1375:20:1375:23 | self | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1375:20:1375:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1375:20:1375:33 | ... * ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1375:29:1375:31 | rhs | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1375:29:1375:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1376:20:1376:23 | self | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1376:20:1376:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1376:20:1376:33 | ... * ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1376:29:1376:31 | rhs | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1376:29:1376:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1382:23:1382:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1382:23:1382:31 | SelfParam | &T | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1382:34:1382:36 | rhs | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1088:15:1088:18 | SelfParam | | main.rs:1076:5:1077:19 | S | +| main.rs:1088:15:1088:18 | SelfParam | T | main.rs:1087:10:1087:10 | T | +| main.rs:1088:26:1090:9 | { ... } | | main.rs:1087:10:1087:10 | T | +| main.rs:1089:13:1089:16 | self | | main.rs:1076:5:1077:19 | S | +| main.rs:1089:13:1089:16 | self | T | main.rs:1087:10:1087:10 | T | +| main.rs:1089:13:1089:18 | self.0 | | main.rs:1087:10:1087:10 | T | +| main.rs:1092:15:1092:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1092:15:1092:19 | SelfParam | &T | main.rs:1076:5:1077:19 | S | +| main.rs:1092:15:1092:19 | SelfParam | &T.T | main.rs:1087:10:1087:10 | T | +| main.rs:1092:28:1094:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1092:28:1094:9 | { ... } | &T | main.rs:1087:10:1087:10 | T | +| main.rs:1093:13:1093:19 | &... | | file://:0:0:0:0 | & | +| main.rs:1093:13:1093:19 | &... | &T | main.rs:1087:10:1087:10 | T | +| main.rs:1093:14:1093:17 | self | | file://:0:0:0:0 | & | +| main.rs:1093:14:1093:17 | self | &T | main.rs:1076:5:1077:19 | S | +| main.rs:1093:14:1093:17 | self | &T.T | main.rs:1087:10:1087:10 | T | +| main.rs:1093:14:1093:19 | self.0 | | main.rs:1087:10:1087:10 | T | +| main.rs:1096:15:1096:25 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1096:15:1096:25 | SelfParam | &T | main.rs:1076:5:1077:19 | S | +| main.rs:1096:15:1096:25 | SelfParam | &T.T | main.rs:1087:10:1087:10 | T | +| main.rs:1096:34:1098:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1096:34:1098:9 | { ... } | &T | main.rs:1087:10:1087:10 | T | +| main.rs:1097:13:1097:19 | &... | | file://:0:0:0:0 | & | +| main.rs:1097:13:1097:19 | &... | &T | main.rs:1087:10:1087:10 | T | +| main.rs:1097:14:1097:17 | self | | file://:0:0:0:0 | & | +| main.rs:1097:14:1097:17 | self | &T | main.rs:1076:5:1077:19 | S | +| main.rs:1097:14:1097:17 | self | &T.T | main.rs:1087:10:1087:10 | T | +| main.rs:1097:14:1097:19 | self.0 | | main.rs:1087:10:1087:10 | T | +| main.rs:1102:29:1102:33 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1102:29:1102:33 | SelfParam | &T | main.rs:1101:5:1104:5 | Self [trait ATrait] | +| main.rs:1103:33:1103:36 | SelfParam | | main.rs:1101:5:1104:5 | Self [trait ATrait] | +| main.rs:1109:29:1109:33 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1109:29:1109:33 | SelfParam | &T | file://:0:0:0:0 | & | +| main.rs:1109:29:1109:33 | SelfParam | &T.&T | file://:0:0:0:0 | & | +| main.rs:1109:29:1109:33 | SelfParam | &T.&T | main.rs:1082:5:1085:5 | MyInt | +| main.rs:1109:29:1109:33 | SelfParam | &T.&T.&T | main.rs:1082:5:1085:5 | MyInt | +| main.rs:1109:43:1111:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:1110:13:1110:22 | (...) | | file://:0:0:0:0 | & | +| main.rs:1110:13:1110:22 | (...) | | main.rs:1082:5:1085:5 | MyInt | +| main.rs:1110:13:1110:22 | (...) | &T | main.rs:1082:5:1085:5 | MyInt | +| main.rs:1110:13:1110:24 | ... .a | | {EXTERNAL LOCATION} | i64 | +| main.rs:1110:14:1110:21 | * ... | | file://:0:0:0:0 | & | +| main.rs:1110:14:1110:21 | * ... | | main.rs:1082:5:1085:5 | MyInt | +| main.rs:1110:14:1110:21 | * ... | &T | main.rs:1082:5:1085:5 | MyInt | +| main.rs:1110:15:1110:21 | (...) | | file://:0:0:0:0 | & | +| main.rs:1110:15:1110:21 | (...) | &T | file://:0:0:0:0 | & | +| main.rs:1110:15:1110:21 | (...) | &T | main.rs:1082:5:1085:5 | MyInt | +| main.rs:1110:15:1110:21 | (...) | &T.&T | main.rs:1082:5:1085:5 | MyInt | +| main.rs:1110:16:1110:20 | * ... | | file://:0:0:0:0 | & | +| main.rs:1110:16:1110:20 | * ... | &T | file://:0:0:0:0 | & | +| main.rs:1110:16:1110:20 | * ... | &T | main.rs:1082:5:1085:5 | MyInt | +| main.rs:1110:16:1110:20 | * ... | &T.&T | main.rs:1082:5:1085:5 | MyInt | +| main.rs:1110:17:1110:20 | self | | file://:0:0:0:0 | & | +| main.rs:1110:17:1110:20 | self | &T | file://:0:0:0:0 | & | +| main.rs:1110:17:1110:20 | self | &T.&T | file://:0:0:0:0 | & | +| main.rs:1110:17:1110:20 | self | &T.&T | main.rs:1082:5:1085:5 | MyInt | +| main.rs:1110:17:1110:20 | self | &T.&T.&T | main.rs:1082:5:1085:5 | MyInt | +| main.rs:1114:33:1114:36 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1114:33:1114:36 | SelfParam | &T | file://:0:0:0:0 | & | +| main.rs:1114:33:1114:36 | SelfParam | &T | main.rs:1082:5:1085:5 | MyInt | +| main.rs:1114:33:1114:36 | SelfParam | &T.&T | main.rs:1082:5:1085:5 | MyInt | +| main.rs:1114:46:1116:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:1115:13:1115:19 | (...) | | file://:0:0:0:0 | & | +| main.rs:1115:13:1115:19 | (...) | | main.rs:1082:5:1085:5 | MyInt | +| main.rs:1115:13:1115:19 | (...) | &T | main.rs:1082:5:1085:5 | MyInt | +| main.rs:1115:13:1115:21 | ... .a | | {EXTERNAL LOCATION} | i64 | +| main.rs:1115:14:1115:18 | * ... | | file://:0:0:0:0 | & | +| main.rs:1115:14:1115:18 | * ... | | main.rs:1082:5:1085:5 | MyInt | +| main.rs:1115:14:1115:18 | * ... | &T | main.rs:1082:5:1085:5 | MyInt | +| main.rs:1115:15:1115:18 | self | | file://:0:0:0:0 | & | +| main.rs:1115:15:1115:18 | self | &T | file://:0:0:0:0 | & | +| main.rs:1115:15:1115:18 | self | &T | main.rs:1082:5:1085:5 | MyInt | +| main.rs:1115:15:1115:18 | self | &T.&T | main.rs:1082:5:1085:5 | MyInt | +| main.rs:1120:13:1120:14 | x1 | | main.rs:1076:5:1077:19 | S | +| main.rs:1120:13:1120:14 | x1 | T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1120:18:1120:22 | S(...) | | main.rs:1076:5:1077:19 | S | +| main.rs:1120:18:1120:22 | S(...) | T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1120:20:1120:21 | S2 | | main.rs:1079:5:1080:14 | S2 | +| main.rs:1121:18:1121:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1121:26:1121:27 | x1 | | main.rs:1076:5:1077:19 | S | +| main.rs:1121:26:1121:27 | x1 | T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1121:26:1121:32 | x1.m1() | | main.rs:1079:5:1080:14 | S2 | +| main.rs:1123:13:1123:14 | x2 | | main.rs:1076:5:1077:19 | S | +| main.rs:1123:13:1123:14 | x2 | T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1123:18:1123:22 | S(...) | | main.rs:1076:5:1077:19 | S | +| main.rs:1123:18:1123:22 | S(...) | T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1123:20:1123:21 | S2 | | main.rs:1079:5:1080:14 | S2 | +| main.rs:1125:18:1125:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1125:26:1125:27 | x2 | | main.rs:1076:5:1077:19 | S | +| main.rs:1125:26:1125:27 | x2 | T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1125:26:1125:32 | x2.m2() | | file://:0:0:0:0 | & | +| main.rs:1125:26:1125:32 | x2.m2() | &T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1126:18:1126:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1126:26:1126:27 | x2 | | main.rs:1076:5:1077:19 | S | +| main.rs:1126:26:1126:27 | x2 | T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1126:26:1126:32 | x2.m3() | | file://:0:0:0:0 | & | +| main.rs:1126:26:1126:32 | x2.m3() | &T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1128:13:1128:14 | x3 | | main.rs:1076:5:1077:19 | S | +| main.rs:1128:13:1128:14 | x3 | T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1128:18:1128:22 | S(...) | | main.rs:1076:5:1077:19 | S | +| main.rs:1128:18:1128:22 | S(...) | T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1128:20:1128:21 | S2 | | main.rs:1079:5:1080:14 | S2 | +| main.rs:1130:18:1130:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1130:26:1130:41 | ...::m2(...) | | file://:0:0:0:0 | & | +| main.rs:1130:26:1130:41 | ...::m2(...) | &T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1130:38:1130:40 | &x3 | | file://:0:0:0:0 | & | +| main.rs:1130:38:1130:40 | &x3 | &T | main.rs:1076:5:1077:19 | S | +| main.rs:1130:38:1130:40 | &x3 | &T.T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1130:39:1130:40 | x3 | | main.rs:1076:5:1077:19 | S | +| main.rs:1130:39:1130:40 | x3 | T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1131:18:1131:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1131:26:1131:41 | ...::m3(...) | | file://:0:0:0:0 | & | +| main.rs:1131:26:1131:41 | ...::m3(...) | &T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1131:38:1131:40 | &x3 | | file://:0:0:0:0 | & | +| main.rs:1131:38:1131:40 | &x3 | &T | main.rs:1076:5:1077:19 | S | +| main.rs:1131:38:1131:40 | &x3 | &T.T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1131:39:1131:40 | x3 | | main.rs:1076:5:1077:19 | S | +| main.rs:1131:39:1131:40 | x3 | T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1133:13:1133:14 | x4 | | file://:0:0:0:0 | & | +| main.rs:1133:13:1133:14 | x4 | &T | main.rs:1076:5:1077:19 | S | +| main.rs:1133:13:1133:14 | x4 | &T.T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1133:18:1133:23 | &... | | file://:0:0:0:0 | & | +| main.rs:1133:18:1133:23 | &... | &T | main.rs:1076:5:1077:19 | S | +| main.rs:1133:18:1133:23 | &... | &T.T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1133:19:1133:23 | S(...) | | main.rs:1076:5:1077:19 | S | +| main.rs:1133:19:1133:23 | S(...) | T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1133:21:1133:22 | S2 | | main.rs:1079:5:1080:14 | S2 | +| main.rs:1135:18:1135:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1135:26:1135:27 | x4 | | file://:0:0:0:0 | & | +| main.rs:1135:26:1135:27 | x4 | &T | main.rs:1076:5:1077:19 | S | +| main.rs:1135:26:1135:27 | x4 | &T.T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1135:26:1135:32 | x4.m2() | | file://:0:0:0:0 | & | +| main.rs:1135:26:1135:32 | x4.m2() | &T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1136:18:1136:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1136:26:1136:27 | x4 | | file://:0:0:0:0 | & | +| main.rs:1136:26:1136:27 | x4 | &T | main.rs:1076:5:1077:19 | S | +| main.rs:1136:26:1136:27 | x4 | &T.T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1136:26:1136:32 | x4.m3() | | file://:0:0:0:0 | & | +| main.rs:1136:26:1136:32 | x4.m3() | &T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1138:13:1138:14 | x5 | | file://:0:0:0:0 | & | +| main.rs:1138:13:1138:14 | x5 | &T | main.rs:1076:5:1077:19 | S | +| main.rs:1138:13:1138:14 | x5 | &T.T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1138:18:1138:23 | &... | | file://:0:0:0:0 | & | +| main.rs:1138:18:1138:23 | &... | &T | main.rs:1076:5:1077:19 | S | +| main.rs:1138:18:1138:23 | &... | &T.T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1138:19:1138:23 | S(...) | | main.rs:1076:5:1077:19 | S | +| main.rs:1138:19:1138:23 | S(...) | T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1138:21:1138:22 | S2 | | main.rs:1079:5:1080:14 | S2 | +| main.rs:1140:18:1140:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1140:26:1140:27 | x5 | | file://:0:0:0:0 | & | +| main.rs:1140:26:1140:27 | x5 | &T | main.rs:1076:5:1077:19 | S | +| main.rs:1140:26:1140:27 | x5 | &T.T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1140:26:1140:32 | x5.m1() | | main.rs:1079:5:1080:14 | S2 | +| main.rs:1141:18:1141:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1141:26:1141:27 | x5 | | file://:0:0:0:0 | & | +| main.rs:1141:26:1141:27 | x5 | &T | main.rs:1076:5:1077:19 | S | +| main.rs:1141:26:1141:27 | x5 | &T.T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1141:26:1141:29 | x5.0 | | main.rs:1079:5:1080:14 | S2 | +| main.rs:1143:13:1143:14 | x6 | | file://:0:0:0:0 | & | +| main.rs:1143:13:1143:14 | x6 | &T | file://:0:0:0:0 | & | +| main.rs:1143:13:1143:14 | x6 | &T | main.rs:1076:5:1077:19 | S | +| main.rs:1143:13:1143:14 | x6 | &T.&T | main.rs:1076:5:1077:19 | S | +| main.rs:1143:13:1143:14 | x6 | &T.&T.T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1143:13:1143:14 | x6 | &T.T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1143:18:1143:23 | &... | | file://:0:0:0:0 | & | +| main.rs:1143:18:1143:23 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1143:18:1143:23 | &... | &T | main.rs:1076:5:1077:19 | S | +| main.rs:1143:18:1143:23 | &... | &T.&T | main.rs:1076:5:1077:19 | S | +| main.rs:1143:18:1143:23 | &... | &T.&T.T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1143:18:1143:23 | &... | &T.T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1143:19:1143:23 | S(...) | | file://:0:0:0:0 | & | +| main.rs:1143:19:1143:23 | S(...) | | main.rs:1076:5:1077:19 | S | +| main.rs:1143:19:1143:23 | S(...) | &T | main.rs:1076:5:1077:19 | S | +| main.rs:1143:19:1143:23 | S(...) | &T.T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1143:19:1143:23 | S(...) | T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1143:21:1143:22 | S2 | | main.rs:1079:5:1080:14 | S2 | +| main.rs:1146:18:1146:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1146:26:1146:30 | (...) | | file://:0:0:0:0 | & | +| main.rs:1146:26:1146:30 | (...) | | main.rs:1076:5:1077:19 | S | +| main.rs:1146:26:1146:30 | (...) | &T | main.rs:1076:5:1077:19 | S | +| main.rs:1146:26:1146:30 | (...) | &T.T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1146:26:1146:30 | (...) | T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1146:26:1146:35 | ... .m1() | | main.rs:1079:5:1080:14 | S2 | +| main.rs:1146:27:1146:29 | * ... | | file://:0:0:0:0 | & | +| main.rs:1146:27:1146:29 | * ... | | main.rs:1076:5:1077:19 | S | +| main.rs:1146:27:1146:29 | * ... | &T | main.rs:1076:5:1077:19 | S | +| main.rs:1146:27:1146:29 | * ... | &T.T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1146:27:1146:29 | * ... | T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1146:28:1146:29 | x6 | | file://:0:0:0:0 | & | +| main.rs:1146:28:1146:29 | x6 | &T | file://:0:0:0:0 | & | +| main.rs:1146:28:1146:29 | x6 | &T | main.rs:1076:5:1077:19 | S | +| main.rs:1146:28:1146:29 | x6 | &T.&T | main.rs:1076:5:1077:19 | S | +| main.rs:1146:28:1146:29 | x6 | &T.&T.T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1146:28:1146:29 | x6 | &T.T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1148:13:1148:14 | x7 | | main.rs:1076:5:1077:19 | S | +| main.rs:1148:13:1148:14 | x7 | T | file://:0:0:0:0 | & | +| main.rs:1148:13:1148:14 | x7 | T.&T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1148:18:1148:23 | S(...) | | main.rs:1076:5:1077:19 | S | +| main.rs:1148:18:1148:23 | S(...) | T | file://:0:0:0:0 | & | +| main.rs:1148:18:1148:23 | S(...) | T.&T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1148:20:1148:22 | &S2 | | file://:0:0:0:0 | & | +| main.rs:1148:20:1148:22 | &S2 | &T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1148:21:1148:22 | S2 | | main.rs:1079:5:1080:14 | S2 | +| main.rs:1151:13:1151:13 | t | | file://:0:0:0:0 | & | +| main.rs:1151:13:1151:13 | t | &T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1151:17:1151:18 | x7 | | main.rs:1076:5:1077:19 | S | +| main.rs:1151:17:1151:18 | x7 | T | file://:0:0:0:0 | & | +| main.rs:1151:17:1151:18 | x7 | T.&T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1151:17:1151:23 | x7.m1() | | file://:0:0:0:0 | & | +| main.rs:1151:17:1151:23 | x7.m1() | &T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1152:18:1152:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1152:26:1152:27 | x7 | | main.rs:1076:5:1077:19 | S | +| main.rs:1152:26:1152:27 | x7 | T | file://:0:0:0:0 | & | +| main.rs:1152:26:1152:27 | x7 | T.&T | main.rs:1079:5:1080:14 | S2 | +| main.rs:1154:13:1154:14 | x9 | | {EXTERNAL LOCATION} | String | +| main.rs:1154:26:1154:32 | "Hello" | | {EXTERNAL LOCATION} | str | +| main.rs:1154:26:1154:44 | "Hello".to_string() | | {EXTERNAL LOCATION} | String | +| main.rs:1158:13:1158:13 | u | | {EXTERNAL LOCATION} | Result | +| main.rs:1158:13:1158:13 | u | T | {EXTERNAL LOCATION} | u32 | +| main.rs:1158:17:1158:18 | x9 | | {EXTERNAL LOCATION} | String | +| main.rs:1158:17:1158:33 | x9.parse() | | {EXTERNAL LOCATION} | Result | +| main.rs:1158:17:1158:33 | x9.parse() | T | {EXTERNAL LOCATION} | u32 | +| main.rs:1160:13:1160:20 | my_thing | | file://:0:0:0:0 | & | +| main.rs:1160:13:1160:20 | my_thing | &T | main.rs:1082:5:1085:5 | MyInt | +| main.rs:1160:24:1160:39 | &... | | file://:0:0:0:0 | & | +| main.rs:1160:24:1160:39 | &... | &T | main.rs:1082:5:1085:5 | MyInt | +| main.rs:1160:25:1160:39 | MyInt {...} | | main.rs:1082:5:1085:5 | MyInt | +| main.rs:1160:36:1160:37 | 37 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1160:36:1160:37 | 37 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1162:17:1162:24 | my_thing | | file://:0:0:0:0 | & | +| main.rs:1162:17:1162:24 | my_thing | &T | main.rs:1082:5:1085:5 | MyInt | +| main.rs:1163:18:1163:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1166:13:1166:20 | my_thing | | file://:0:0:0:0 | & | +| main.rs:1166:13:1166:20 | my_thing | &T | main.rs:1082:5:1085:5 | MyInt | +| main.rs:1166:24:1166:39 | &... | | file://:0:0:0:0 | & | +| main.rs:1166:24:1166:39 | &... | &T | main.rs:1082:5:1085:5 | MyInt | +| main.rs:1166:25:1166:39 | MyInt {...} | | main.rs:1082:5:1085:5 | MyInt | +| main.rs:1166:36:1166:37 | 38 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1166:36:1166:37 | 38 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1167:17:1167:24 | my_thing | | file://:0:0:0:0 | & | +| main.rs:1167:17:1167:24 | my_thing | &T | main.rs:1082:5:1085:5 | MyInt | +| main.rs:1168:18:1168:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1175:16:1175:20 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1175:16:1175:20 | SelfParam | &T | main.rs:1173:5:1181:5 | Self [trait MyTrait] | +| main.rs:1178:16:1178:20 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1178:16:1178:20 | SelfParam | &T | main.rs:1173:5:1181:5 | Self [trait MyTrait] | +| main.rs:1178:32:1180:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1178:32:1180:9 | { ... } | &T | main.rs:1173:5:1181:5 | Self [trait MyTrait] | +| main.rs:1179:13:1179:16 | self | | file://:0:0:0:0 | & | +| main.rs:1179:13:1179:16 | self | &T | main.rs:1173:5:1181:5 | Self [trait MyTrait] | +| main.rs:1179:13:1179:22 | self.foo() | | file://:0:0:0:0 | & | +| main.rs:1179:13:1179:22 | self.foo() | &T | main.rs:1173:5:1181:5 | Self [trait MyTrait] | +| main.rs:1187:16:1187:20 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1187:16:1187:20 | SelfParam | &T | main.rs:1183:5:1183:20 | MyStruct | +| main.rs:1187:36:1189:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1187:36:1189:9 | { ... } | &T | main.rs:1183:5:1183:20 | MyStruct | +| main.rs:1188:13:1188:16 | self | | file://:0:0:0:0 | & | +| main.rs:1188:13:1188:16 | self | &T | main.rs:1183:5:1183:20 | MyStruct | +| main.rs:1193:13:1193:13 | x | | main.rs:1183:5:1183:20 | MyStruct | +| main.rs:1193:17:1193:24 | MyStruct | | main.rs:1183:5:1183:20 | MyStruct | +| main.rs:1194:9:1194:9 | x | | main.rs:1183:5:1183:20 | MyStruct | +| main.rs:1194:9:1194:15 | x.bar() | | file://:0:0:0:0 | & | +| main.rs:1194:9:1194:15 | x.bar() | &T | main.rs:1183:5:1183:20 | MyStruct | +| main.rs:1204:16:1204:20 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1204:16:1204:20 | SelfParam | &T | main.rs:1201:5:1201:26 | MyStruct | +| main.rs:1204:16:1204:20 | SelfParam | &T.T | main.rs:1203:10:1203:10 | T | +| main.rs:1204:32:1206:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1204:32:1206:9 | { ... } | &T | main.rs:1201:5:1201:26 | MyStruct | +| main.rs:1204:32:1206:9 | { ... } | &T.T | main.rs:1203:10:1203:10 | T | +| main.rs:1205:13:1205:16 | self | | file://:0:0:0:0 | & | +| main.rs:1205:13:1205:16 | self | &T | main.rs:1201:5:1201:26 | MyStruct | +| main.rs:1205:13:1205:16 | self | &T.T | main.rs:1203:10:1203:10 | T | +| main.rs:1210:13:1210:13 | x | | main.rs:1201:5:1201:26 | MyStruct | +| main.rs:1210:13:1210:13 | x | T | main.rs:1199:5:1199:13 | S | +| main.rs:1210:17:1210:27 | MyStruct(...) | | main.rs:1201:5:1201:26 | MyStruct | +| main.rs:1210:17:1210:27 | MyStruct(...) | T | main.rs:1199:5:1199:13 | S | +| main.rs:1210:26:1210:26 | S | | main.rs:1199:5:1199:13 | S | +| main.rs:1211:9:1211:9 | x | | main.rs:1201:5:1201:26 | MyStruct | +| main.rs:1211:9:1211:9 | x | T | main.rs:1199:5:1199:13 | S | +| main.rs:1211:9:1211:15 | x.foo() | | file://:0:0:0:0 | & | +| main.rs:1211:9:1211:15 | x.foo() | &T | main.rs:1201:5:1201:26 | MyStruct | +| main.rs:1211:9:1211:15 | x.foo() | &T.T | main.rs:1199:5:1199:13 | S | +| main.rs:1222:17:1222:25 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1222:17:1222:25 | SelfParam | &T | main.rs:1216:5:1219:5 | MyFlag | +| main.rs:1223:13:1223:16 | self | | file://:0:0:0:0 | & | +| main.rs:1223:13:1223:16 | self | &T | main.rs:1216:5:1219:5 | MyFlag | +| main.rs:1223:13:1223:21 | self.bool | | {EXTERNAL LOCATION} | bool | +| main.rs:1223:13:1223:34 | ... = ... | | file://:0:0:0:0 | () | +| main.rs:1223:25:1223:34 | ! ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1223:26:1223:29 | self | | file://:0:0:0:0 | & | +| main.rs:1223:26:1223:29 | self | &T | main.rs:1216:5:1219:5 | MyFlag | +| main.rs:1223:26:1223:34 | self.bool | | {EXTERNAL LOCATION} | bool | +| main.rs:1230:15:1230:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1230:15:1230:19 | SelfParam | &T | main.rs:1227:5:1227:13 | S | +| main.rs:1230:31:1232:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1230:31:1232:9 | { ... } | &T | file://:0:0:0:0 | & | +| main.rs:1230:31:1232:9 | { ... } | &T | main.rs:1227:5:1227:13 | S | +| main.rs:1230:31:1232:9 | { ... } | &T.&T | file://:0:0:0:0 | & | +| main.rs:1230:31:1232:9 | { ... } | &T.&T.&T | file://:0:0:0:0 | & | +| main.rs:1230:31:1232:9 | { ... } | &T.&T.&T.&T | main.rs:1227:5:1227:13 | S | +| main.rs:1231:13:1231:19 | &... | | file://:0:0:0:0 | & | +| main.rs:1231:13:1231:19 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1231:13:1231:19 | &... | &T | main.rs:1227:5:1227:13 | S | +| main.rs:1231:13:1231:19 | &... | &T.&T | file://:0:0:0:0 | & | +| main.rs:1231:13:1231:19 | &... | &T.&T.&T | file://:0:0:0:0 | & | +| main.rs:1231:13:1231:19 | &... | &T.&T.&T.&T | main.rs:1227:5:1227:13 | S | +| main.rs:1231:14:1231:19 | &... | | file://:0:0:0:0 | & | +| main.rs:1231:14:1231:19 | &... | | main.rs:1227:5:1227:13 | S | +| main.rs:1231:14:1231:19 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1231:14:1231:19 | &... | &T.&T | file://:0:0:0:0 | & | +| main.rs:1231:14:1231:19 | &... | &T.&T.&T | main.rs:1227:5:1227:13 | S | +| main.rs:1231:15:1231:19 | &self | | file://:0:0:0:0 | & | +| main.rs:1231:15:1231:19 | &self | &T | file://:0:0:0:0 | & | +| main.rs:1231:15:1231:19 | &self | &T.&T | main.rs:1227:5:1227:13 | S | +| main.rs:1231:16:1231:19 | self | | file://:0:0:0:0 | & | +| main.rs:1231:16:1231:19 | self | &T | main.rs:1227:5:1227:13 | S | +| main.rs:1234:15:1234:25 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1234:15:1234:25 | SelfParam | &T | main.rs:1227:5:1227:13 | S | +| main.rs:1234:37:1236:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1234:37:1236:9 | { ... } | &T | file://:0:0:0:0 | & | +| main.rs:1234:37:1236:9 | { ... } | &T | main.rs:1227:5:1227:13 | S | +| main.rs:1234:37:1236:9 | { ... } | &T.&T | file://:0:0:0:0 | & | +| main.rs:1234:37:1236:9 | { ... } | &T.&T.&T | file://:0:0:0:0 | & | +| main.rs:1234:37:1236:9 | { ... } | &T.&T.&T.&T | main.rs:1227:5:1227:13 | S | +| main.rs:1235:13:1235:19 | &... | | file://:0:0:0:0 | & | +| main.rs:1235:13:1235:19 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1235:13:1235:19 | &... | &T | main.rs:1227:5:1227:13 | S | +| main.rs:1235:13:1235:19 | &... | &T.&T | file://:0:0:0:0 | & | +| main.rs:1235:13:1235:19 | &... | &T.&T.&T | file://:0:0:0:0 | & | +| main.rs:1235:13:1235:19 | &... | &T.&T.&T.&T | main.rs:1227:5:1227:13 | S | +| main.rs:1235:14:1235:19 | &... | | file://:0:0:0:0 | & | +| main.rs:1235:14:1235:19 | &... | | main.rs:1227:5:1227:13 | S | +| main.rs:1235:14:1235:19 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1235:14:1235:19 | &... | &T.&T | file://:0:0:0:0 | & | +| main.rs:1235:14:1235:19 | &... | &T.&T.&T | main.rs:1227:5:1227:13 | S | +| main.rs:1235:15:1235:19 | &self | | file://:0:0:0:0 | & | +| main.rs:1235:15:1235:19 | &self | &T | file://:0:0:0:0 | & | +| main.rs:1235:15:1235:19 | &self | &T.&T | main.rs:1227:5:1227:13 | S | +| main.rs:1235:16:1235:19 | self | | file://:0:0:0:0 | & | +| main.rs:1235:16:1235:19 | self | &T | main.rs:1227:5:1227:13 | S | +| main.rs:1238:15:1238:15 | x | | file://:0:0:0:0 | & | +| main.rs:1238:15:1238:15 | x | &T | main.rs:1227:5:1227:13 | S | +| main.rs:1238:34:1240:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1238:34:1240:9 | { ... } | &T | main.rs:1227:5:1227:13 | S | +| main.rs:1239:13:1239:13 | x | | file://:0:0:0:0 | & | +| main.rs:1239:13:1239:13 | x | &T | main.rs:1227:5:1227:13 | S | +| main.rs:1242:15:1242:15 | x | | file://:0:0:0:0 | & | +| main.rs:1242:15:1242:15 | x | &T | main.rs:1227:5:1227:13 | S | +| main.rs:1242:34:1244:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1242:34:1244:9 | { ... } | &T | file://:0:0:0:0 | & | +| main.rs:1242:34:1244:9 | { ... } | &T | main.rs:1227:5:1227:13 | S | +| main.rs:1242:34:1244:9 | { ... } | &T.&T | file://:0:0:0:0 | & | +| main.rs:1242:34:1244:9 | { ... } | &T.&T.&T | file://:0:0:0:0 | & | +| main.rs:1242:34:1244:9 | { ... } | &T.&T.&T.&T | main.rs:1227:5:1227:13 | S | +| main.rs:1243:13:1243:16 | &... | | file://:0:0:0:0 | & | +| main.rs:1243:13:1243:16 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1243:13:1243:16 | &... | &T | main.rs:1227:5:1227:13 | S | +| main.rs:1243:13:1243:16 | &... | &T.&T | file://:0:0:0:0 | & | +| main.rs:1243:13:1243:16 | &... | &T.&T.&T | file://:0:0:0:0 | & | +| main.rs:1243:13:1243:16 | &... | &T.&T.&T.&T | main.rs:1227:5:1227:13 | S | +| main.rs:1243:14:1243:16 | &... | | file://:0:0:0:0 | & | +| main.rs:1243:14:1243:16 | &... | | main.rs:1227:5:1227:13 | S | +| main.rs:1243:14:1243:16 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1243:14:1243:16 | &... | &T.&T | file://:0:0:0:0 | & | +| main.rs:1243:14:1243:16 | &... | &T.&T.&T | main.rs:1227:5:1227:13 | S | +| main.rs:1243:15:1243:16 | &x | | file://:0:0:0:0 | & | +| main.rs:1243:15:1243:16 | &x | &T | file://:0:0:0:0 | & | +| main.rs:1243:15:1243:16 | &x | &T.&T | main.rs:1227:5:1227:13 | S | +| main.rs:1243:16:1243:16 | x | | file://:0:0:0:0 | & | +| main.rs:1243:16:1243:16 | x | &T | main.rs:1227:5:1227:13 | S | +| main.rs:1248:13:1248:13 | x | | main.rs:1227:5:1227:13 | S | +| main.rs:1248:17:1248:20 | S {...} | | main.rs:1227:5:1227:13 | S | +| main.rs:1249:9:1249:9 | x | | main.rs:1227:5:1227:13 | S | +| main.rs:1249:9:1249:14 | x.f1() | | file://:0:0:0:0 | & | +| main.rs:1249:9:1249:14 | x.f1() | &T | main.rs:1227:5:1227:13 | S | +| main.rs:1250:9:1250:9 | x | | main.rs:1227:5:1227:13 | S | +| main.rs:1250:9:1250:14 | x.f2() | | file://:0:0:0:0 | & | +| main.rs:1250:9:1250:14 | x.f2() | &T | main.rs:1227:5:1227:13 | S | +| main.rs:1251:9:1251:17 | ...::f3(...) | | file://:0:0:0:0 | & | +| main.rs:1251:9:1251:17 | ...::f3(...) | &T | main.rs:1227:5:1227:13 | S | +| main.rs:1251:15:1251:16 | &x | | file://:0:0:0:0 | & | +| main.rs:1251:15:1251:16 | &x | &T | main.rs:1227:5:1227:13 | S | +| main.rs:1251:16:1251:16 | x | | main.rs:1227:5:1227:13 | S | +| main.rs:1253:13:1253:13 | n | | {EXTERNAL LOCATION} | bool | +| main.rs:1253:13:1253:13 | n | | file://:0:0:0:0 | & | +| main.rs:1253:17:1253:24 | * ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1253:17:1253:24 | * ... | | file://:0:0:0:0 | & | +| main.rs:1253:18:1253:24 | * ... | | file://:0:0:0:0 | & | +| main.rs:1253:18:1253:24 | * ... | &T | {EXTERNAL LOCATION} | bool | +| main.rs:1253:18:1253:24 | * ... | &T | file://:0:0:0:0 | & | +| main.rs:1253:19:1253:24 | &... | | file://:0:0:0:0 | & | +| main.rs:1253:19:1253:24 | &... | &T | file://:0:0:0:0 | & | +| main.rs:1253:19:1253:24 | &... | &T.&T | {EXTERNAL LOCATION} | bool | +| main.rs:1253:19:1253:24 | &... | &T.&T | file://:0:0:0:0 | & | +| main.rs:1253:20:1253:24 | &true | | file://:0:0:0:0 | & | +| main.rs:1253:20:1253:24 | &true | &T | {EXTERNAL LOCATION} | bool | +| main.rs:1253:20:1253:24 | &true | &T | file://:0:0:0:0 | & | +| main.rs:1253:21:1253:24 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:1253:21:1253:24 | true | | file://:0:0:0:0 | & | +| main.rs:1257:13:1257:20 | mut flag | | main.rs:1216:5:1219:5 | MyFlag | +| main.rs:1257:24:1257:41 | ...::default(...) | | main.rs:1216:5:1219:5 | MyFlag | +| main.rs:1258:22:1258:30 | &mut flag | | file://:0:0:0:0 | & | +| main.rs:1258:22:1258:30 | &mut flag | &T | main.rs:1216:5:1219:5 | MyFlag | +| main.rs:1258:27:1258:30 | flag | | main.rs:1216:5:1219:5 | MyFlag | +| main.rs:1259:18:1259:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1259:26:1259:29 | flag | | main.rs:1216:5:1219:5 | MyFlag | +| main.rs:1273:43:1276:5 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:1273:43:1276:5 | { ... } | E | main.rs:1266:5:1267:14 | S1 | +| main.rs:1273:43:1276:5 | { ... } | T | main.rs:1266:5:1267:14 | S1 | +| main.rs:1274:13:1274:13 | x | | main.rs:1266:5:1267:14 | S1 | +| main.rs:1274:17:1274:30 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1274:17:1274:30 | ...::Ok(...) | T | main.rs:1266:5:1267:14 | S1 | +| main.rs:1274:17:1274:31 | TryExpr | | main.rs:1266:5:1267:14 | S1 | +| main.rs:1274:28:1274:29 | S1 | | main.rs:1266:5:1267:14 | S1 | +| main.rs:1275:9:1275:22 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1275:9:1275:22 | ...::Ok(...) | E | main.rs:1266:5:1267:14 | S1 | +| main.rs:1275:9:1275:22 | ...::Ok(...) | T | main.rs:1266:5:1267:14 | S1 | +| main.rs:1275:20:1275:21 | S1 | | main.rs:1266:5:1267:14 | S1 | +| main.rs:1279:46:1283:5 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:1279:46:1283:5 | { ... } | E | main.rs:1269:5:1270:14 | S2 | +| main.rs:1279:46:1283:5 | { ... } | T | main.rs:1266:5:1267:14 | S1 | +| main.rs:1280:13:1280:13 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:1280:13:1280:13 | x | T | main.rs:1266:5:1267:14 | S1 | +| main.rs:1280:17:1280:30 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1280:17:1280:30 | ...::Ok(...) | T | main.rs:1266:5:1267:14 | S1 | +| main.rs:1280:28:1280:29 | S1 | | main.rs:1266:5:1267:14 | S1 | +| main.rs:1281:13:1281:13 | y | | main.rs:1266:5:1267:14 | S1 | +| main.rs:1281:17:1281:17 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:1281:17:1281:17 | x | T | main.rs:1266:5:1267:14 | S1 | +| main.rs:1281:17:1281:18 | TryExpr | | main.rs:1266:5:1267:14 | S1 | +| main.rs:1282:9:1282:22 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1282:9:1282:22 | ...::Ok(...) | E | main.rs:1269:5:1270:14 | S2 | +| main.rs:1282:9:1282:22 | ...::Ok(...) | T | main.rs:1266:5:1267:14 | S1 | +| main.rs:1282:20:1282:21 | S1 | | main.rs:1266:5:1267:14 | S1 | +| main.rs:1286:40:1291:5 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:1286:40:1291:5 | { ... } | E | main.rs:1269:5:1270:14 | S2 | +| main.rs:1286:40:1291:5 | { ... } | T | main.rs:1266:5:1267:14 | S1 | +| main.rs:1287:13:1287:13 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:1287:13:1287:13 | x | T | {EXTERNAL LOCATION} | Result | +| main.rs:1287:13:1287:13 | x | T.T | main.rs:1266:5:1267:14 | S1 | +| main.rs:1287:17:1287:42 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1287:17:1287:42 | ...::Ok(...) | T | {EXTERNAL LOCATION} | Result | +| main.rs:1287:17:1287:42 | ...::Ok(...) | T.T | main.rs:1266:5:1267:14 | S1 | +| main.rs:1287:28:1287:41 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1287:28:1287:41 | ...::Ok(...) | T | main.rs:1266:5:1267:14 | S1 | +| main.rs:1287:39:1287:40 | S1 | | main.rs:1266:5:1267:14 | S1 | +| main.rs:1289:17:1289:17 | x | | {EXTERNAL LOCATION} | Result | +| main.rs:1289:17:1289:17 | x | T | {EXTERNAL LOCATION} | Result | +| main.rs:1289:17:1289:17 | x | T.T | main.rs:1266:5:1267:14 | S1 | +| main.rs:1289:17:1289:18 | TryExpr | | {EXTERNAL LOCATION} | Result | +| main.rs:1289:17:1289:18 | TryExpr | T | main.rs:1266:5:1267:14 | S1 | +| main.rs:1289:17:1289:29 | ... .map(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1290:9:1290:22 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1290:9:1290:22 | ...::Ok(...) | E | main.rs:1269:5:1270:14 | S2 | +| main.rs:1290:9:1290:22 | ...::Ok(...) | T | main.rs:1266:5:1267:14 | S1 | +| main.rs:1290:20:1290:21 | S1 | | main.rs:1266:5:1267:14 | S1 | +| main.rs:1294:30:1294:34 | input | | {EXTERNAL LOCATION} | Result | +| main.rs:1294:30:1294:34 | input | E | main.rs:1266:5:1267:14 | S1 | +| main.rs:1294:30:1294:34 | input | T | main.rs:1294:20:1294:27 | T | +| main.rs:1294:69:1301:5 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:1294:69:1301:5 | { ... } | E | main.rs:1266:5:1267:14 | S1 | +| main.rs:1294:69:1301:5 | { ... } | T | main.rs:1294:20:1294:27 | T | +| main.rs:1295:13:1295:17 | value | | main.rs:1294:20:1294:27 | T | +| main.rs:1295:21:1295:25 | input | | {EXTERNAL LOCATION} | Result | +| main.rs:1295:21:1295:25 | input | E | main.rs:1266:5:1267:14 | S1 | +| main.rs:1295:21:1295:25 | input | T | main.rs:1294:20:1294:27 | T | +| main.rs:1295:21:1295:26 | TryExpr | | main.rs:1294:20:1294:27 | T | +| main.rs:1296:22:1296:38 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1296:22:1296:38 | ...::Ok(...) | T | main.rs:1294:20:1294:27 | T | +| main.rs:1296:22:1299:10 | ... .and_then(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1296:33:1296:37 | value | | main.rs:1294:20:1294:27 | T | +| main.rs:1296:53:1299:9 | { ... } | | {EXTERNAL LOCATION} | Result | +| main.rs:1296:53:1299:9 | { ... } | E | main.rs:1266:5:1267:14 | S1 | +| main.rs:1297:22:1297:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1298:13:1298:34 | ...::Ok::<...>(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1298:13:1298:34 | ...::Ok::<...>(...) | E | main.rs:1266:5:1267:14 | S1 | +| main.rs:1300:9:1300:23 | ...::Err(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1300:9:1300:23 | ...::Err(...) | E | main.rs:1266:5:1267:14 | S1 | +| main.rs:1300:9:1300:23 | ...::Err(...) | T | main.rs:1294:20:1294:27 | T | +| main.rs:1300:21:1300:22 | S1 | | main.rs:1266:5:1267:14 | S1 | +| main.rs:1304:37:1304:52 | try_same_error(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1304:37:1304:52 | try_same_error(...) | E | main.rs:1266:5:1267:14 | S1 | +| main.rs:1304:37:1304:52 | try_same_error(...) | T | main.rs:1266:5:1267:14 | S1 | +| main.rs:1305:22:1305:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1308:37:1308:55 | try_convert_error(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1308:37:1308:55 | try_convert_error(...) | E | main.rs:1269:5:1270:14 | S2 | +| main.rs:1308:37:1308:55 | try_convert_error(...) | T | main.rs:1266:5:1267:14 | S1 | +| main.rs:1309:22:1309:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1312:37:1312:49 | try_chained(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1312:37:1312:49 | try_chained(...) | E | main.rs:1269:5:1270:14 | S2 | +| main.rs:1312:37:1312:49 | try_chained(...) | T | main.rs:1266:5:1267:14 | S1 | +| main.rs:1313:22:1313:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1316:37:1316:63 | try_complex(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1316:37:1316:63 | try_complex(...) | E | main.rs:1266:5:1267:14 | S1 | +| main.rs:1316:37:1316:63 | try_complex(...) | T | main.rs:1266:5:1267:14 | S1 | +| main.rs:1316:49:1316:62 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result | +| main.rs:1316:49:1316:62 | ...::Ok(...) | E | main.rs:1266:5:1267:14 | S1 | +| main.rs:1316:49:1316:62 | ...::Ok(...) | T | main.rs:1266:5:1267:14 | S1 | +| main.rs:1316:60:1316:61 | S1 | | main.rs:1266:5:1267:14 | S1 | +| main.rs:1317:22:1317:27 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1324:13:1324:13 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:1324:22:1324:22 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1325:13:1325:13 | y | | {EXTERNAL LOCATION} | i32 | +| main.rs:1325:17:1325:17 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1326:13:1326:13 | z | | {EXTERNAL LOCATION} | i32 | +| main.rs:1326:17:1326:17 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:1326:17:1326:21 | ... + ... | | {EXTERNAL LOCATION} | i32 | +| main.rs:1326:21:1326:21 | y | | {EXTERNAL LOCATION} | i32 | +| main.rs:1327:13:1327:13 | z | | {EXTERNAL LOCATION} | i32 | +| main.rs:1327:17:1327:17 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:1327:17:1327:23 | x.abs() | | {EXTERNAL LOCATION} | i32 | +| main.rs:1328:13:1328:13 | c | | {EXTERNAL LOCATION} | char | +| main.rs:1328:17:1328:19 | 'c' | | {EXTERNAL LOCATION} | char | +| main.rs:1329:13:1329:17 | hello | | {EXTERNAL LOCATION} | str | +| main.rs:1329:21:1329:27 | "Hello" | | {EXTERNAL LOCATION} | str | +| main.rs:1330:13:1330:13 | f | | {EXTERNAL LOCATION} | f64 | +| main.rs:1330:17:1330:24 | 123.0f64 | | {EXTERNAL LOCATION} | f64 | +| main.rs:1331:13:1331:13 | t | | {EXTERNAL LOCATION} | bool | +| main.rs:1331:17:1331:20 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:1332:13:1332:13 | f | | {EXTERNAL LOCATION} | bool | +| main.rs:1332:17:1332:21 | false | | {EXTERNAL LOCATION} | bool | +| main.rs:1339:13:1339:13 | x | | {EXTERNAL LOCATION} | bool | +| main.rs:1339:17:1339:20 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:1339:17:1339:29 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1339:25:1339:29 | false | | {EXTERNAL LOCATION} | bool | +| main.rs:1340:13:1340:13 | y | | {EXTERNAL LOCATION} | bool | +| main.rs:1340:17:1340:20 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:1340:17:1340:29 | ... \|\| ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1340:25:1340:29 | false | | {EXTERNAL LOCATION} | bool | +| main.rs:1342:13:1342:17 | mut a | | {EXTERNAL LOCATION} | i32 | +| main.rs:1343:13:1343:16 | cond | | {EXTERNAL LOCATION} | bool | +| main.rs:1343:20:1343:21 | 34 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1343:20:1343:27 | ... == ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1343:26:1343:27 | 33 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1344:12:1344:15 | cond | | {EXTERNAL LOCATION} | bool | +| main.rs:1345:17:1345:17 | z | | file://:0:0:0:0 | () | +| main.rs:1345:21:1345:27 | (...) | | file://:0:0:0:0 | () | +| main.rs:1345:22:1345:22 | a | | {EXTERNAL LOCATION} | i32 | +| main.rs:1345:22:1345:26 | ... = ... | | file://:0:0:0:0 | () | +| main.rs:1345:26:1345:26 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1347:13:1347:13 | a | | {EXTERNAL LOCATION} | i32 | +| main.rs:1347:13:1347:17 | ... = ... | | file://:0:0:0:0 | () | +| main.rs:1347:17:1347:17 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1349:9:1349:9 | a | | {EXTERNAL LOCATION} | i32 | +| main.rs:1363:30:1365:9 | { ... } | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1364:13:1364:31 | Vec2 {...} | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1364:23:1364:23 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1364:23:1364:23 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1364:29:1364:29 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1364:29:1364:29 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1371:16:1371:19 | SelfParam | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1371:22:1371:24 | rhs | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1371:41:1376:9 | { ... } | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1372:13:1375:13 | Vec2 {...} | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1373:20:1373:23 | self | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1373:20:1373:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1373:20:1373:33 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1373:29:1373:31 | rhs | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1373:29:1373:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1374:20:1374:23 | self | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1374:20:1374:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1374:20:1374:33 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1374:29:1374:31 | rhs | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1374:29:1374:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1381:23:1381:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1381:23:1381:31 | SelfParam | &T | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1381:34:1381:36 | rhs | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1382:13:1382:16 | self | | file://:0:0:0:0 | & | +| main.rs:1382:13:1382:16 | self | &T | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1382:13:1382:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1382:13:1382:27 | ... += ... | | file://:0:0:0:0 | () | +| main.rs:1382:23:1382:25 | rhs | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1382:23:1382:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | | main.rs:1383:13:1383:16 | self | | file://:0:0:0:0 | & | -| main.rs:1383:13:1383:16 | self | &T | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1383:13:1383:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1383:13:1383:27 | ... *= ... | | file://:0:0:0:0 | () | -| main.rs:1383:23:1383:25 | rhs | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1383:23:1383:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1384:13:1384:16 | self | | file://:0:0:0:0 | & | -| main.rs:1384:13:1384:16 | self | &T | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1384:13:1384:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1384:13:1384:27 | ... *= ... | | file://:0:0:0:0 | () | -| main.rs:1384:23:1384:25 | rhs | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1384:23:1384:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1390:16:1390:19 | SelfParam | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1390:22:1390:24 | rhs | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1390:41:1395:9 | { ... } | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1391:13:1394:13 | Vec2 {...} | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1392:20:1392:23 | self | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1392:20:1392:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1392:20:1392:33 | ... / ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1392:29:1392:31 | rhs | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1392:29:1392:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1393:20:1393:23 | self | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1393:20:1393:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1393:20:1393:33 | ... / ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1393:29:1393:31 | rhs | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1393:29:1393:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1383:13:1383:16 | self | &T | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1383:13:1383:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1383:13:1383:27 | ... += ... | | file://:0:0:0:0 | () | +| main.rs:1383:23:1383:25 | rhs | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1383:23:1383:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1389:16:1389:19 | SelfParam | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1389:22:1389:24 | rhs | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1389:41:1394:9 | { ... } | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1390:13:1393:13 | Vec2 {...} | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1391:20:1391:23 | self | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1391:20:1391:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1391:20:1391:33 | ... - ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1391:29:1391:31 | rhs | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1391:29:1391:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1392:20:1392:23 | self | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1392:20:1392:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1392:20:1392:33 | ... - ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1392:29:1392:31 | rhs | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1392:29:1392:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | | main.rs:1399:23:1399:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1399:23:1399:31 | SelfParam | &T | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1399:34:1399:36 | rhs | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1399:23:1399:31 | SelfParam | &T | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1399:34:1399:36 | rhs | | main.rs:1356:5:1361:5 | Vec2 | | main.rs:1400:13:1400:16 | self | | file://:0:0:0:0 | & | -| main.rs:1400:13:1400:16 | self | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1400:13:1400:16 | self | &T | main.rs:1356:5:1361:5 | Vec2 | | main.rs:1400:13:1400:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1400:13:1400:27 | ... /= ... | | file://:0:0:0:0 | () | -| main.rs:1400:23:1400:25 | rhs | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1400:13:1400:27 | ... -= ... | | file://:0:0:0:0 | () | +| main.rs:1400:23:1400:25 | rhs | | main.rs:1356:5:1361:5 | Vec2 | | main.rs:1400:23:1400:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | | main.rs:1401:13:1401:16 | self | | file://:0:0:0:0 | & | -| main.rs:1401:13:1401:16 | self | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1401:13:1401:16 | self | &T | main.rs:1356:5:1361:5 | Vec2 | | main.rs:1401:13:1401:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1401:13:1401:27 | ... /= ... | | file://:0:0:0:0 | () | -| main.rs:1401:23:1401:25 | rhs | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1401:13:1401:27 | ... -= ... | | file://:0:0:0:0 | () | +| main.rs:1401:23:1401:25 | rhs | | main.rs:1356:5:1361:5 | Vec2 | | main.rs:1401:23:1401:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1407:16:1407:19 | SelfParam | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1407:22:1407:24 | rhs | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1407:41:1412:9 | { ... } | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1408:13:1411:13 | Vec2 {...} | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1409:20:1409:23 | self | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1407:16:1407:19 | SelfParam | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1407:22:1407:24 | rhs | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1407:41:1412:9 | { ... } | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1408:13:1411:13 | Vec2 {...} | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1409:20:1409:23 | self | | main.rs:1356:5:1361:5 | Vec2 | | main.rs:1409:20:1409:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1409:20:1409:33 | ... % ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1409:29:1409:31 | rhs | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1409:20:1409:33 | ... * ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1409:29:1409:31 | rhs | | main.rs:1356:5:1361:5 | Vec2 | | main.rs:1409:29:1409:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1410:20:1410:23 | self | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1410:20:1410:23 | self | | main.rs:1356:5:1361:5 | Vec2 | | main.rs:1410:20:1410:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1410:20:1410:33 | ... % ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1410:29:1410:31 | rhs | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1410:20:1410:33 | ... * ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1410:29:1410:31 | rhs | | main.rs:1356:5:1361:5 | Vec2 | | main.rs:1410:29:1410:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | | main.rs:1416:23:1416:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1416:23:1416:31 | SelfParam | &T | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1416:34:1416:36 | rhs | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1416:23:1416:31 | SelfParam | &T | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1416:34:1416:36 | rhs | | main.rs:1356:5:1361:5 | Vec2 | | main.rs:1417:13:1417:16 | self | | file://:0:0:0:0 | & | -| main.rs:1417:13:1417:16 | self | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1417:13:1417:16 | self | &T | main.rs:1356:5:1361:5 | Vec2 | | main.rs:1417:13:1417:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1417:13:1417:27 | ... %= ... | | file://:0:0:0:0 | () | -| main.rs:1417:23:1417:25 | rhs | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1417:13:1417:27 | ... *= ... | | file://:0:0:0:0 | () | +| main.rs:1417:23:1417:25 | rhs | | main.rs:1356:5:1361:5 | Vec2 | | main.rs:1417:23:1417:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | | main.rs:1418:13:1418:16 | self | | file://:0:0:0:0 | & | -| main.rs:1418:13:1418:16 | self | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1418:13:1418:16 | self | &T | main.rs:1356:5:1361:5 | Vec2 | | main.rs:1418:13:1418:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1418:13:1418:27 | ... %= ... | | file://:0:0:0:0 | () | -| main.rs:1418:23:1418:25 | rhs | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1418:13:1418:27 | ... *= ... | | file://:0:0:0:0 | () | +| main.rs:1418:23:1418:25 | rhs | | main.rs:1356:5:1361:5 | Vec2 | | main.rs:1418:23:1418:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1424:19:1424:22 | SelfParam | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1424:25:1424:27 | rhs | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1424:44:1429:9 | { ... } | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1425:13:1428:13 | Vec2 {...} | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1426:20:1426:23 | self | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1424:16:1424:19 | SelfParam | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1424:22:1424:24 | rhs | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1424:41:1429:9 | { ... } | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1425:13:1428:13 | Vec2 {...} | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1426:20:1426:23 | self | | main.rs:1356:5:1361:5 | Vec2 | | main.rs:1426:20:1426:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1426:20:1426:33 | ... & ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1426:29:1426:31 | rhs | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1426:20:1426:33 | ... / ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1426:29:1426:31 | rhs | | main.rs:1356:5:1361:5 | Vec2 | | main.rs:1426:29:1426:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1427:20:1427:23 | self | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1427:20:1427:23 | self | | main.rs:1356:5:1361:5 | Vec2 | | main.rs:1427:20:1427:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1427:20:1427:33 | ... & ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1427:29:1427:31 | rhs | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1427:20:1427:33 | ... / ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1427:29:1427:31 | rhs | | main.rs:1356:5:1361:5 | Vec2 | | main.rs:1427:29:1427:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1433:26:1433:34 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1433:26:1433:34 | SelfParam | &T | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1433:37:1433:39 | rhs | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1433:23:1433:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1433:23:1433:31 | SelfParam | &T | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1433:34:1433:36 | rhs | | main.rs:1356:5:1361:5 | Vec2 | | main.rs:1434:13:1434:16 | self | | file://:0:0:0:0 | & | -| main.rs:1434:13:1434:16 | self | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1434:13:1434:16 | self | &T | main.rs:1356:5:1361:5 | Vec2 | | main.rs:1434:13:1434:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1434:13:1434:27 | ... &= ... | | file://:0:0:0:0 | () | -| main.rs:1434:23:1434:25 | rhs | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1434:13:1434:27 | ... /= ... | | file://:0:0:0:0 | () | +| main.rs:1434:23:1434:25 | rhs | | main.rs:1356:5:1361:5 | Vec2 | | main.rs:1434:23:1434:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | | main.rs:1435:13:1435:16 | self | | file://:0:0:0:0 | & | -| main.rs:1435:13:1435:16 | self | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1435:13:1435:16 | self | &T | main.rs:1356:5:1361:5 | Vec2 | | main.rs:1435:13:1435:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1435:13:1435:27 | ... &= ... | | file://:0:0:0:0 | () | -| main.rs:1435:23:1435:25 | rhs | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1435:13:1435:27 | ... /= ... | | file://:0:0:0:0 | () | +| main.rs:1435:23:1435:25 | rhs | | main.rs:1356:5:1361:5 | Vec2 | | main.rs:1435:23:1435:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1441:18:1441:21 | SelfParam | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1441:24:1441:26 | rhs | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1441:43:1446:9 | { ... } | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1442:13:1445:13 | Vec2 {...} | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1443:20:1443:23 | self | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1441:16:1441:19 | SelfParam | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1441:22:1441:24 | rhs | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1441:41:1446:9 | { ... } | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1442:13:1445:13 | Vec2 {...} | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1443:20:1443:23 | self | | main.rs:1356:5:1361:5 | Vec2 | | main.rs:1443:20:1443:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1443:20:1443:33 | ... \| ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1443:29:1443:31 | rhs | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1443:20:1443:33 | ... % ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1443:29:1443:31 | rhs | | main.rs:1356:5:1361:5 | Vec2 | | main.rs:1443:29:1443:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1444:20:1444:23 | self | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1444:20:1444:23 | self | | main.rs:1356:5:1361:5 | Vec2 | | main.rs:1444:20:1444:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1444:20:1444:33 | ... \| ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1444:29:1444:31 | rhs | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1444:20:1444:33 | ... % ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1444:29:1444:31 | rhs | | main.rs:1356:5:1361:5 | Vec2 | | main.rs:1444:29:1444:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1450:25:1450:33 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1450:25:1450:33 | SelfParam | &T | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1450:36:1450:38 | rhs | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1450:23:1450:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1450:23:1450:31 | SelfParam | &T | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1450:34:1450:36 | rhs | | main.rs:1356:5:1361:5 | Vec2 | | main.rs:1451:13:1451:16 | self | | file://:0:0:0:0 | & | -| main.rs:1451:13:1451:16 | self | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1451:13:1451:16 | self | &T | main.rs:1356:5:1361:5 | Vec2 | | main.rs:1451:13:1451:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1451:13:1451:27 | ... \|= ... | | file://:0:0:0:0 | () | -| main.rs:1451:23:1451:25 | rhs | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1451:13:1451:27 | ... %= ... | | file://:0:0:0:0 | () | +| main.rs:1451:23:1451:25 | rhs | | main.rs:1356:5:1361:5 | Vec2 | | main.rs:1451:23:1451:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | | main.rs:1452:13:1452:16 | self | | file://:0:0:0:0 | & | -| main.rs:1452:13:1452:16 | self | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1452:13:1452:16 | self | &T | main.rs:1356:5:1361:5 | Vec2 | | main.rs:1452:13:1452:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1452:13:1452:27 | ... \|= ... | | file://:0:0:0:0 | () | -| main.rs:1452:23:1452:25 | rhs | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1452:13:1452:27 | ... %= ... | | file://:0:0:0:0 | () | +| main.rs:1452:23:1452:25 | rhs | | main.rs:1356:5:1361:5 | Vec2 | | main.rs:1452:23:1452:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1458:19:1458:22 | SelfParam | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1458:25:1458:27 | rhs | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1458:44:1463:9 | { ... } | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1459:13:1462:13 | Vec2 {...} | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1460:20:1460:23 | self | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1458:19:1458:22 | SelfParam | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1458:25:1458:27 | rhs | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1458:44:1463:9 | { ... } | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1459:13:1462:13 | Vec2 {...} | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1460:20:1460:23 | self | | main.rs:1356:5:1361:5 | Vec2 | | main.rs:1460:20:1460:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1460:20:1460:33 | ... ^ ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1460:29:1460:31 | rhs | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1460:20:1460:33 | ... & ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1460:29:1460:31 | rhs | | main.rs:1356:5:1361:5 | Vec2 | | main.rs:1460:29:1460:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1461:20:1461:23 | self | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1461:20:1461:23 | self | | main.rs:1356:5:1361:5 | Vec2 | | main.rs:1461:20:1461:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1461:20:1461:33 | ... ^ ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1461:29:1461:31 | rhs | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1461:20:1461:33 | ... & ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1461:29:1461:31 | rhs | | main.rs:1356:5:1361:5 | Vec2 | | main.rs:1461:29:1461:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | | main.rs:1467:26:1467:34 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1467:26:1467:34 | SelfParam | &T | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1467:37:1467:39 | rhs | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1467:26:1467:34 | SelfParam | &T | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1467:37:1467:39 | rhs | | main.rs:1356:5:1361:5 | Vec2 | | main.rs:1468:13:1468:16 | self | | file://:0:0:0:0 | & | -| main.rs:1468:13:1468:16 | self | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1468:13:1468:16 | self | &T | main.rs:1356:5:1361:5 | Vec2 | | main.rs:1468:13:1468:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1468:13:1468:27 | ... ^= ... | | file://:0:0:0:0 | () | -| main.rs:1468:23:1468:25 | rhs | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1468:13:1468:27 | ... &= ... | | file://:0:0:0:0 | () | +| main.rs:1468:23:1468:25 | rhs | | main.rs:1356:5:1361:5 | Vec2 | | main.rs:1468:23:1468:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | | main.rs:1469:13:1469:16 | self | | file://:0:0:0:0 | & | -| main.rs:1469:13:1469:16 | self | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1469:13:1469:16 | self | &T | main.rs:1356:5:1361:5 | Vec2 | | main.rs:1469:13:1469:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1469:13:1469:27 | ... ^= ... | | file://:0:0:0:0 | () | -| main.rs:1469:23:1469:25 | rhs | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1469:13:1469:27 | ... &= ... | | file://:0:0:0:0 | () | +| main.rs:1469:23:1469:25 | rhs | | main.rs:1356:5:1361:5 | Vec2 | | main.rs:1469:23:1469:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1475:16:1475:19 | SelfParam | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1475:22:1475:24 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1475:40:1480:9 | { ... } | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1476:13:1479:13 | Vec2 {...} | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1477:20:1477:23 | self | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1475:18:1475:21 | SelfParam | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1475:24:1475:26 | rhs | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1475:43:1480:9 | { ... } | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1476:13:1479:13 | Vec2 {...} | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1477:20:1477:23 | self | | main.rs:1356:5:1361:5 | Vec2 | | main.rs:1477:20:1477:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1477:20:1477:32 | ... << ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1477:30:1477:32 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1478:20:1478:23 | self | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1477:20:1477:33 | ... \| ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1477:29:1477:31 | rhs | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1477:29:1477:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1478:20:1478:23 | self | | main.rs:1356:5:1361:5 | Vec2 | | main.rs:1478:20:1478:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1478:20:1478:32 | ... << ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1478:30:1478:32 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1484:23:1484:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1484:23:1484:31 | SelfParam | &T | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1484:34:1484:36 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1478:20:1478:33 | ... \| ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1478:29:1478:31 | rhs | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1478:29:1478:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1484:25:1484:33 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1484:25:1484:33 | SelfParam | &T | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1484:36:1484:38 | rhs | | main.rs:1356:5:1361:5 | Vec2 | | main.rs:1485:13:1485:16 | self | | file://:0:0:0:0 | & | -| main.rs:1485:13:1485:16 | self | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1485:13:1485:16 | self | &T | main.rs:1356:5:1361:5 | Vec2 | | main.rs:1485:13:1485:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1485:13:1485:26 | ... <<= ... | | file://:0:0:0:0 | () | -| main.rs:1485:24:1485:26 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1485:13:1485:27 | ... \|= ... | | file://:0:0:0:0 | () | +| main.rs:1485:23:1485:25 | rhs | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1485:23:1485:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | | main.rs:1486:13:1486:16 | self | | file://:0:0:0:0 | & | -| main.rs:1486:13:1486:16 | self | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1486:13:1486:16 | self | &T | main.rs:1356:5:1361:5 | Vec2 | | main.rs:1486:13:1486:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1486:13:1486:26 | ... <<= ... | | file://:0:0:0:0 | () | -| main.rs:1486:24:1486:26 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1492:16:1492:19 | SelfParam | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1492:22:1492:24 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1492:40:1497:9 | { ... } | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1493:13:1496:13 | Vec2 {...} | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1494:20:1494:23 | self | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1486:13:1486:27 | ... \|= ... | | file://:0:0:0:0 | () | +| main.rs:1486:23:1486:25 | rhs | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1486:23:1486:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1492:19:1492:22 | SelfParam | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1492:25:1492:27 | rhs | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1492:44:1497:9 | { ... } | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1493:13:1496:13 | Vec2 {...} | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1494:20:1494:23 | self | | main.rs:1356:5:1361:5 | Vec2 | | main.rs:1494:20:1494:25 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1494:20:1494:32 | ... >> ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1494:30:1494:32 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1495:20:1495:23 | self | | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1494:20:1494:33 | ... ^ ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1494:29:1494:31 | rhs | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1494:29:1494:33 | rhs.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1495:20:1495:23 | self | | main.rs:1356:5:1361:5 | Vec2 | | main.rs:1495:20:1495:25 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1495:20:1495:32 | ... >> ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1495:30:1495:32 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1501:23:1501:31 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1501:23:1501:31 | SelfParam | &T | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1501:34:1501:36 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1495:20:1495:33 | ... ^ ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1495:29:1495:31 | rhs | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1495:29:1495:33 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1501:26:1501:34 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1501:26:1501:34 | SelfParam | &T | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1501:37:1501:39 | rhs | | main.rs:1356:5:1361:5 | Vec2 | | main.rs:1502:13:1502:16 | self | | file://:0:0:0:0 | & | -| main.rs:1502:13:1502:16 | self | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1502:13:1502:16 | self | &T | main.rs:1356:5:1361:5 | Vec2 | | main.rs:1502:13:1502:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1502:13:1502:26 | ... >>= ... | | file://:0:0:0:0 | () | -| main.rs:1502:24:1502:26 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1502:13:1502:27 | ... ^= ... | | file://:0:0:0:0 | () | +| main.rs:1502:23:1502:25 | rhs | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1502:23:1502:27 | rhs.x | | {EXTERNAL LOCATION} | i64 | | main.rs:1503:13:1503:16 | self | | file://:0:0:0:0 | & | -| main.rs:1503:13:1503:16 | self | &T | main.rs:1322:5:1327:5 | Vec2 | +| main.rs:1503:13:1503:16 | self | &T | main.rs:1356:5:1361:5 | Vec2 | | main.rs:1503:13:1503:18 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1503:13:1503:26 | ... >>= ... | | file://:0:0:0:0 | () | -| main.rs:1503:24:1503:26 | rhs | | {EXTERNAL LOCATION} | u32 | -| main.rs:1509:16:1509:19 | SelfParam | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1509:30:1514:9 | { ... } | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1510:13:1513:13 | Vec2 {...} | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1511:20:1511:26 | - ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1511:21:1511:24 | self | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1511:21:1511:26 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1512:20:1512:26 | - ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1512:21:1512:24 | self | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1512:21:1512:26 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1519:16:1519:19 | SelfParam | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1519:30:1524:9 | { ... } | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1520:13:1523:13 | Vec2 {...} | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1521:20:1521:26 | ! ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1521:21:1521:24 | self | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1521:21:1521:26 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1522:20:1522:26 | ! ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1522:21:1522:24 | self | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1522:21:1522:26 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1528:15:1528:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1528:15:1528:19 | SelfParam | &T | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1528:22:1528:26 | other | | file://:0:0:0:0 | & | -| main.rs:1528:22:1528:26 | other | &T | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1528:44:1530:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:1529:13:1529:16 | self | | file://:0:0:0:0 | & | -| main.rs:1529:13:1529:16 | self | &T | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1529:13:1529:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1529:13:1529:29 | ... == ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1529:13:1529:50 | ... && ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1529:23:1529:27 | other | | file://:0:0:0:0 | & | -| main.rs:1529:23:1529:27 | other | &T | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1529:23:1529:29 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1529:34:1529:37 | self | | file://:0:0:0:0 | & | -| main.rs:1529:34:1529:37 | self | &T | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1529:34:1529:39 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1529:34:1529:50 | ... == ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1529:44:1529:48 | other | | file://:0:0:0:0 | & | -| main.rs:1529:44:1529:48 | other | &T | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1529:44:1529:50 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1532:15:1532:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1532:15:1532:19 | SelfParam | &T | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1532:22:1532:26 | other | | file://:0:0:0:0 | & | -| main.rs:1532:22:1532:26 | other | &T | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1532:44:1534:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:1533:13:1533:16 | self | | file://:0:0:0:0 | & | -| main.rs:1533:13:1533:16 | self | &T | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1533:13:1533:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1533:13:1533:29 | ... != ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1533:13:1533:50 | ... \|\| ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1533:23:1533:27 | other | | file://:0:0:0:0 | & | -| main.rs:1533:23:1533:27 | other | &T | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1533:23:1533:29 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1533:34:1533:37 | self | | file://:0:0:0:0 | & | -| main.rs:1533:34:1533:37 | self | &T | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1533:34:1533:39 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1533:34:1533:50 | ... != ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1533:44:1533:48 | other | | file://:0:0:0:0 | & | -| main.rs:1533:44:1533:48 | other | &T | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1533:44:1533:50 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1538:24:1538:28 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1538:24:1538:28 | SelfParam | &T | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1538:31:1538:35 | other | | file://:0:0:0:0 | & | -| main.rs:1538:31:1538:35 | other | &T | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1538:75:1540:9 | { ... } | | {EXTERNAL LOCATION} | Option | -| main.rs:1538:75:1540:9 | { ... } | T | {EXTERNAL LOCATION} | Ordering | -| main.rs:1539:13:1539:29 | (...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:1539:13:1539:63 | ... .partial_cmp(...) | | {EXTERNAL LOCATION} | Option | -| main.rs:1539:13:1539:63 | ... .partial_cmp(...) | T | {EXTERNAL LOCATION} | Ordering | -| main.rs:1539:14:1539:17 | self | | file://:0:0:0:0 | & | -| main.rs:1539:14:1539:17 | self | &T | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1539:14:1539:19 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1539:14:1539:28 | ... + ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1539:23:1539:26 | self | | file://:0:0:0:0 | & | -| main.rs:1539:23:1539:26 | self | &T | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1539:23:1539:28 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1539:43:1539:62 | &... | | file://:0:0:0:0 | & | -| main.rs:1539:43:1539:62 | &... | &T | {EXTERNAL LOCATION} | i64 | -| main.rs:1539:44:1539:62 | (...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:1539:45:1539:49 | other | | file://:0:0:0:0 | & | -| main.rs:1539:45:1539:49 | other | &T | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1539:45:1539:51 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1539:45:1539:61 | ... + ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1539:55:1539:59 | other | | file://:0:0:0:0 | & | -| main.rs:1539:55:1539:59 | other | &T | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1539:55:1539:61 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1542:15:1542:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1542:15:1542:19 | SelfParam | &T | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1542:22:1542:26 | other | | file://:0:0:0:0 | & | -| main.rs:1542:22:1542:26 | other | &T | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1542:44:1544:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:1543:13:1543:16 | self | | file://:0:0:0:0 | & | -| main.rs:1543:13:1543:16 | self | &T | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1543:13:1543:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1543:13:1543:28 | ... < ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1543:13:1543:48 | ... && ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1543:22:1543:26 | other | | file://:0:0:0:0 | & | -| main.rs:1543:22:1543:26 | other | &T | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1543:22:1543:28 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1543:33:1543:36 | self | | file://:0:0:0:0 | & | -| main.rs:1543:33:1543:36 | self | &T | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1543:33:1543:38 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1543:33:1543:48 | ... < ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1543:42:1543:46 | other | | file://:0:0:0:0 | & | -| main.rs:1543:42:1543:46 | other | &T | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1543:42:1543:48 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1546:15:1546:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1546:15:1546:19 | SelfParam | &T | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1546:22:1546:26 | other | | file://:0:0:0:0 | & | -| main.rs:1546:22:1546:26 | other | &T | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1546:44:1548:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:1547:13:1547:16 | self | | file://:0:0:0:0 | & | -| main.rs:1547:13:1547:16 | self | &T | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1547:13:1547:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1547:13:1547:29 | ... <= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1547:13:1547:50 | ... && ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1547:23:1547:27 | other | | file://:0:0:0:0 | & | -| main.rs:1547:23:1547:27 | other | &T | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1547:23:1547:29 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1547:34:1547:37 | self | | file://:0:0:0:0 | & | -| main.rs:1547:34:1547:37 | self | &T | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1547:34:1547:39 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1547:34:1547:50 | ... <= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1547:44:1547:48 | other | | file://:0:0:0:0 | & | -| main.rs:1547:44:1547:48 | other | &T | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1547:44:1547:50 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1550:15:1550:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1550:15:1550:19 | SelfParam | &T | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1550:22:1550:26 | other | | file://:0:0:0:0 | & | -| main.rs:1550:22:1550:26 | other | &T | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1550:44:1552:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:1551:13:1551:16 | self | | file://:0:0:0:0 | & | -| main.rs:1551:13:1551:16 | self | &T | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1551:13:1551:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1551:13:1551:28 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1551:13:1551:48 | ... && ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1551:22:1551:26 | other | | file://:0:0:0:0 | & | -| main.rs:1551:22:1551:26 | other | &T | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1551:22:1551:28 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1551:33:1551:36 | self | | file://:0:0:0:0 | & | -| main.rs:1551:33:1551:36 | self | &T | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1551:33:1551:38 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1551:33:1551:48 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1551:42:1551:46 | other | | file://:0:0:0:0 | & | -| main.rs:1551:42:1551:46 | other | &T | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1551:42:1551:48 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1554:15:1554:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1554:15:1554:19 | SelfParam | &T | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1554:22:1554:26 | other | | file://:0:0:0:0 | & | -| main.rs:1554:22:1554:26 | other | &T | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1554:44:1556:9 | { ... } | | {EXTERNAL LOCATION} | bool | -| main.rs:1555:13:1555:16 | self | | file://:0:0:0:0 | & | -| main.rs:1555:13:1555:16 | self | &T | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1555:13:1555:18 | self.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1555:13:1555:29 | ... >= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1555:13:1555:50 | ... && ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1555:23:1555:27 | other | | file://:0:0:0:0 | & | -| main.rs:1555:23:1555:27 | other | &T | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1555:23:1555:29 | other.x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1555:34:1555:37 | self | | file://:0:0:0:0 | & | -| main.rs:1555:34:1555:37 | self | &T | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1555:34:1555:39 | self.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1555:34:1555:50 | ... >= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1555:44:1555:48 | other | | file://:0:0:0:0 | & | -| main.rs:1555:44:1555:48 | other | &T | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1555:44:1555:50 | other.y | | {EXTERNAL LOCATION} | i64 | -| main.rs:1562:13:1562:18 | i64_eq | | {EXTERNAL LOCATION} | bool | -| main.rs:1562:22:1562:35 | (...) | | {EXTERNAL LOCATION} | bool | -| main.rs:1562:23:1562:26 | 1i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1562:23:1562:34 | ... == ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1562:31:1562:34 | 2i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1563:13:1563:18 | i64_ne | | {EXTERNAL LOCATION} | bool | -| main.rs:1563:22:1563:35 | (...) | | {EXTERNAL LOCATION} | bool | -| main.rs:1563:23:1563:26 | 3i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1563:23:1563:34 | ... != ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1563:31:1563:34 | 4i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1564:13:1564:18 | i64_lt | | {EXTERNAL LOCATION} | bool | -| main.rs:1564:22:1564:34 | (...) | | {EXTERNAL LOCATION} | bool | -| main.rs:1564:23:1564:26 | 5i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1564:23:1564:33 | ... < ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1564:30:1564:33 | 6i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1565:13:1565:18 | i64_le | | {EXTERNAL LOCATION} | bool | -| main.rs:1565:22:1565:35 | (...) | | {EXTERNAL LOCATION} | bool | -| main.rs:1565:23:1565:26 | 7i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1565:23:1565:34 | ... <= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1565:31:1565:34 | 8i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1566:13:1566:18 | i64_gt | | {EXTERNAL LOCATION} | bool | -| main.rs:1566:22:1566:35 | (...) | | {EXTERNAL LOCATION} | bool | -| main.rs:1566:23:1566:26 | 9i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1566:23:1566:34 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1566:30:1566:34 | 10i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1567:13:1567:18 | i64_ge | | {EXTERNAL LOCATION} | bool | -| main.rs:1567:22:1567:37 | (...) | | {EXTERNAL LOCATION} | bool | -| main.rs:1567:23:1567:27 | 11i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1567:23:1567:36 | ... >= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1567:32:1567:36 | 12i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1570:13:1570:19 | i64_add | | {EXTERNAL LOCATION} | i64 | -| main.rs:1570:23:1570:27 | 13i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1570:23:1570:35 | ... + ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1570:31:1570:35 | 14i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1571:13:1571:19 | i64_sub | | {EXTERNAL LOCATION} | i64 | -| main.rs:1571:23:1571:27 | 15i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1571:23:1571:35 | ... - ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1571:31:1571:35 | 16i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1572:13:1572:19 | i64_mul | | {EXTERNAL LOCATION} | i64 | -| main.rs:1572:23:1572:27 | 17i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1572:23:1572:35 | ... * ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1572:31:1572:35 | 18i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1573:13:1573:19 | i64_div | | {EXTERNAL LOCATION} | i64 | -| main.rs:1573:23:1573:27 | 19i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1573:23:1573:35 | ... / ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1573:31:1573:35 | 20i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1574:13:1574:19 | i64_rem | | {EXTERNAL LOCATION} | i64 | -| main.rs:1574:23:1574:27 | 21i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1574:23:1574:35 | ... % ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1574:31:1574:35 | 22i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1577:13:1577:30 | mut i64_add_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1577:34:1577:38 | 23i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1578:9:1578:22 | i64_add_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1578:9:1578:31 | ... += ... | | file://:0:0:0:0 | () | -| main.rs:1578:27:1578:31 | 24i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1580:13:1580:30 | mut i64_sub_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1580:34:1580:38 | 25i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1581:9:1581:22 | i64_sub_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1581:9:1581:31 | ... -= ... | | file://:0:0:0:0 | () | -| main.rs:1581:27:1581:31 | 26i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1583:13:1583:30 | mut i64_mul_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1583:34:1583:38 | 27i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1584:9:1584:22 | i64_mul_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1584:9:1584:31 | ... *= ... | | file://:0:0:0:0 | () | -| main.rs:1584:27:1584:31 | 28i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1586:13:1586:30 | mut i64_div_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1586:34:1586:38 | 29i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1587:9:1587:22 | i64_div_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1587:9:1587:31 | ... /= ... | | file://:0:0:0:0 | () | -| main.rs:1587:27:1587:31 | 30i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1589:13:1589:30 | mut i64_rem_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1589:34:1589:38 | 31i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1590:9:1590:22 | i64_rem_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1590:9:1590:31 | ... %= ... | | file://:0:0:0:0 | () | -| main.rs:1590:27:1590:31 | 32i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1593:13:1593:22 | i64_bitand | | {EXTERNAL LOCATION} | i64 | -| main.rs:1593:26:1593:30 | 33i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1593:26:1593:38 | ... & ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1593:34:1593:38 | 34i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1594:13:1594:21 | i64_bitor | | {EXTERNAL LOCATION} | i64 | -| main.rs:1594:25:1594:29 | 35i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1594:25:1594:37 | ... \| ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1594:33:1594:37 | 36i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1595:13:1595:22 | i64_bitxor | | {EXTERNAL LOCATION} | i64 | -| main.rs:1595:26:1595:30 | 37i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1595:26:1595:38 | ... ^ ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1595:34:1595:38 | 38i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1596:13:1596:19 | i64_shl | | {EXTERNAL LOCATION} | i64 | -| main.rs:1596:23:1596:27 | 39i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1596:23:1596:36 | ... << ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1596:32:1596:36 | 40i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1597:13:1597:19 | i64_shr | | {EXTERNAL LOCATION} | i64 | -| main.rs:1597:23:1597:27 | 41i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1597:23:1597:36 | ... >> ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1597:32:1597:36 | 42i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1600:13:1600:33 | mut i64_bitand_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1600:37:1600:41 | 43i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1601:9:1601:25 | i64_bitand_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1601:9:1601:34 | ... &= ... | | file://:0:0:0:0 | () | -| main.rs:1601:30:1601:34 | 44i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1603:13:1603:32 | mut i64_bitor_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1603:36:1603:40 | 45i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1604:9:1604:24 | i64_bitor_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1604:9:1604:33 | ... \|= ... | | file://:0:0:0:0 | () | -| main.rs:1604:29:1604:33 | 46i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1606:13:1606:33 | mut i64_bitxor_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1606:37:1606:41 | 47i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1607:9:1607:25 | i64_bitxor_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1607:9:1607:34 | ... ^= ... | | file://:0:0:0:0 | () | -| main.rs:1607:30:1607:34 | 48i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1609:13:1609:30 | mut i64_shl_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1609:34:1609:38 | 49i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1610:9:1610:22 | i64_shl_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1610:9:1610:32 | ... <<= ... | | file://:0:0:0:0 | () | -| main.rs:1610:28:1610:32 | 50i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1612:13:1612:30 | mut i64_shr_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1612:34:1612:38 | 51i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1613:9:1613:22 | i64_shr_assign | | {EXTERNAL LOCATION} | i64 | -| main.rs:1613:9:1613:32 | ... >>= ... | | file://:0:0:0:0 | () | -| main.rs:1613:28:1613:32 | 52i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1615:13:1615:19 | i64_neg | | {EXTERNAL LOCATION} | i64 | -| main.rs:1615:23:1615:28 | - ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1615:24:1615:28 | 53i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1616:13:1616:19 | i64_not | | {EXTERNAL LOCATION} | i64 | -| main.rs:1616:23:1616:28 | ! ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1616:24:1616:28 | 54i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1619:13:1619:14 | v1 | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1619:18:1619:36 | Vec2 {...} | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1619:28:1619:28 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1619:28:1619:28 | 1 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1619:34:1619:34 | 2 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1619:34:1619:34 | 2 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1620:13:1620:14 | v2 | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1620:18:1620:36 | Vec2 {...} | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1620:28:1620:28 | 3 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1620:28:1620:28 | 3 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1620:34:1620:34 | 4 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1620:34:1620:34 | 4 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1623:13:1623:19 | vec2_eq | | {EXTERNAL LOCATION} | bool | -| main.rs:1623:23:1623:24 | v1 | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1623:23:1623:30 | ... == ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1623:29:1623:30 | v2 | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1624:13:1624:19 | vec2_ne | | {EXTERNAL LOCATION} | bool | -| main.rs:1624:23:1624:24 | v1 | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1624:23:1624:30 | ... != ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1624:29:1624:30 | v2 | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1625:13:1625:19 | vec2_lt | | {EXTERNAL LOCATION} | bool | -| main.rs:1625:23:1625:24 | v1 | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1625:23:1625:29 | ... < ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1625:28:1625:29 | v2 | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1626:13:1626:19 | vec2_le | | {EXTERNAL LOCATION} | bool | -| main.rs:1626:23:1626:24 | v1 | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1626:23:1626:30 | ... <= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1626:29:1626:30 | v2 | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1627:13:1627:19 | vec2_gt | | {EXTERNAL LOCATION} | bool | -| main.rs:1627:23:1627:24 | v1 | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1627:23:1627:29 | ... > ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1627:28:1627:29 | v2 | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1628:13:1628:19 | vec2_ge | | {EXTERNAL LOCATION} | bool | -| main.rs:1628:23:1628:24 | v1 | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1628:23:1628:30 | ... >= ... | | {EXTERNAL LOCATION} | bool | -| main.rs:1628:29:1628:30 | v2 | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1631:13:1631:20 | vec2_add | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1631:24:1631:25 | v1 | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1631:24:1631:30 | ... + ... | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1631:29:1631:30 | v2 | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1632:13:1632:20 | vec2_sub | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1632:24:1632:25 | v1 | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1632:24:1632:30 | ... - ... | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1632:29:1632:30 | v2 | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1633:13:1633:20 | vec2_mul | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1633:24:1633:25 | v1 | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1633:24:1633:30 | ... * ... | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1633:29:1633:30 | v2 | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1634:13:1634:20 | vec2_div | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1634:24:1634:25 | v1 | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1634:24:1634:30 | ... / ... | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1634:29:1634:30 | v2 | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1635:13:1635:20 | vec2_rem | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1635:24:1635:25 | v1 | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1635:24:1635:30 | ... % ... | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1635:29:1635:30 | v2 | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1638:13:1638:31 | mut vec2_add_assign | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1638:35:1638:36 | v1 | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1639:9:1639:23 | vec2_add_assign | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1639:9:1639:29 | ... += ... | | file://:0:0:0:0 | () | -| main.rs:1639:28:1639:29 | v2 | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1641:13:1641:31 | mut vec2_sub_assign | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1641:35:1641:36 | v1 | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1642:9:1642:23 | vec2_sub_assign | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1642:9:1642:29 | ... -= ... | | file://:0:0:0:0 | () | -| main.rs:1642:28:1642:29 | v2 | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1644:13:1644:31 | mut vec2_mul_assign | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1644:35:1644:36 | v1 | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1645:9:1645:23 | vec2_mul_assign | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1645:9:1645:29 | ... *= ... | | file://:0:0:0:0 | () | -| main.rs:1645:28:1645:29 | v2 | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1647:13:1647:31 | mut vec2_div_assign | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1647:35:1647:36 | v1 | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1648:9:1648:23 | vec2_div_assign | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1648:9:1648:29 | ... /= ... | | file://:0:0:0:0 | () | -| main.rs:1648:28:1648:29 | v2 | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1650:13:1650:31 | mut vec2_rem_assign | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1650:35:1650:36 | v1 | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1651:9:1651:23 | vec2_rem_assign | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1651:9:1651:29 | ... %= ... | | file://:0:0:0:0 | () | -| main.rs:1651:28:1651:29 | v2 | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1654:13:1654:23 | vec2_bitand | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1654:27:1654:28 | v1 | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1654:27:1654:33 | ... & ... | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1654:32:1654:33 | v2 | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1655:13:1655:22 | vec2_bitor | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1655:26:1655:27 | v1 | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1655:26:1655:32 | ... \| ... | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1655:31:1655:32 | v2 | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1656:13:1656:23 | vec2_bitxor | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1656:27:1656:28 | v1 | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1656:27:1656:33 | ... ^ ... | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1656:32:1656:33 | v2 | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1657:13:1657:20 | vec2_shl | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1657:24:1657:25 | v1 | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1657:24:1657:33 | ... << ... | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1657:30:1657:33 | 1u32 | | {EXTERNAL LOCATION} | u32 | -| main.rs:1658:13:1658:20 | vec2_shr | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1658:24:1658:25 | v1 | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1658:24:1658:33 | ... >> ... | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1658:30:1658:33 | 1u32 | | {EXTERNAL LOCATION} | u32 | -| main.rs:1661:13:1661:34 | mut vec2_bitand_assign | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1661:38:1661:39 | v1 | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1662:9:1662:26 | vec2_bitand_assign | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1662:9:1662:32 | ... &= ... | | file://:0:0:0:0 | () | -| main.rs:1662:31:1662:32 | v2 | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1664:13:1664:33 | mut vec2_bitor_assign | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1664:37:1664:38 | v1 | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1665:9:1665:25 | vec2_bitor_assign | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1665:9:1665:31 | ... \|= ... | | file://:0:0:0:0 | () | -| main.rs:1665:30:1665:31 | v2 | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1667:13:1667:34 | mut vec2_bitxor_assign | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1667:38:1667:39 | v1 | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1668:9:1668:26 | vec2_bitxor_assign | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1668:9:1668:32 | ... ^= ... | | file://:0:0:0:0 | () | -| main.rs:1668:31:1668:32 | v2 | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1670:13:1670:31 | mut vec2_shl_assign | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1670:35:1670:36 | v1 | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1671:9:1671:23 | vec2_shl_assign | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1671:9:1671:32 | ... <<= ... | | file://:0:0:0:0 | () | -| main.rs:1671:29:1671:32 | 1u32 | | {EXTERNAL LOCATION} | u32 | -| main.rs:1673:13:1673:31 | mut vec2_shr_assign | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1673:35:1673:36 | v1 | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1674:9:1674:23 | vec2_shr_assign | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1674:9:1674:32 | ... >>= ... | | file://:0:0:0:0 | () | -| main.rs:1674:29:1674:32 | 1u32 | | {EXTERNAL LOCATION} | u32 | -| main.rs:1677:13:1677:20 | vec2_neg | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1677:24:1677:26 | - ... | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1677:25:1677:26 | v1 | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1678:13:1678:20 | vec2_not | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1678:24:1678:26 | ! ... | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1678:25:1678:26 | v1 | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1681:13:1681:24 | default_vec2 | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1681:28:1681:45 | ...::default(...) | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1682:13:1682:26 | vec2_zero_plus | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1682:30:1682:48 | Vec2 {...} | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1682:30:1682:63 | ... + ... | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1682:40:1682:40 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1682:40:1682:40 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1682:46:1682:46 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1682:46:1682:46 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1682:52:1682:63 | default_vec2 | | main.rs:1322:5:1327:5 | Vec2 | -| main.rs:1692:18:1692:21 | SelfParam | | main.rs:1689:5:1689:14 | S1 | -| main.rs:1695:25:1697:5 | { ... } | | main.rs:1689:5:1689:14 | S1 | -| main.rs:1696:9:1696:10 | S1 | | main.rs:1689:5:1689:14 | S1 | -| main.rs:1699:41:1701:5 | { ... } | | {EXTERNAL LOCATION} | trait Future | -| main.rs:1699:41:1701:5 | { ... } | | main.rs:1699:16:1699:39 | ImplTraitTypeRepr | -| main.rs:1699:41:1701:5 | { ... } | Output | main.rs:1689:5:1689:14 | S1 | -| main.rs:1700:9:1700:20 | { ... } | | {EXTERNAL LOCATION} | trait Future | -| main.rs:1700:9:1700:20 | { ... } | | main.rs:1699:16:1699:39 | ImplTraitTypeRepr | -| main.rs:1700:9:1700:20 | { ... } | Output | main.rs:1689:5:1689:14 | S1 | -| main.rs:1700:17:1700:18 | S1 | | main.rs:1689:5:1689:14 | S1 | -| main.rs:1709:13:1709:42 | SelfParam | | {EXTERNAL LOCATION} | Pin | -| main.rs:1709:13:1709:42 | SelfParam | Ptr | file://:0:0:0:0 | & | -| main.rs:1709:13:1709:42 | SelfParam | Ptr.&T | main.rs:1703:5:1703:14 | S2 | -| main.rs:1710:13:1710:15 | _cx | | file://:0:0:0:0 | & | -| main.rs:1710:13:1710:15 | _cx | &T | {EXTERNAL LOCATION} | Context | -| main.rs:1711:44:1713:9 | { ... } | | {EXTERNAL LOCATION} | Poll | -| main.rs:1711:44:1713:9 | { ... } | T | main.rs:1689:5:1689:14 | S1 | -| main.rs:1712:13:1712:38 | ...::Ready(...) | | {EXTERNAL LOCATION} | Poll | -| main.rs:1712:13:1712:38 | ...::Ready(...) | T | main.rs:1689:5:1689:14 | S1 | -| main.rs:1712:36:1712:37 | S1 | | main.rs:1689:5:1689:14 | S1 | -| main.rs:1716:41:1718:5 | { ... } | | main.rs:1703:5:1703:14 | S2 | -| main.rs:1716:41:1718:5 | { ... } | | main.rs:1716:16:1716:39 | ImplTraitTypeRepr | -| main.rs:1717:9:1717:10 | S2 | | main.rs:1703:5:1703:14 | S2 | -| main.rs:1717:9:1717:10 | S2 | | main.rs:1716:16:1716:39 | ImplTraitTypeRepr | -| main.rs:1721:9:1721:12 | f1(...) | | {EXTERNAL LOCATION} | trait Future | -| main.rs:1721:9:1721:12 | f1(...) | Output | main.rs:1689:5:1689:14 | S1 | -| main.rs:1721:9:1721:18 | await ... | | main.rs:1689:5:1689:14 | S1 | -| main.rs:1722:9:1722:12 | f2(...) | | main.rs:1699:16:1699:39 | ImplTraitTypeRepr | -| main.rs:1722:9:1722:18 | await ... | | main.rs:1689:5:1689:14 | S1 | -| main.rs:1723:9:1723:12 | f3(...) | | main.rs:1716:16:1716:39 | ImplTraitTypeRepr | -| main.rs:1723:9:1723:18 | await ... | | main.rs:1689:5:1689:14 | S1 | -| main.rs:1724:9:1724:10 | S2 | | main.rs:1703:5:1703:14 | S2 | -| main.rs:1724:9:1724:16 | await S2 | | main.rs:1689:5:1689:14 | S1 | -| main.rs:1725:13:1725:13 | b | | {EXTERNAL LOCATION} | trait Future | -| main.rs:1725:13:1725:13 | b | Output | main.rs:1689:5:1689:14 | S1 | -| main.rs:1725:17:1725:28 | { ... } | | {EXTERNAL LOCATION} | trait Future | -| main.rs:1725:17:1725:28 | { ... } | Output | main.rs:1689:5:1689:14 | S1 | -| main.rs:1725:25:1725:26 | S1 | | main.rs:1689:5:1689:14 | S1 | -| main.rs:1726:9:1726:9 | b | | {EXTERNAL LOCATION} | trait Future | -| main.rs:1726:9:1726:9 | b | Output | main.rs:1689:5:1689:14 | S1 | -| main.rs:1726:9:1726:15 | await b | | main.rs:1689:5:1689:14 | S1 | -| main.rs:1735:15:1735:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1735:15:1735:19 | SelfParam | &T | main.rs:1734:5:1736:5 | Self [trait Trait1] | -| main.rs:1739:15:1739:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1739:15:1739:19 | SelfParam | &T | main.rs:1738:5:1740:5 | Self [trait Trait2] | -| main.rs:1743:15:1743:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1743:15:1743:19 | SelfParam | &T | main.rs:1731:5:1731:14 | S1 | -| main.rs:1747:15:1747:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1747:15:1747:19 | SelfParam | &T | main.rs:1731:5:1731:14 | S1 | -| main.rs:1750:37:1752:5 | { ... } | | main.rs:1731:5:1731:14 | S1 | -| main.rs:1750:37:1752:5 | { ... } | | main.rs:1750:16:1750:35 | ImplTraitTypeRepr | -| main.rs:1751:9:1751:10 | S1 | | main.rs:1731:5:1731:14 | S1 | -| main.rs:1751:9:1751:10 | S1 | | main.rs:1750:16:1750:35 | ImplTraitTypeRepr | -| main.rs:1755:18:1755:22 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1755:18:1755:22 | SelfParam | &T | main.rs:1754:5:1756:5 | Self [trait MyTrait] | -| main.rs:1759:18:1759:22 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1759:18:1759:22 | SelfParam | &T | main.rs:1731:5:1731:14 | S1 | -| main.rs:1759:31:1761:9 | { ... } | | main.rs:1732:5:1732:14 | S2 | -| main.rs:1760:13:1760:14 | S2 | | main.rs:1732:5:1732:14 | S2 | -| main.rs:1764:45:1766:5 | { ... } | | main.rs:1731:5:1731:14 | S1 | -| main.rs:1764:45:1766:5 | { ... } | | main.rs:1764:28:1764:43 | ImplTraitTypeRepr | -| main.rs:1765:9:1765:10 | S1 | | main.rs:1731:5:1731:14 | S1 | -| main.rs:1765:9:1765:10 | S1 | | main.rs:1764:28:1764:43 | ImplTraitTypeRepr | -| main.rs:1768:41:1768:41 | t | | main.rs:1768:26:1768:38 | B | -| main.rs:1768:52:1770:5 | { ... } | | main.rs:1768:23:1768:23 | A | -| main.rs:1769:9:1769:9 | t | | main.rs:1768:26:1768:38 | B | -| main.rs:1769:9:1769:17 | t.get_a() | | main.rs:1768:23:1768:23 | A | -| main.rs:1772:26:1772:26 | t | | main.rs:1772:29:1772:43 | ImplTraitTypeRepr | -| main.rs:1772:51:1774:5 | { ... } | | main.rs:1772:23:1772:23 | A | -| main.rs:1773:9:1773:9 | t | | main.rs:1772:29:1772:43 | ImplTraitTypeRepr | -| main.rs:1773:9:1773:17 | t.get_a() | | main.rs:1772:23:1772:23 | A | -| main.rs:1777:13:1777:13 | x | | main.rs:1750:16:1750:35 | ImplTraitTypeRepr | -| main.rs:1777:17:1777:20 | f1(...) | | main.rs:1750:16:1750:35 | ImplTraitTypeRepr | -| main.rs:1778:9:1778:9 | x | | main.rs:1750:16:1750:35 | ImplTraitTypeRepr | -| main.rs:1779:9:1779:9 | x | | main.rs:1750:16:1750:35 | ImplTraitTypeRepr | -| main.rs:1780:13:1780:13 | a | | main.rs:1764:28:1764:43 | ImplTraitTypeRepr | -| main.rs:1780:17:1780:32 | get_a_my_trait(...) | | main.rs:1764:28:1764:43 | ImplTraitTypeRepr | -| main.rs:1781:13:1781:13 | b | | main.rs:1732:5:1732:14 | S2 | -| main.rs:1781:17:1781:33 | uses_my_trait1(...) | | main.rs:1732:5:1732:14 | S2 | -| main.rs:1781:32:1781:32 | a | | main.rs:1764:28:1764:43 | ImplTraitTypeRepr | -| main.rs:1782:13:1782:13 | a | | main.rs:1764:28:1764:43 | ImplTraitTypeRepr | -| main.rs:1782:17:1782:32 | get_a_my_trait(...) | | main.rs:1764:28:1764:43 | ImplTraitTypeRepr | -| main.rs:1783:13:1783:13 | c | | main.rs:1732:5:1732:14 | S2 | -| main.rs:1783:17:1783:33 | uses_my_trait2(...) | | main.rs:1732:5:1732:14 | S2 | -| main.rs:1783:32:1783:32 | a | | main.rs:1764:28:1764:43 | ImplTraitTypeRepr | -| main.rs:1784:13:1784:13 | d | | main.rs:1732:5:1732:14 | S2 | -| main.rs:1784:17:1784:34 | uses_my_trait2(...) | | main.rs:1732:5:1732:14 | S2 | -| main.rs:1784:32:1784:33 | S1 | | main.rs:1731:5:1731:14 | S1 | -| main.rs:1795:16:1795:20 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1795:16:1795:20 | SelfParam | &T | main.rs:1791:5:1792:13 | S | -| main.rs:1795:31:1797:9 | { ... } | | main.rs:1791:5:1792:13 | S | -| main.rs:1796:13:1796:13 | S | | main.rs:1791:5:1792:13 | S | -| main.rs:1806:26:1808:9 | { ... } | | main.rs:1800:5:1803:5 | MyVec | -| main.rs:1806:26:1808:9 | { ... } | T | main.rs:1805:10:1805:10 | T | -| main.rs:1807:13:1807:38 | MyVec {...} | | main.rs:1800:5:1803:5 | MyVec | -| main.rs:1807:13:1807:38 | MyVec {...} | T | main.rs:1805:10:1805:10 | T | -| main.rs:1807:27:1807:36 | ...::new(...) | | {EXTERNAL LOCATION} | Vec | -| main.rs:1807:27:1807:36 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:1807:27:1807:36 | ...::new(...) | T | main.rs:1805:10:1805:10 | T | -| main.rs:1810:17:1810:25 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1810:17:1810:25 | SelfParam | &T | main.rs:1800:5:1803:5 | MyVec | -| main.rs:1810:17:1810:25 | SelfParam | &T.T | main.rs:1805:10:1805:10 | T | -| main.rs:1810:28:1810:32 | value | | main.rs:1805:10:1805:10 | T | -| main.rs:1811:13:1811:16 | self | | file://:0:0:0:0 | & | -| main.rs:1811:13:1811:16 | self | &T | main.rs:1800:5:1803:5 | MyVec | -| main.rs:1811:13:1811:16 | self | &T.T | main.rs:1805:10:1805:10 | T | -| main.rs:1811:13:1811:21 | self.data | | {EXTERNAL LOCATION} | Vec | -| main.rs:1811:13:1811:21 | self.data | A | {EXTERNAL LOCATION} | Global | -| main.rs:1811:13:1811:21 | self.data | T | main.rs:1805:10:1805:10 | T | -| main.rs:1811:28:1811:32 | value | | main.rs:1805:10:1805:10 | T | -| main.rs:1819:18:1819:22 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1819:18:1819:22 | SelfParam | &T | main.rs:1800:5:1803:5 | MyVec | -| main.rs:1819:18:1819:22 | SelfParam | &T.T | main.rs:1815:10:1815:10 | T | -| main.rs:1819:25:1819:29 | index | | {EXTERNAL LOCATION} | usize | -| main.rs:1819:56:1821:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1819:56:1821:9 | { ... } | &T | main.rs:1815:10:1815:10 | T | -| main.rs:1820:13:1820:29 | &... | | file://:0:0:0:0 | & | -| main.rs:1820:13:1820:29 | &... | &T | main.rs:1815:10:1815:10 | T | -| main.rs:1820:14:1820:17 | self | | file://:0:0:0:0 | & | -| main.rs:1820:14:1820:17 | self | &T | main.rs:1800:5:1803:5 | MyVec | -| main.rs:1820:14:1820:17 | self | &T.T | main.rs:1815:10:1815:10 | T | -| main.rs:1820:14:1820:22 | self.data | | {EXTERNAL LOCATION} | Vec | -| main.rs:1820:14:1820:22 | self.data | A | {EXTERNAL LOCATION} | Global | -| main.rs:1820:14:1820:22 | self.data | T | main.rs:1815:10:1815:10 | T | -| main.rs:1820:14:1820:29 | ...[index] | | main.rs:1815:10:1815:10 | T | -| main.rs:1820:24:1820:28 | index | | {EXTERNAL LOCATION} | usize | -| main.rs:1824:22:1824:26 | slice | | file://:0:0:0:0 | & | -| main.rs:1824:22:1824:26 | slice | &T | file://:0:0:0:0 | [] | -| main.rs:1824:22:1824:26 | slice | &T.[T] | main.rs:1791:5:1792:13 | S | -| main.rs:1825:13:1825:13 | x | | main.rs:1791:5:1792:13 | S | -| main.rs:1825:17:1825:21 | slice | | file://:0:0:0:0 | & | -| main.rs:1825:17:1825:21 | slice | &T | file://:0:0:0:0 | [] | -| main.rs:1825:17:1825:21 | slice | &T.[T] | main.rs:1791:5:1792:13 | S | -| main.rs:1825:17:1825:24 | slice[0] | | main.rs:1791:5:1792:13 | S | -| main.rs:1825:17:1825:30 | ... .foo() | | main.rs:1791:5:1792:13 | S | -| main.rs:1825:23:1825:23 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1829:13:1829:19 | mut vec | | main.rs:1800:5:1803:5 | MyVec | -| main.rs:1829:13:1829:19 | mut vec | T | main.rs:1791:5:1792:13 | S | -| main.rs:1829:23:1829:34 | ...::new(...) | | main.rs:1800:5:1803:5 | MyVec | -| main.rs:1829:23:1829:34 | ...::new(...) | T | main.rs:1791:5:1792:13 | S | -| main.rs:1830:9:1830:11 | vec | | main.rs:1800:5:1803:5 | MyVec | -| main.rs:1830:9:1830:11 | vec | T | main.rs:1791:5:1792:13 | S | -| main.rs:1830:18:1830:18 | S | | main.rs:1791:5:1792:13 | S | -| main.rs:1831:9:1831:11 | vec | | main.rs:1800:5:1803:5 | MyVec | -| main.rs:1831:9:1831:11 | vec | T | main.rs:1791:5:1792:13 | S | -| main.rs:1831:13:1831:13 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1833:13:1833:14 | xs | | file://:0:0:0:0 | [] | -| main.rs:1833:13:1833:14 | xs | | file://:0:0:0:0 | [] | -| main.rs:1833:13:1833:14 | xs | [T;...] | main.rs:1791:5:1792:13 | S | -| main.rs:1833:13:1833:14 | xs | [T] | main.rs:1791:5:1792:13 | S | -| main.rs:1833:21:1833:21 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1833:26:1833:28 | [...] | | file://:0:0:0:0 | [] | -| main.rs:1833:26:1833:28 | [...] | | file://:0:0:0:0 | [] | -| main.rs:1833:26:1833:28 | [...] | [T;...] | main.rs:1791:5:1792:13 | S | -| main.rs:1833:26:1833:28 | [...] | [T] | main.rs:1791:5:1792:13 | S | -| main.rs:1833:27:1833:27 | S | | main.rs:1791:5:1792:13 | S | -| main.rs:1834:13:1834:13 | x | | main.rs:1791:5:1792:13 | S | -| main.rs:1834:17:1834:18 | xs | | file://:0:0:0:0 | [] | -| main.rs:1834:17:1834:18 | xs | | file://:0:0:0:0 | [] | -| main.rs:1834:17:1834:18 | xs | [T;...] | main.rs:1791:5:1792:13 | S | -| main.rs:1834:17:1834:18 | xs | [T] | main.rs:1791:5:1792:13 | S | -| main.rs:1834:17:1834:21 | xs[0] | | main.rs:1791:5:1792:13 | S | -| main.rs:1834:17:1834:27 | ... .foo() | | main.rs:1791:5:1792:13 | S | -| main.rs:1834:20:1834:20 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1836:23:1836:25 | &xs | | file://:0:0:0:0 | & | -| main.rs:1836:23:1836:25 | &xs | &T | file://:0:0:0:0 | [] | -| main.rs:1836:23:1836:25 | &xs | &T | file://:0:0:0:0 | [] | -| main.rs:1836:23:1836:25 | &xs | &T.[T;...] | main.rs:1791:5:1792:13 | S | -| main.rs:1836:23:1836:25 | &xs | &T.[T] | main.rs:1791:5:1792:13 | S | -| main.rs:1836:24:1836:25 | xs | | file://:0:0:0:0 | [] | -| main.rs:1836:24:1836:25 | xs | | file://:0:0:0:0 | [] | -| main.rs:1836:24:1836:25 | xs | [T;...] | main.rs:1791:5:1792:13 | S | -| main.rs:1836:24:1836:25 | xs | [T] | main.rs:1791:5:1792:13 | S | -| main.rs:1842:25:1842:35 | "Hello, {}" | | {EXTERNAL LOCATION} | str | -| main.rs:1842:25:1842:45 | ...::format(...) | | {EXTERNAL LOCATION} | String | -| main.rs:1842:25:1842:45 | { ... } | | {EXTERNAL LOCATION} | String | -| main.rs:1842:38:1842:45 | "World!" | | {EXTERNAL LOCATION} | str | -| main.rs:1848:19:1848:23 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1848:19:1848:23 | SelfParam | &T | main.rs:1847:5:1849:5 | Self [trait MyAdd] | -| main.rs:1848:26:1848:30 | value | | main.rs:1847:17:1847:17 | T | -| main.rs:1853:19:1853:23 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1853:19:1853:23 | SelfParam | &T | {EXTERNAL LOCATION} | i64 | -| main.rs:1853:26:1853:30 | value | | {EXTERNAL LOCATION} | i64 | -| main.rs:1853:46:1855:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:1854:13:1854:17 | value | | {EXTERNAL LOCATION} | i64 | -| main.rs:1860:19:1860:23 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1860:19:1860:23 | SelfParam | &T | {EXTERNAL LOCATION} | i64 | -| main.rs:1860:26:1860:30 | value | | file://:0:0:0:0 | & | -| main.rs:1860:26:1860:30 | value | &T | {EXTERNAL LOCATION} | i64 | -| main.rs:1860:26:1860:30 | value | &T | file://:0:0:0:0 | & | -| main.rs:1860:47:1862:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:1860:47:1862:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1861:13:1861:18 | * ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1861:13:1861:18 | * ... | | file://:0:0:0:0 | & | -| main.rs:1861:14:1861:18 | value | | file://:0:0:0:0 | & | -| main.rs:1861:14:1861:18 | value | &T | {EXTERNAL LOCATION} | i64 | -| main.rs:1861:14:1861:18 | value | &T | file://:0:0:0:0 | & | -| main.rs:1867:19:1867:23 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1867:19:1867:23 | SelfParam | &T | {EXTERNAL LOCATION} | i64 | -| main.rs:1867:26:1867:30 | value | | {EXTERNAL LOCATION} | bool | -| main.rs:1867:47:1873:9 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:1867:47:1873:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:1868:13:1872:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i32 | -| main.rs:1868:13:1872:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i64 | -| main.rs:1868:16:1868:20 | value | | {EXTERNAL LOCATION} | bool | -| main.rs:1868:22:1870:13 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:1868:22:1870:13 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:1869:17:1869:17 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1869:17:1869:17 | 1 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1870:20:1872:13 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:1870:20:1872:13 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:1871:17:1871:17 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1871:17:1871:17 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1877:13:1877:13 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:1877:13:1877:13 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1877:22:1877:23 | 73 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1877:22:1877:23 | 73 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1878:9:1878:9 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:1878:9:1878:9 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1878:9:1878:22 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:1878:18:1878:21 | 5i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1879:9:1879:9 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:1879:9:1879:9 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1879:9:1879:23 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:1879:18:1879:22 | &5i64 | | file://:0:0:0:0 | & | -| main.rs:1879:18:1879:22 | &5i64 | &T | {EXTERNAL LOCATION} | i64 | -| main.rs:1879:19:1879:22 | 5i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1880:9:1880:9 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:1880:9:1880:9 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1880:9:1880:22 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:1880:18:1880:21 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:1888:5:1888:20 | ...::f(...) | | main.rs:72:5:72:21 | Foo | -| main.rs:1889:5:1889:60 | ...::g(...) | | main.rs:72:5:72:21 | Foo | -| main.rs:1889:20:1889:38 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | -| main.rs:1889:41:1889:59 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | -| main.rs:1905:5:1905:15 | ...::f(...) | | {EXTERNAL LOCATION} | trait Future | +| main.rs:1503:13:1503:27 | ... ^= ... | | file://:0:0:0:0 | () | +| main.rs:1503:23:1503:25 | rhs | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1503:23:1503:27 | rhs.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1509:16:1509:19 | SelfParam | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1509:22:1509:24 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1509:40:1514:9 | { ... } | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1510:13:1513:13 | Vec2 {...} | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1511:20:1511:23 | self | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1511:20:1511:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1511:20:1511:32 | ... << ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1511:30:1511:32 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1512:20:1512:23 | self | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1512:20:1512:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1512:20:1512:32 | ... << ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1512:30:1512:32 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1518:23:1518:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1518:23:1518:31 | SelfParam | &T | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1518:34:1518:36 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1519:13:1519:16 | self | | file://:0:0:0:0 | & | +| main.rs:1519:13:1519:16 | self | &T | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1519:13:1519:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1519:13:1519:26 | ... <<= ... | | file://:0:0:0:0 | () | +| main.rs:1519:24:1519:26 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1520:13:1520:16 | self | | file://:0:0:0:0 | & | +| main.rs:1520:13:1520:16 | self | &T | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1520:13:1520:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1520:13:1520:26 | ... <<= ... | | file://:0:0:0:0 | () | +| main.rs:1520:24:1520:26 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1526:16:1526:19 | SelfParam | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1526:22:1526:24 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1526:40:1531:9 | { ... } | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1527:13:1530:13 | Vec2 {...} | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1528:20:1528:23 | self | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1528:20:1528:25 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1528:20:1528:32 | ... >> ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1528:30:1528:32 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1529:20:1529:23 | self | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1529:20:1529:25 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1529:20:1529:32 | ... >> ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1529:30:1529:32 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1535:23:1535:31 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1535:23:1535:31 | SelfParam | &T | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1535:34:1535:36 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1536:13:1536:16 | self | | file://:0:0:0:0 | & | +| main.rs:1536:13:1536:16 | self | &T | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1536:13:1536:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1536:13:1536:26 | ... >>= ... | | file://:0:0:0:0 | () | +| main.rs:1536:24:1536:26 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1537:13:1537:16 | self | | file://:0:0:0:0 | & | +| main.rs:1537:13:1537:16 | self | &T | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1537:13:1537:18 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1537:13:1537:26 | ... >>= ... | | file://:0:0:0:0 | () | +| main.rs:1537:24:1537:26 | rhs | | {EXTERNAL LOCATION} | u32 | +| main.rs:1543:16:1543:19 | SelfParam | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1543:30:1548:9 | { ... } | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1544:13:1547:13 | Vec2 {...} | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1545:20:1545:26 | - ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1545:21:1545:24 | self | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1545:21:1545:26 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1546:20:1546:26 | - ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1546:21:1546:24 | self | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1546:21:1546:26 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1553:16:1553:19 | SelfParam | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1553:30:1558:9 | { ... } | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1554:13:1557:13 | Vec2 {...} | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1555:20:1555:26 | ! ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1555:21:1555:24 | self | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1555:21:1555:26 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1556:20:1556:26 | ! ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1556:21:1556:24 | self | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1556:21:1556:26 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1562:15:1562:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1562:15:1562:19 | SelfParam | &T | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1562:22:1562:26 | other | | file://:0:0:0:0 | & | +| main.rs:1562:22:1562:26 | other | &T | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1562:44:1564:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:1563:13:1563:16 | self | | file://:0:0:0:0 | & | +| main.rs:1563:13:1563:16 | self | &T | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1563:13:1563:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1563:13:1563:29 | ... == ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1563:13:1563:50 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1563:23:1563:27 | other | | file://:0:0:0:0 | & | +| main.rs:1563:23:1563:27 | other | &T | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1563:23:1563:29 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1563:34:1563:37 | self | | file://:0:0:0:0 | & | +| main.rs:1563:34:1563:37 | self | &T | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1563:34:1563:39 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1563:34:1563:50 | ... == ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1563:44:1563:48 | other | | file://:0:0:0:0 | & | +| main.rs:1563:44:1563:48 | other | &T | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1563:44:1563:50 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1566:15:1566:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1566:15:1566:19 | SelfParam | &T | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1566:22:1566:26 | other | | file://:0:0:0:0 | & | +| main.rs:1566:22:1566:26 | other | &T | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1566:44:1568:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:1567:13:1567:16 | self | | file://:0:0:0:0 | & | +| main.rs:1567:13:1567:16 | self | &T | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1567:13:1567:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1567:13:1567:29 | ... != ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1567:13:1567:50 | ... \|\| ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1567:23:1567:27 | other | | file://:0:0:0:0 | & | +| main.rs:1567:23:1567:27 | other | &T | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1567:23:1567:29 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1567:34:1567:37 | self | | file://:0:0:0:0 | & | +| main.rs:1567:34:1567:37 | self | &T | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1567:34:1567:39 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1567:34:1567:50 | ... != ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1567:44:1567:48 | other | | file://:0:0:0:0 | & | +| main.rs:1567:44:1567:48 | other | &T | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1567:44:1567:50 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1572:24:1572:28 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1572:24:1572:28 | SelfParam | &T | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1572:31:1572:35 | other | | file://:0:0:0:0 | & | +| main.rs:1572:31:1572:35 | other | &T | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1572:75:1574:9 | { ... } | | {EXTERNAL LOCATION} | Option | +| main.rs:1572:75:1574:9 | { ... } | T | {EXTERNAL LOCATION} | Ordering | +| main.rs:1573:13:1573:29 | (...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:1573:13:1573:63 | ... .partial_cmp(...) | | {EXTERNAL LOCATION} | Option | +| main.rs:1573:13:1573:63 | ... .partial_cmp(...) | T | {EXTERNAL LOCATION} | Ordering | +| main.rs:1573:14:1573:17 | self | | file://:0:0:0:0 | & | +| main.rs:1573:14:1573:17 | self | &T | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1573:14:1573:19 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1573:14:1573:28 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1573:23:1573:26 | self | | file://:0:0:0:0 | & | +| main.rs:1573:23:1573:26 | self | &T | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1573:23:1573:28 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1573:43:1573:62 | &... | | file://:0:0:0:0 | & | +| main.rs:1573:43:1573:62 | &... | &T | {EXTERNAL LOCATION} | i64 | +| main.rs:1573:44:1573:62 | (...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:1573:45:1573:49 | other | | file://:0:0:0:0 | & | +| main.rs:1573:45:1573:49 | other | &T | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1573:45:1573:51 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1573:45:1573:61 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1573:55:1573:59 | other | | file://:0:0:0:0 | & | +| main.rs:1573:55:1573:59 | other | &T | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1573:55:1573:61 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1576:15:1576:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1576:15:1576:19 | SelfParam | &T | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1576:22:1576:26 | other | | file://:0:0:0:0 | & | +| main.rs:1576:22:1576:26 | other | &T | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1576:44:1578:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:1577:13:1577:16 | self | | file://:0:0:0:0 | & | +| main.rs:1577:13:1577:16 | self | &T | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1577:13:1577:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1577:13:1577:28 | ... < ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1577:13:1577:48 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1577:22:1577:26 | other | | file://:0:0:0:0 | & | +| main.rs:1577:22:1577:26 | other | &T | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1577:22:1577:28 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1577:33:1577:36 | self | | file://:0:0:0:0 | & | +| main.rs:1577:33:1577:36 | self | &T | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1577:33:1577:38 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1577:33:1577:48 | ... < ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1577:42:1577:46 | other | | file://:0:0:0:0 | & | +| main.rs:1577:42:1577:46 | other | &T | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1577:42:1577:48 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1580:15:1580:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1580:15:1580:19 | SelfParam | &T | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1580:22:1580:26 | other | | file://:0:0:0:0 | & | +| main.rs:1580:22:1580:26 | other | &T | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1580:44:1582:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:1581:13:1581:16 | self | | file://:0:0:0:0 | & | +| main.rs:1581:13:1581:16 | self | &T | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1581:13:1581:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1581:13:1581:29 | ... <= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1581:13:1581:50 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1581:23:1581:27 | other | | file://:0:0:0:0 | & | +| main.rs:1581:23:1581:27 | other | &T | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1581:23:1581:29 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1581:34:1581:37 | self | | file://:0:0:0:0 | & | +| main.rs:1581:34:1581:37 | self | &T | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1581:34:1581:39 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1581:34:1581:50 | ... <= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1581:44:1581:48 | other | | file://:0:0:0:0 | & | +| main.rs:1581:44:1581:48 | other | &T | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1581:44:1581:50 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1584:15:1584:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1584:15:1584:19 | SelfParam | &T | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1584:22:1584:26 | other | | file://:0:0:0:0 | & | +| main.rs:1584:22:1584:26 | other | &T | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1584:44:1586:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:1585:13:1585:16 | self | | file://:0:0:0:0 | & | +| main.rs:1585:13:1585:16 | self | &T | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1585:13:1585:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1585:13:1585:28 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1585:13:1585:48 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1585:22:1585:26 | other | | file://:0:0:0:0 | & | +| main.rs:1585:22:1585:26 | other | &T | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1585:22:1585:28 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1585:33:1585:36 | self | | file://:0:0:0:0 | & | +| main.rs:1585:33:1585:36 | self | &T | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1585:33:1585:38 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1585:33:1585:48 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1585:42:1585:46 | other | | file://:0:0:0:0 | & | +| main.rs:1585:42:1585:46 | other | &T | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1585:42:1585:48 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1588:15:1588:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1588:15:1588:19 | SelfParam | &T | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1588:22:1588:26 | other | | file://:0:0:0:0 | & | +| main.rs:1588:22:1588:26 | other | &T | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1588:44:1590:9 | { ... } | | {EXTERNAL LOCATION} | bool | +| main.rs:1589:13:1589:16 | self | | file://:0:0:0:0 | & | +| main.rs:1589:13:1589:16 | self | &T | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1589:13:1589:18 | self.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1589:13:1589:29 | ... >= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1589:13:1589:50 | ... && ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1589:23:1589:27 | other | | file://:0:0:0:0 | & | +| main.rs:1589:23:1589:27 | other | &T | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1589:23:1589:29 | other.x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1589:34:1589:37 | self | | file://:0:0:0:0 | & | +| main.rs:1589:34:1589:37 | self | &T | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1589:34:1589:39 | self.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1589:34:1589:50 | ... >= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1589:44:1589:48 | other | | file://:0:0:0:0 | & | +| main.rs:1589:44:1589:48 | other | &T | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1589:44:1589:50 | other.y | | {EXTERNAL LOCATION} | i64 | +| main.rs:1596:13:1596:18 | i64_eq | | {EXTERNAL LOCATION} | bool | +| main.rs:1596:22:1596:35 | (...) | | {EXTERNAL LOCATION} | bool | +| main.rs:1596:23:1596:26 | 1i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1596:23:1596:34 | ... == ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1596:31:1596:34 | 2i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1597:13:1597:18 | i64_ne | | {EXTERNAL LOCATION} | bool | +| main.rs:1597:22:1597:35 | (...) | | {EXTERNAL LOCATION} | bool | +| main.rs:1597:23:1597:26 | 3i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1597:23:1597:34 | ... != ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1597:31:1597:34 | 4i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1598:13:1598:18 | i64_lt | | {EXTERNAL LOCATION} | bool | +| main.rs:1598:22:1598:34 | (...) | | {EXTERNAL LOCATION} | bool | +| main.rs:1598:23:1598:26 | 5i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1598:23:1598:33 | ... < ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1598:30:1598:33 | 6i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1599:13:1599:18 | i64_le | | {EXTERNAL LOCATION} | bool | +| main.rs:1599:22:1599:35 | (...) | | {EXTERNAL LOCATION} | bool | +| main.rs:1599:23:1599:26 | 7i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1599:23:1599:34 | ... <= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1599:31:1599:34 | 8i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1600:13:1600:18 | i64_gt | | {EXTERNAL LOCATION} | bool | +| main.rs:1600:22:1600:35 | (...) | | {EXTERNAL LOCATION} | bool | +| main.rs:1600:23:1600:26 | 9i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1600:23:1600:34 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1600:30:1600:34 | 10i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1601:13:1601:18 | i64_ge | | {EXTERNAL LOCATION} | bool | +| main.rs:1601:22:1601:37 | (...) | | {EXTERNAL LOCATION} | bool | +| main.rs:1601:23:1601:27 | 11i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1601:23:1601:36 | ... >= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1601:32:1601:36 | 12i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1604:13:1604:19 | i64_add | | {EXTERNAL LOCATION} | i64 | +| main.rs:1604:23:1604:27 | 13i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1604:23:1604:35 | ... + ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1604:31:1604:35 | 14i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1605:13:1605:19 | i64_sub | | {EXTERNAL LOCATION} | i64 | +| main.rs:1605:23:1605:27 | 15i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1605:23:1605:35 | ... - ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1605:31:1605:35 | 16i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1606:13:1606:19 | i64_mul | | {EXTERNAL LOCATION} | i64 | +| main.rs:1606:23:1606:27 | 17i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1606:23:1606:35 | ... * ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1606:31:1606:35 | 18i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1607:13:1607:19 | i64_div | | {EXTERNAL LOCATION} | i64 | +| main.rs:1607:23:1607:27 | 19i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1607:23:1607:35 | ... / ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1607:31:1607:35 | 20i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1608:13:1608:19 | i64_rem | | {EXTERNAL LOCATION} | i64 | +| main.rs:1608:23:1608:27 | 21i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1608:23:1608:35 | ... % ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1608:31:1608:35 | 22i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1611:13:1611:30 | mut i64_add_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1611:34:1611:38 | 23i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1612:9:1612:22 | i64_add_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1612:9:1612:31 | ... += ... | | file://:0:0:0:0 | () | +| main.rs:1612:27:1612:31 | 24i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1614:13:1614:30 | mut i64_sub_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1614:34:1614:38 | 25i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1615:9:1615:22 | i64_sub_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1615:9:1615:31 | ... -= ... | | file://:0:0:0:0 | () | +| main.rs:1615:27:1615:31 | 26i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1617:13:1617:30 | mut i64_mul_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1617:34:1617:38 | 27i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1618:9:1618:22 | i64_mul_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1618:9:1618:31 | ... *= ... | | file://:0:0:0:0 | () | +| main.rs:1618:27:1618:31 | 28i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1620:13:1620:30 | mut i64_div_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1620:34:1620:38 | 29i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1621:9:1621:22 | i64_div_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1621:9:1621:31 | ... /= ... | | file://:0:0:0:0 | () | +| main.rs:1621:27:1621:31 | 30i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1623:13:1623:30 | mut i64_rem_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1623:34:1623:38 | 31i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1624:9:1624:22 | i64_rem_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1624:9:1624:31 | ... %= ... | | file://:0:0:0:0 | () | +| main.rs:1624:27:1624:31 | 32i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1627:13:1627:22 | i64_bitand | | {EXTERNAL LOCATION} | i64 | +| main.rs:1627:26:1627:30 | 33i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1627:26:1627:38 | ... & ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1627:34:1627:38 | 34i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1628:13:1628:21 | i64_bitor | | {EXTERNAL LOCATION} | i64 | +| main.rs:1628:25:1628:29 | 35i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1628:25:1628:37 | ... \| ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1628:33:1628:37 | 36i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1629:13:1629:22 | i64_bitxor | | {EXTERNAL LOCATION} | i64 | +| main.rs:1629:26:1629:30 | 37i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1629:26:1629:38 | ... ^ ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1629:34:1629:38 | 38i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1630:13:1630:19 | i64_shl | | {EXTERNAL LOCATION} | i64 | +| main.rs:1630:23:1630:27 | 39i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1630:23:1630:36 | ... << ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1630:32:1630:36 | 40i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1631:13:1631:19 | i64_shr | | {EXTERNAL LOCATION} | i64 | +| main.rs:1631:23:1631:27 | 41i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1631:23:1631:36 | ... >> ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1631:32:1631:36 | 42i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1634:13:1634:33 | mut i64_bitand_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1634:37:1634:41 | 43i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1635:9:1635:25 | i64_bitand_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1635:9:1635:34 | ... &= ... | | file://:0:0:0:0 | () | +| main.rs:1635:30:1635:34 | 44i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1637:13:1637:32 | mut i64_bitor_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1637:36:1637:40 | 45i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1638:9:1638:24 | i64_bitor_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1638:9:1638:33 | ... \|= ... | | file://:0:0:0:0 | () | +| main.rs:1638:29:1638:33 | 46i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1640:13:1640:33 | mut i64_bitxor_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1640:37:1640:41 | 47i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1641:9:1641:25 | i64_bitxor_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1641:9:1641:34 | ... ^= ... | | file://:0:0:0:0 | () | +| main.rs:1641:30:1641:34 | 48i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1643:13:1643:30 | mut i64_shl_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1643:34:1643:38 | 49i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1644:9:1644:22 | i64_shl_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1644:9:1644:32 | ... <<= ... | | file://:0:0:0:0 | () | +| main.rs:1644:28:1644:32 | 50i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1646:13:1646:30 | mut i64_shr_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1646:34:1646:38 | 51i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1647:9:1647:22 | i64_shr_assign | | {EXTERNAL LOCATION} | i64 | +| main.rs:1647:9:1647:32 | ... >>= ... | | file://:0:0:0:0 | () | +| main.rs:1647:28:1647:32 | 52i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1649:13:1649:19 | i64_neg | | {EXTERNAL LOCATION} | i64 | +| main.rs:1649:23:1649:28 | - ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1649:24:1649:28 | 53i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1650:13:1650:19 | i64_not | | {EXTERNAL LOCATION} | i64 | +| main.rs:1650:23:1650:28 | ! ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1650:24:1650:28 | 54i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1653:13:1653:14 | v1 | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1653:18:1653:36 | Vec2 {...} | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1653:28:1653:28 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1653:28:1653:28 | 1 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1653:34:1653:34 | 2 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1653:34:1653:34 | 2 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1654:13:1654:14 | v2 | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1654:18:1654:36 | Vec2 {...} | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1654:28:1654:28 | 3 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1654:28:1654:28 | 3 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1654:34:1654:34 | 4 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1654:34:1654:34 | 4 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1657:13:1657:19 | vec2_eq | | {EXTERNAL LOCATION} | bool | +| main.rs:1657:23:1657:24 | v1 | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1657:23:1657:30 | ... == ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1657:29:1657:30 | v2 | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1658:13:1658:19 | vec2_ne | | {EXTERNAL LOCATION} | bool | +| main.rs:1658:23:1658:24 | v1 | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1658:23:1658:30 | ... != ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1658:29:1658:30 | v2 | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1659:13:1659:19 | vec2_lt | | {EXTERNAL LOCATION} | bool | +| main.rs:1659:23:1659:24 | v1 | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1659:23:1659:29 | ... < ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1659:28:1659:29 | v2 | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1660:13:1660:19 | vec2_le | | {EXTERNAL LOCATION} | bool | +| main.rs:1660:23:1660:24 | v1 | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1660:23:1660:30 | ... <= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1660:29:1660:30 | v2 | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1661:13:1661:19 | vec2_gt | | {EXTERNAL LOCATION} | bool | +| main.rs:1661:23:1661:24 | v1 | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1661:23:1661:29 | ... > ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1661:28:1661:29 | v2 | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1662:13:1662:19 | vec2_ge | | {EXTERNAL LOCATION} | bool | +| main.rs:1662:23:1662:24 | v1 | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1662:23:1662:30 | ... >= ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1662:29:1662:30 | v2 | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1665:13:1665:20 | vec2_add | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1665:24:1665:25 | v1 | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1665:24:1665:30 | ... + ... | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1665:29:1665:30 | v2 | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1666:13:1666:20 | vec2_sub | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1666:24:1666:25 | v1 | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1666:24:1666:30 | ... - ... | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1666:29:1666:30 | v2 | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1667:13:1667:20 | vec2_mul | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1667:24:1667:25 | v1 | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1667:24:1667:30 | ... * ... | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1667:29:1667:30 | v2 | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1668:13:1668:20 | vec2_div | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1668:24:1668:25 | v1 | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1668:24:1668:30 | ... / ... | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1668:29:1668:30 | v2 | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1669:13:1669:20 | vec2_rem | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1669:24:1669:25 | v1 | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1669:24:1669:30 | ... % ... | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1669:29:1669:30 | v2 | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1672:13:1672:31 | mut vec2_add_assign | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1672:35:1672:36 | v1 | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1673:9:1673:23 | vec2_add_assign | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1673:9:1673:29 | ... += ... | | file://:0:0:0:0 | () | +| main.rs:1673:28:1673:29 | v2 | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1675:13:1675:31 | mut vec2_sub_assign | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1675:35:1675:36 | v1 | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1676:9:1676:23 | vec2_sub_assign | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1676:9:1676:29 | ... -= ... | | file://:0:0:0:0 | () | +| main.rs:1676:28:1676:29 | v2 | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1678:13:1678:31 | mut vec2_mul_assign | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1678:35:1678:36 | v1 | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1679:9:1679:23 | vec2_mul_assign | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1679:9:1679:29 | ... *= ... | | file://:0:0:0:0 | () | +| main.rs:1679:28:1679:29 | v2 | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1681:13:1681:31 | mut vec2_div_assign | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1681:35:1681:36 | v1 | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1682:9:1682:23 | vec2_div_assign | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1682:9:1682:29 | ... /= ... | | file://:0:0:0:0 | () | +| main.rs:1682:28:1682:29 | v2 | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1684:13:1684:31 | mut vec2_rem_assign | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1684:35:1684:36 | v1 | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1685:9:1685:23 | vec2_rem_assign | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1685:9:1685:29 | ... %= ... | | file://:0:0:0:0 | () | +| main.rs:1685:28:1685:29 | v2 | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1688:13:1688:23 | vec2_bitand | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1688:27:1688:28 | v1 | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1688:27:1688:33 | ... & ... | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1688:32:1688:33 | v2 | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1689:13:1689:22 | vec2_bitor | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1689:26:1689:27 | v1 | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1689:26:1689:32 | ... \| ... | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1689:31:1689:32 | v2 | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1690:13:1690:23 | vec2_bitxor | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1690:27:1690:28 | v1 | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1690:27:1690:33 | ... ^ ... | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1690:32:1690:33 | v2 | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1691:13:1691:20 | vec2_shl | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1691:24:1691:25 | v1 | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1691:24:1691:33 | ... << ... | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1691:30:1691:33 | 1u32 | | {EXTERNAL LOCATION} | u32 | +| main.rs:1692:13:1692:20 | vec2_shr | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1692:24:1692:25 | v1 | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1692:24:1692:33 | ... >> ... | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1692:30:1692:33 | 1u32 | | {EXTERNAL LOCATION} | u32 | +| main.rs:1695:13:1695:34 | mut vec2_bitand_assign | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1695:38:1695:39 | v1 | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1696:9:1696:26 | vec2_bitand_assign | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1696:9:1696:32 | ... &= ... | | file://:0:0:0:0 | () | +| main.rs:1696:31:1696:32 | v2 | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1698:13:1698:33 | mut vec2_bitor_assign | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1698:37:1698:38 | v1 | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1699:9:1699:25 | vec2_bitor_assign | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1699:9:1699:31 | ... \|= ... | | file://:0:0:0:0 | () | +| main.rs:1699:30:1699:31 | v2 | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1701:13:1701:34 | mut vec2_bitxor_assign | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1701:38:1701:39 | v1 | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1702:9:1702:26 | vec2_bitxor_assign | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1702:9:1702:32 | ... ^= ... | | file://:0:0:0:0 | () | +| main.rs:1702:31:1702:32 | v2 | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1704:13:1704:31 | mut vec2_shl_assign | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1704:35:1704:36 | v1 | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1705:9:1705:23 | vec2_shl_assign | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1705:9:1705:32 | ... <<= ... | | file://:0:0:0:0 | () | +| main.rs:1705:29:1705:32 | 1u32 | | {EXTERNAL LOCATION} | u32 | +| main.rs:1707:13:1707:31 | mut vec2_shr_assign | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1707:35:1707:36 | v1 | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1708:9:1708:23 | vec2_shr_assign | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1708:9:1708:32 | ... >>= ... | | file://:0:0:0:0 | () | +| main.rs:1708:29:1708:32 | 1u32 | | {EXTERNAL LOCATION} | u32 | +| main.rs:1711:13:1711:20 | vec2_neg | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1711:24:1711:26 | - ... | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1711:25:1711:26 | v1 | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1712:13:1712:20 | vec2_not | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1712:24:1712:26 | ! ... | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1712:25:1712:26 | v1 | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1715:13:1715:24 | default_vec2 | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1715:28:1715:45 | ...::default(...) | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1716:13:1716:26 | vec2_zero_plus | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1716:30:1716:48 | Vec2 {...} | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1716:30:1716:63 | ... + ... | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1716:40:1716:40 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1716:40:1716:40 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1716:46:1716:46 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1716:46:1716:46 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1716:52:1716:63 | default_vec2 | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1726:18:1726:21 | SelfParam | | main.rs:1723:5:1723:14 | S1 | +| main.rs:1729:25:1731:5 | { ... } | | main.rs:1723:5:1723:14 | S1 | +| main.rs:1730:9:1730:10 | S1 | | main.rs:1723:5:1723:14 | S1 | +| main.rs:1733:41:1735:5 | { ... } | | {EXTERNAL LOCATION} | trait Future | +| main.rs:1733:41:1735:5 | { ... } | | main.rs:1733:16:1733:39 | ImplTraitTypeRepr | +| main.rs:1733:41:1735:5 | { ... } | Output | main.rs:1723:5:1723:14 | S1 | +| main.rs:1734:9:1734:20 | { ... } | | {EXTERNAL LOCATION} | trait Future | +| main.rs:1734:9:1734:20 | { ... } | | main.rs:1733:16:1733:39 | ImplTraitTypeRepr | +| main.rs:1734:9:1734:20 | { ... } | Output | main.rs:1723:5:1723:14 | S1 | +| main.rs:1734:17:1734:18 | S1 | | main.rs:1723:5:1723:14 | S1 | +| main.rs:1743:13:1743:42 | SelfParam | | {EXTERNAL LOCATION} | Pin | +| main.rs:1743:13:1743:42 | SelfParam | Ptr | file://:0:0:0:0 | & | +| main.rs:1743:13:1743:42 | SelfParam | Ptr.&T | main.rs:1737:5:1737:14 | S2 | +| main.rs:1744:13:1744:15 | _cx | | file://:0:0:0:0 | & | +| main.rs:1744:13:1744:15 | _cx | &T | {EXTERNAL LOCATION} | Context | +| main.rs:1745:44:1747:9 | { ... } | | {EXTERNAL LOCATION} | Poll | +| main.rs:1745:44:1747:9 | { ... } | T | main.rs:1723:5:1723:14 | S1 | +| main.rs:1746:13:1746:38 | ...::Ready(...) | | {EXTERNAL LOCATION} | Poll | +| main.rs:1746:13:1746:38 | ...::Ready(...) | T | main.rs:1723:5:1723:14 | S1 | +| main.rs:1746:36:1746:37 | S1 | | main.rs:1723:5:1723:14 | S1 | +| main.rs:1750:41:1752:5 | { ... } | | main.rs:1737:5:1737:14 | S2 | +| main.rs:1750:41:1752:5 | { ... } | | main.rs:1750:16:1750:39 | ImplTraitTypeRepr | +| main.rs:1751:9:1751:10 | S2 | | main.rs:1737:5:1737:14 | S2 | +| main.rs:1751:9:1751:10 | S2 | | main.rs:1750:16:1750:39 | ImplTraitTypeRepr | +| main.rs:1755:9:1755:12 | f1(...) | | {EXTERNAL LOCATION} | trait Future | +| main.rs:1755:9:1755:12 | f1(...) | Output | main.rs:1723:5:1723:14 | S1 | +| main.rs:1755:9:1755:18 | await ... | | main.rs:1723:5:1723:14 | S1 | +| main.rs:1756:9:1756:12 | f2(...) | | main.rs:1733:16:1733:39 | ImplTraitTypeRepr | +| main.rs:1756:9:1756:18 | await ... | | main.rs:1723:5:1723:14 | S1 | +| main.rs:1757:9:1757:12 | f3(...) | | main.rs:1750:16:1750:39 | ImplTraitTypeRepr | +| main.rs:1757:9:1757:18 | await ... | | main.rs:1723:5:1723:14 | S1 | +| main.rs:1758:9:1758:10 | S2 | | main.rs:1737:5:1737:14 | S2 | +| main.rs:1758:9:1758:16 | await S2 | | main.rs:1723:5:1723:14 | S1 | +| main.rs:1759:13:1759:13 | b | | {EXTERNAL LOCATION} | trait Future | +| main.rs:1759:13:1759:13 | b | Output | main.rs:1723:5:1723:14 | S1 | +| main.rs:1759:17:1759:28 | { ... } | | {EXTERNAL LOCATION} | trait Future | +| main.rs:1759:17:1759:28 | { ... } | Output | main.rs:1723:5:1723:14 | S1 | +| main.rs:1759:25:1759:26 | S1 | | main.rs:1723:5:1723:14 | S1 | +| main.rs:1760:9:1760:9 | b | | {EXTERNAL LOCATION} | trait Future | +| main.rs:1760:9:1760:9 | b | Output | main.rs:1723:5:1723:14 | S1 | +| main.rs:1760:9:1760:15 | await b | | main.rs:1723:5:1723:14 | S1 | +| main.rs:1769:15:1769:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1769:15:1769:19 | SelfParam | &T | main.rs:1768:5:1770:5 | Self [trait Trait1] | +| main.rs:1773:15:1773:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1773:15:1773:19 | SelfParam | &T | main.rs:1772:5:1774:5 | Self [trait Trait2] | +| main.rs:1777:15:1777:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1777:15:1777:19 | SelfParam | &T | main.rs:1765:5:1765:14 | S1 | +| main.rs:1781:15:1781:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1781:15:1781:19 | SelfParam | &T | main.rs:1765:5:1765:14 | S1 | +| main.rs:1784:37:1786:5 | { ... } | | main.rs:1765:5:1765:14 | S1 | +| main.rs:1784:37:1786:5 | { ... } | | main.rs:1784:16:1784:35 | ImplTraitTypeRepr | +| main.rs:1785:9:1785:10 | S1 | | main.rs:1765:5:1765:14 | S1 | +| main.rs:1785:9:1785:10 | S1 | | main.rs:1784:16:1784:35 | ImplTraitTypeRepr | +| main.rs:1789:18:1789:22 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1789:18:1789:22 | SelfParam | &T | main.rs:1788:5:1790:5 | Self [trait MyTrait] | +| main.rs:1793:18:1793:22 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1793:18:1793:22 | SelfParam | &T | main.rs:1765:5:1765:14 | S1 | +| main.rs:1793:31:1795:9 | { ... } | | main.rs:1766:5:1766:14 | S2 | +| main.rs:1794:13:1794:14 | S2 | | main.rs:1766:5:1766:14 | S2 | +| main.rs:1798:45:1800:5 | { ... } | | main.rs:1765:5:1765:14 | S1 | +| main.rs:1798:45:1800:5 | { ... } | | main.rs:1798:28:1798:43 | ImplTraitTypeRepr | +| main.rs:1799:9:1799:10 | S1 | | main.rs:1765:5:1765:14 | S1 | +| main.rs:1799:9:1799:10 | S1 | | main.rs:1798:28:1798:43 | ImplTraitTypeRepr | +| main.rs:1802:41:1802:41 | t | | main.rs:1802:26:1802:38 | B | +| main.rs:1802:52:1804:5 | { ... } | | main.rs:1802:23:1802:23 | A | +| main.rs:1803:9:1803:9 | t | | main.rs:1802:26:1802:38 | B | +| main.rs:1803:9:1803:17 | t.get_a() | | main.rs:1802:23:1802:23 | A | +| main.rs:1806:26:1806:26 | t | | main.rs:1806:29:1806:43 | ImplTraitTypeRepr | +| main.rs:1806:51:1808:5 | { ... } | | main.rs:1806:23:1806:23 | A | +| main.rs:1807:9:1807:9 | t | | main.rs:1806:29:1806:43 | ImplTraitTypeRepr | +| main.rs:1807:9:1807:17 | t.get_a() | | main.rs:1806:23:1806:23 | A | +| main.rs:1811:13:1811:13 | x | | main.rs:1784:16:1784:35 | ImplTraitTypeRepr | +| main.rs:1811:17:1811:20 | f1(...) | | main.rs:1784:16:1784:35 | ImplTraitTypeRepr | +| main.rs:1812:9:1812:9 | x | | main.rs:1784:16:1784:35 | ImplTraitTypeRepr | +| main.rs:1813:9:1813:9 | x | | main.rs:1784:16:1784:35 | ImplTraitTypeRepr | +| main.rs:1814:13:1814:13 | a | | main.rs:1798:28:1798:43 | ImplTraitTypeRepr | +| main.rs:1814:17:1814:32 | get_a_my_trait(...) | | main.rs:1798:28:1798:43 | ImplTraitTypeRepr | +| main.rs:1815:13:1815:13 | b | | main.rs:1766:5:1766:14 | S2 | +| main.rs:1815:17:1815:33 | uses_my_trait1(...) | | main.rs:1766:5:1766:14 | S2 | +| main.rs:1815:32:1815:32 | a | | main.rs:1798:28:1798:43 | ImplTraitTypeRepr | +| main.rs:1816:13:1816:13 | a | | main.rs:1798:28:1798:43 | ImplTraitTypeRepr | +| main.rs:1816:17:1816:32 | get_a_my_trait(...) | | main.rs:1798:28:1798:43 | ImplTraitTypeRepr | +| main.rs:1817:13:1817:13 | c | | main.rs:1766:5:1766:14 | S2 | +| main.rs:1817:17:1817:33 | uses_my_trait2(...) | | main.rs:1766:5:1766:14 | S2 | +| main.rs:1817:32:1817:32 | a | | main.rs:1798:28:1798:43 | ImplTraitTypeRepr | +| main.rs:1818:13:1818:13 | d | | main.rs:1766:5:1766:14 | S2 | +| main.rs:1818:17:1818:34 | uses_my_trait2(...) | | main.rs:1766:5:1766:14 | S2 | +| main.rs:1818:32:1818:33 | S1 | | main.rs:1765:5:1765:14 | S1 | +| main.rs:1829:16:1829:20 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1829:16:1829:20 | SelfParam | &T | main.rs:1825:5:1826:13 | S | +| main.rs:1829:31:1831:9 | { ... } | | main.rs:1825:5:1826:13 | S | +| main.rs:1830:13:1830:13 | S | | main.rs:1825:5:1826:13 | S | +| main.rs:1840:26:1842:9 | { ... } | | main.rs:1834:5:1837:5 | MyVec | +| main.rs:1840:26:1842:9 | { ... } | T | main.rs:1839:10:1839:10 | T | +| main.rs:1841:13:1841:38 | MyVec {...} | | main.rs:1834:5:1837:5 | MyVec | +| main.rs:1841:13:1841:38 | MyVec {...} | T | main.rs:1839:10:1839:10 | T | +| main.rs:1841:27:1841:36 | ...::new(...) | | {EXTERNAL LOCATION} | Vec | +| main.rs:1841:27:1841:36 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:1841:27:1841:36 | ...::new(...) | T | main.rs:1839:10:1839:10 | T | +| main.rs:1844:17:1844:25 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1844:17:1844:25 | SelfParam | &T | main.rs:1834:5:1837:5 | MyVec | +| main.rs:1844:17:1844:25 | SelfParam | &T.T | main.rs:1839:10:1839:10 | T | +| main.rs:1844:28:1844:32 | value | | main.rs:1839:10:1839:10 | T | +| main.rs:1845:13:1845:16 | self | | file://:0:0:0:0 | & | +| main.rs:1845:13:1845:16 | self | &T | main.rs:1834:5:1837:5 | MyVec | +| main.rs:1845:13:1845:16 | self | &T.T | main.rs:1839:10:1839:10 | T | +| main.rs:1845:13:1845:21 | self.data | | {EXTERNAL LOCATION} | Vec | +| main.rs:1845:13:1845:21 | self.data | A | {EXTERNAL LOCATION} | Global | +| main.rs:1845:13:1845:21 | self.data | T | main.rs:1839:10:1839:10 | T | +| main.rs:1845:28:1845:32 | value | | main.rs:1839:10:1839:10 | T | +| main.rs:1853:18:1853:22 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1853:18:1853:22 | SelfParam | &T | main.rs:1834:5:1837:5 | MyVec | +| main.rs:1853:18:1853:22 | SelfParam | &T.T | main.rs:1849:10:1849:10 | T | +| main.rs:1853:25:1853:29 | index | | {EXTERNAL LOCATION} | usize | +| main.rs:1853:56:1855:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1853:56:1855:9 | { ... } | &T | main.rs:1849:10:1849:10 | T | +| main.rs:1854:13:1854:29 | &... | | file://:0:0:0:0 | & | +| main.rs:1854:13:1854:29 | &... | &T | main.rs:1849:10:1849:10 | T | +| main.rs:1854:14:1854:17 | self | | file://:0:0:0:0 | & | +| main.rs:1854:14:1854:17 | self | &T | main.rs:1834:5:1837:5 | MyVec | +| main.rs:1854:14:1854:17 | self | &T.T | main.rs:1849:10:1849:10 | T | +| main.rs:1854:14:1854:22 | self.data | | {EXTERNAL LOCATION} | Vec | +| main.rs:1854:14:1854:22 | self.data | A | {EXTERNAL LOCATION} | Global | +| main.rs:1854:14:1854:22 | self.data | T | main.rs:1849:10:1849:10 | T | +| main.rs:1854:14:1854:29 | ...[index] | | main.rs:1849:10:1849:10 | T | +| main.rs:1854:24:1854:28 | index | | {EXTERNAL LOCATION} | usize | +| main.rs:1858:22:1858:26 | slice | | file://:0:0:0:0 | & | +| main.rs:1858:22:1858:26 | slice | &T | file://:0:0:0:0 | [] | +| main.rs:1858:22:1858:26 | slice | &T.[T] | main.rs:1825:5:1826:13 | S | +| main.rs:1859:13:1859:13 | x | | main.rs:1825:5:1826:13 | S | +| main.rs:1859:17:1859:21 | slice | | file://:0:0:0:0 | & | +| main.rs:1859:17:1859:21 | slice | &T | file://:0:0:0:0 | [] | +| main.rs:1859:17:1859:21 | slice | &T.[T] | main.rs:1825:5:1826:13 | S | +| main.rs:1859:17:1859:24 | slice[0] | | main.rs:1825:5:1826:13 | S | +| main.rs:1859:17:1859:30 | ... .foo() | | main.rs:1825:5:1826:13 | S | +| main.rs:1859:23:1859:23 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1863:13:1863:19 | mut vec | | main.rs:1834:5:1837:5 | MyVec | +| main.rs:1863:13:1863:19 | mut vec | T | main.rs:1825:5:1826:13 | S | +| main.rs:1863:23:1863:34 | ...::new(...) | | main.rs:1834:5:1837:5 | MyVec | +| main.rs:1863:23:1863:34 | ...::new(...) | T | main.rs:1825:5:1826:13 | S | +| main.rs:1864:9:1864:11 | vec | | main.rs:1834:5:1837:5 | MyVec | +| main.rs:1864:9:1864:11 | vec | T | main.rs:1825:5:1826:13 | S | +| main.rs:1864:18:1864:18 | S | | main.rs:1825:5:1826:13 | S | +| main.rs:1865:9:1865:11 | vec | | main.rs:1834:5:1837:5 | MyVec | +| main.rs:1865:9:1865:11 | vec | T | main.rs:1825:5:1826:13 | S | +| main.rs:1865:13:1865:13 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1867:13:1867:14 | xs | | file://:0:0:0:0 | [] | +| main.rs:1867:13:1867:14 | xs | | file://:0:0:0:0 | [] | +| main.rs:1867:13:1867:14 | xs | [T;...] | main.rs:1825:5:1826:13 | S | +| main.rs:1867:13:1867:14 | xs | [T] | main.rs:1825:5:1826:13 | S | +| main.rs:1867:21:1867:21 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1867:26:1867:28 | [...] | | file://:0:0:0:0 | [] | +| main.rs:1867:26:1867:28 | [...] | | file://:0:0:0:0 | [] | +| main.rs:1867:26:1867:28 | [...] | [T;...] | main.rs:1825:5:1826:13 | S | +| main.rs:1867:26:1867:28 | [...] | [T] | main.rs:1825:5:1826:13 | S | +| main.rs:1867:27:1867:27 | S | | main.rs:1825:5:1826:13 | S | +| main.rs:1868:13:1868:13 | x | | main.rs:1825:5:1826:13 | S | +| main.rs:1868:17:1868:18 | xs | | file://:0:0:0:0 | [] | +| main.rs:1868:17:1868:18 | xs | | file://:0:0:0:0 | [] | +| main.rs:1868:17:1868:18 | xs | [T;...] | main.rs:1825:5:1826:13 | S | +| main.rs:1868:17:1868:18 | xs | [T] | main.rs:1825:5:1826:13 | S | +| main.rs:1868:17:1868:21 | xs[0] | | main.rs:1825:5:1826:13 | S | +| main.rs:1868:17:1868:27 | ... .foo() | | main.rs:1825:5:1826:13 | S | +| main.rs:1868:20:1868:20 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1870:23:1870:25 | &xs | | file://:0:0:0:0 | & | +| main.rs:1870:23:1870:25 | &xs | &T | file://:0:0:0:0 | [] | +| main.rs:1870:23:1870:25 | &xs | &T | file://:0:0:0:0 | [] | +| main.rs:1870:23:1870:25 | &xs | &T.[T;...] | main.rs:1825:5:1826:13 | S | +| main.rs:1870:23:1870:25 | &xs | &T.[T] | main.rs:1825:5:1826:13 | S | +| main.rs:1870:24:1870:25 | xs | | file://:0:0:0:0 | [] | +| main.rs:1870:24:1870:25 | xs | | file://:0:0:0:0 | [] | +| main.rs:1870:24:1870:25 | xs | [T;...] | main.rs:1825:5:1826:13 | S | +| main.rs:1870:24:1870:25 | xs | [T] | main.rs:1825:5:1826:13 | S | +| main.rs:1876:25:1876:35 | "Hello, {}" | | {EXTERNAL LOCATION} | str | +| main.rs:1876:25:1876:45 | ...::format(...) | | {EXTERNAL LOCATION} | String | +| main.rs:1876:25:1876:45 | { ... } | | {EXTERNAL LOCATION} | String | +| main.rs:1876:38:1876:45 | "World!" | | {EXTERNAL LOCATION} | str | +| main.rs:1882:19:1882:23 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1882:19:1882:23 | SelfParam | &T | main.rs:1881:5:1883:5 | Self [trait MyAdd] | +| main.rs:1882:26:1882:30 | value | | main.rs:1881:17:1881:17 | T | +| main.rs:1887:19:1887:23 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1887:19:1887:23 | SelfParam | &T | {EXTERNAL LOCATION} | i64 | +| main.rs:1887:26:1887:30 | value | | {EXTERNAL LOCATION} | i64 | +| main.rs:1887:46:1889:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:1888:13:1888:17 | value | | {EXTERNAL LOCATION} | i64 | +| main.rs:1894:19:1894:23 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1894:19:1894:23 | SelfParam | &T | {EXTERNAL LOCATION} | i64 | +| main.rs:1894:26:1894:30 | value | | file://:0:0:0:0 | & | +| main.rs:1894:26:1894:30 | value | &T | {EXTERNAL LOCATION} | i64 | +| main.rs:1894:26:1894:30 | value | &T | file://:0:0:0:0 | & | +| main.rs:1894:47:1896:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:1894:47:1896:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1895:13:1895:18 | * ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1895:13:1895:18 | * ... | | file://:0:0:0:0 | & | +| main.rs:1895:14:1895:18 | value | | file://:0:0:0:0 | & | +| main.rs:1895:14:1895:18 | value | &T | {EXTERNAL LOCATION} | i64 | +| main.rs:1895:14:1895:18 | value | &T | file://:0:0:0:0 | & | +| main.rs:1901:19:1901:23 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1901:19:1901:23 | SelfParam | &T | {EXTERNAL LOCATION} | i64 | +| main.rs:1901:26:1901:30 | value | | {EXTERNAL LOCATION} | bool | +| main.rs:1901:47:1907:9 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:1901:47:1907:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:1902:13:1906:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i32 | +| main.rs:1902:13:1906:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i64 | +| main.rs:1902:16:1902:20 | value | | {EXTERNAL LOCATION} | bool | +| main.rs:1902:22:1904:13 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:1902:22:1904:13 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:1903:17:1903:17 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1903:17:1903:17 | 1 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1904:20:1906:13 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:1904:20:1906:13 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:1905:17:1905:17 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1905:17:1905:17 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1911:13:1911:13 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:1911:13:1911:13 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1911:22:1911:23 | 73 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1911:22:1911:23 | 73 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1912:9:1912:9 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:1912:9:1912:9 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1912:9:1912:22 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:1912:18:1912:21 | 5i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1913:9:1913:9 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:1913:9:1913:9 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1913:9:1913:23 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:1913:18:1913:22 | &5i64 | | file://:0:0:0:0 | & | +| main.rs:1913:18:1913:22 | &5i64 | &T | {EXTERNAL LOCATION} | i64 | +| main.rs:1913:19:1913:22 | 5i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1914:9:1914:9 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:1914:9:1914:9 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1914:9:1914:22 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:1914:18:1914:21 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:1922:5:1922:20 | ...::f(...) | | main.rs:72:5:72:21 | Foo | +| main.rs:1923:5:1923:60 | ...::g(...) | | main.rs:72:5:72:21 | Foo | +| main.rs:1923:20:1923:38 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | +| main.rs:1923:41:1923:59 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | +| main.rs:1939:5:1939:15 | ...::f(...) | | {EXTERNAL LOCATION} | trait Future | testFailures From 845179665cb2ec50f12b17f1fcb98214a891ccca Mon Sep 17 00:00:00 2001 From: Simon Friis Vindum Date: Wed, 18 Jun 2025 19:55:58 +0200 Subject: [PATCH 3/7] Rust: Add type inference test with borrow of unknown argument --- .../test/library-tests/type-inference/main.rs | 5 + .../type-inference/type-inference.expected | 477 +++++++++--------- 2 files changed, 247 insertions(+), 235 deletions(-) diff --git a/rust/ql/test/library-tests/type-inference/main.rs b/rust/ql/test/library-tests/type-inference/main.rs index 0b6d2b754a19..fef7184c87bf 100644 --- a/rust/ql/test/library-tests/type-inference/main.rs +++ b/rust/ql/test/library-tests/type-inference/main.rs @@ -1714,6 +1714,11 @@ mod overloadable_operators { // Here the type of `default_vec2` must be inferred from the `+` call. let default_vec2 = Default::default(); // $ type=default_vec2:Vec2 let vec2_zero_plus = Vec2 { x: 0, y: 0 } + default_vec2; // $ method=Vec2::add + + // Here the type of `default_vec2` must be inferred from the `==` call + // and the type of the borrowed second argument is unknown at the call. + let default_vec2 = Default::default(); // $ MISSING: type=default_vec2:Vec2 + let vec2_zero_plus = Vec2 { x: 0, y: 0 } == default_vec2; // $ method=Vec2::eq } } 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 e7f2d2b10c1b..328a2ec71986 100644 --- a/rust/ql/test/library-tests/type-inference/type-inference.expected +++ b/rust/ql/test/library-tests/type-inference/type-inference.expected @@ -2774,240 +2774,247 @@ inferType | main.rs:1716:46:1716:46 | 0 | | {EXTERNAL LOCATION} | i32 | | main.rs:1716:46:1716:46 | 0 | | {EXTERNAL LOCATION} | i64 | | main.rs:1716:52:1716:63 | default_vec2 | | main.rs:1356:5:1361:5 | Vec2 | -| main.rs:1726:18:1726:21 | SelfParam | | main.rs:1723:5:1723:14 | S1 | -| main.rs:1729:25:1731:5 | { ... } | | main.rs:1723:5:1723:14 | S1 | -| main.rs:1730:9:1730:10 | S1 | | main.rs:1723:5:1723:14 | S1 | -| main.rs:1733:41:1735:5 | { ... } | | {EXTERNAL LOCATION} | trait Future | -| main.rs:1733:41:1735:5 | { ... } | | main.rs:1733:16:1733:39 | ImplTraitTypeRepr | -| main.rs:1733:41:1735:5 | { ... } | Output | main.rs:1723:5:1723:14 | S1 | -| main.rs:1734:9:1734:20 | { ... } | | {EXTERNAL LOCATION} | trait Future | -| main.rs:1734:9:1734:20 | { ... } | | main.rs:1733:16:1733:39 | ImplTraitTypeRepr | -| main.rs:1734:9:1734:20 | { ... } | Output | main.rs:1723:5:1723:14 | S1 | -| main.rs:1734:17:1734:18 | S1 | | main.rs:1723:5:1723:14 | S1 | -| main.rs:1743:13:1743:42 | SelfParam | | {EXTERNAL LOCATION} | Pin | -| main.rs:1743:13:1743:42 | SelfParam | Ptr | file://:0:0:0:0 | & | -| main.rs:1743:13:1743:42 | SelfParam | Ptr.&T | main.rs:1737:5:1737:14 | S2 | -| main.rs:1744:13:1744:15 | _cx | | file://:0:0:0:0 | & | -| main.rs:1744:13:1744:15 | _cx | &T | {EXTERNAL LOCATION} | Context | -| main.rs:1745:44:1747:9 | { ... } | | {EXTERNAL LOCATION} | Poll | -| main.rs:1745:44:1747:9 | { ... } | T | main.rs:1723:5:1723:14 | S1 | -| main.rs:1746:13:1746:38 | ...::Ready(...) | | {EXTERNAL LOCATION} | Poll | -| main.rs:1746:13:1746:38 | ...::Ready(...) | T | main.rs:1723:5:1723:14 | S1 | -| main.rs:1746:36:1746:37 | S1 | | main.rs:1723:5:1723:14 | S1 | -| main.rs:1750:41:1752:5 | { ... } | | main.rs:1737:5:1737:14 | S2 | -| main.rs:1750:41:1752:5 | { ... } | | main.rs:1750:16:1750:39 | ImplTraitTypeRepr | -| main.rs:1751:9:1751:10 | S2 | | main.rs:1737:5:1737:14 | S2 | -| main.rs:1751:9:1751:10 | S2 | | main.rs:1750:16:1750:39 | ImplTraitTypeRepr | -| main.rs:1755:9:1755:12 | f1(...) | | {EXTERNAL LOCATION} | trait Future | -| main.rs:1755:9:1755:12 | f1(...) | Output | main.rs:1723:5:1723:14 | S1 | -| main.rs:1755:9:1755:18 | await ... | | main.rs:1723:5:1723:14 | S1 | -| main.rs:1756:9:1756:12 | f2(...) | | main.rs:1733:16:1733:39 | ImplTraitTypeRepr | -| main.rs:1756:9:1756:18 | await ... | | main.rs:1723:5:1723:14 | S1 | -| main.rs:1757:9:1757:12 | f3(...) | | main.rs:1750:16:1750:39 | ImplTraitTypeRepr | -| main.rs:1757:9:1757:18 | await ... | | main.rs:1723:5:1723:14 | S1 | -| main.rs:1758:9:1758:10 | S2 | | main.rs:1737:5:1737:14 | S2 | -| main.rs:1758:9:1758:16 | await S2 | | main.rs:1723:5:1723:14 | S1 | -| main.rs:1759:13:1759:13 | b | | {EXTERNAL LOCATION} | trait Future | -| main.rs:1759:13:1759:13 | b | Output | main.rs:1723:5:1723:14 | S1 | -| main.rs:1759:17:1759:28 | { ... } | | {EXTERNAL LOCATION} | trait Future | -| main.rs:1759:17:1759:28 | { ... } | Output | main.rs:1723:5:1723:14 | S1 | -| main.rs:1759:25:1759:26 | S1 | | main.rs:1723:5:1723:14 | S1 | -| main.rs:1760:9:1760:9 | b | | {EXTERNAL LOCATION} | trait Future | -| main.rs:1760:9:1760:9 | b | Output | main.rs:1723:5:1723:14 | S1 | -| main.rs:1760:9:1760:15 | await b | | main.rs:1723:5:1723:14 | S1 | -| main.rs:1769:15:1769:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1769:15:1769:19 | SelfParam | &T | main.rs:1768:5:1770:5 | Self [trait Trait1] | -| main.rs:1773:15:1773:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1773:15:1773:19 | SelfParam | &T | main.rs:1772:5:1774:5 | Self [trait Trait2] | -| main.rs:1777:15:1777:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1777:15:1777:19 | SelfParam | &T | main.rs:1765:5:1765:14 | S1 | -| main.rs:1781:15:1781:19 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1781:15:1781:19 | SelfParam | &T | main.rs:1765:5:1765:14 | S1 | -| main.rs:1784:37:1786:5 | { ... } | | main.rs:1765:5:1765:14 | S1 | -| main.rs:1784:37:1786:5 | { ... } | | main.rs:1784:16:1784:35 | ImplTraitTypeRepr | -| main.rs:1785:9:1785:10 | S1 | | main.rs:1765:5:1765:14 | S1 | -| main.rs:1785:9:1785:10 | S1 | | main.rs:1784:16:1784:35 | ImplTraitTypeRepr | -| main.rs:1789:18:1789:22 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1789:18:1789:22 | SelfParam | &T | main.rs:1788:5:1790:5 | Self [trait MyTrait] | -| main.rs:1793:18:1793:22 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1793:18:1793:22 | SelfParam | &T | main.rs:1765:5:1765:14 | S1 | -| main.rs:1793:31:1795:9 | { ... } | | main.rs:1766:5:1766:14 | S2 | -| main.rs:1794:13:1794:14 | S2 | | main.rs:1766:5:1766:14 | S2 | -| main.rs:1798:45:1800:5 | { ... } | | main.rs:1765:5:1765:14 | S1 | -| main.rs:1798:45:1800:5 | { ... } | | main.rs:1798:28:1798:43 | ImplTraitTypeRepr | -| main.rs:1799:9:1799:10 | S1 | | main.rs:1765:5:1765:14 | S1 | -| main.rs:1799:9:1799:10 | S1 | | main.rs:1798:28:1798:43 | ImplTraitTypeRepr | -| main.rs:1802:41:1802:41 | t | | main.rs:1802:26:1802:38 | B | -| main.rs:1802:52:1804:5 | { ... } | | main.rs:1802:23:1802:23 | A | -| main.rs:1803:9:1803:9 | t | | main.rs:1802:26:1802:38 | B | -| main.rs:1803:9:1803:17 | t.get_a() | | main.rs:1802:23:1802:23 | A | -| main.rs:1806:26:1806:26 | t | | main.rs:1806:29:1806:43 | ImplTraitTypeRepr | -| main.rs:1806:51:1808:5 | { ... } | | main.rs:1806:23:1806:23 | A | -| main.rs:1807:9:1807:9 | t | | main.rs:1806:29:1806:43 | ImplTraitTypeRepr | -| main.rs:1807:9:1807:17 | t.get_a() | | main.rs:1806:23:1806:23 | A | -| main.rs:1811:13:1811:13 | x | | main.rs:1784:16:1784:35 | ImplTraitTypeRepr | -| main.rs:1811:17:1811:20 | f1(...) | | main.rs:1784:16:1784:35 | ImplTraitTypeRepr | -| main.rs:1812:9:1812:9 | x | | main.rs:1784:16:1784:35 | ImplTraitTypeRepr | -| main.rs:1813:9:1813:9 | x | | main.rs:1784:16:1784:35 | ImplTraitTypeRepr | -| main.rs:1814:13:1814:13 | a | | main.rs:1798:28:1798:43 | ImplTraitTypeRepr | -| main.rs:1814:17:1814:32 | get_a_my_trait(...) | | main.rs:1798:28:1798:43 | ImplTraitTypeRepr | -| main.rs:1815:13:1815:13 | b | | main.rs:1766:5:1766:14 | S2 | -| main.rs:1815:17:1815:33 | uses_my_trait1(...) | | main.rs:1766:5:1766:14 | S2 | -| main.rs:1815:32:1815:32 | a | | main.rs:1798:28:1798:43 | ImplTraitTypeRepr | -| main.rs:1816:13:1816:13 | a | | main.rs:1798:28:1798:43 | ImplTraitTypeRepr | -| main.rs:1816:17:1816:32 | get_a_my_trait(...) | | main.rs:1798:28:1798:43 | ImplTraitTypeRepr | -| main.rs:1817:13:1817:13 | c | | main.rs:1766:5:1766:14 | S2 | -| main.rs:1817:17:1817:33 | uses_my_trait2(...) | | main.rs:1766:5:1766:14 | S2 | -| main.rs:1817:32:1817:32 | a | | main.rs:1798:28:1798:43 | ImplTraitTypeRepr | -| main.rs:1818:13:1818:13 | d | | main.rs:1766:5:1766:14 | S2 | -| main.rs:1818:17:1818:34 | uses_my_trait2(...) | | main.rs:1766:5:1766:14 | S2 | -| main.rs:1818:32:1818:33 | S1 | | main.rs:1765:5:1765:14 | S1 | -| main.rs:1829:16:1829:20 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1829:16:1829:20 | SelfParam | &T | main.rs:1825:5:1826:13 | S | -| main.rs:1829:31:1831:9 | { ... } | | main.rs:1825:5:1826:13 | S | -| main.rs:1830:13:1830:13 | S | | main.rs:1825:5:1826:13 | S | -| main.rs:1840:26:1842:9 | { ... } | | main.rs:1834:5:1837:5 | MyVec | -| main.rs:1840:26:1842:9 | { ... } | T | main.rs:1839:10:1839:10 | T | -| main.rs:1841:13:1841:38 | MyVec {...} | | main.rs:1834:5:1837:5 | MyVec | -| main.rs:1841:13:1841:38 | MyVec {...} | T | main.rs:1839:10:1839:10 | T | -| main.rs:1841:27:1841:36 | ...::new(...) | | {EXTERNAL LOCATION} | Vec | -| main.rs:1841:27:1841:36 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | -| main.rs:1841:27:1841:36 | ...::new(...) | T | main.rs:1839:10:1839:10 | T | -| main.rs:1844:17:1844:25 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1844:17:1844:25 | SelfParam | &T | main.rs:1834:5:1837:5 | MyVec | -| main.rs:1844:17:1844:25 | SelfParam | &T.T | main.rs:1839:10:1839:10 | T | -| main.rs:1844:28:1844:32 | value | | main.rs:1839:10:1839:10 | T | -| main.rs:1845:13:1845:16 | self | | file://:0:0:0:0 | & | -| main.rs:1845:13:1845:16 | self | &T | main.rs:1834:5:1837:5 | MyVec | -| main.rs:1845:13:1845:16 | self | &T.T | main.rs:1839:10:1839:10 | T | -| main.rs:1845:13:1845:21 | self.data | | {EXTERNAL LOCATION} | Vec | -| main.rs:1845:13:1845:21 | self.data | A | {EXTERNAL LOCATION} | Global | -| main.rs:1845:13:1845:21 | self.data | T | main.rs:1839:10:1839:10 | T | -| main.rs:1845:28:1845:32 | value | | main.rs:1839:10:1839:10 | T | -| main.rs:1853:18:1853:22 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1853:18:1853:22 | SelfParam | &T | main.rs:1834:5:1837:5 | MyVec | -| main.rs:1853:18:1853:22 | SelfParam | &T.T | main.rs:1849:10:1849:10 | T | -| main.rs:1853:25:1853:29 | index | | {EXTERNAL LOCATION} | usize | -| main.rs:1853:56:1855:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1853:56:1855:9 | { ... } | &T | main.rs:1849:10:1849:10 | T | -| main.rs:1854:13:1854:29 | &... | | file://:0:0:0:0 | & | -| main.rs:1854:13:1854:29 | &... | &T | main.rs:1849:10:1849:10 | T | -| main.rs:1854:14:1854:17 | self | | file://:0:0:0:0 | & | -| main.rs:1854:14:1854:17 | self | &T | main.rs:1834:5:1837:5 | MyVec | -| main.rs:1854:14:1854:17 | self | &T.T | main.rs:1849:10:1849:10 | T | -| main.rs:1854:14:1854:22 | self.data | | {EXTERNAL LOCATION} | Vec | -| main.rs:1854:14:1854:22 | self.data | A | {EXTERNAL LOCATION} | Global | -| main.rs:1854:14:1854:22 | self.data | T | main.rs:1849:10:1849:10 | T | -| main.rs:1854:14:1854:29 | ...[index] | | main.rs:1849:10:1849:10 | T | -| main.rs:1854:24:1854:28 | index | | {EXTERNAL LOCATION} | usize | -| main.rs:1858:22:1858:26 | slice | | file://:0:0:0:0 | & | -| main.rs:1858:22:1858:26 | slice | &T | file://:0:0:0:0 | [] | -| main.rs:1858:22:1858:26 | slice | &T.[T] | main.rs:1825:5:1826:13 | S | -| main.rs:1859:13:1859:13 | x | | main.rs:1825:5:1826:13 | S | -| main.rs:1859:17:1859:21 | slice | | file://:0:0:0:0 | & | -| main.rs:1859:17:1859:21 | slice | &T | file://:0:0:0:0 | [] | -| main.rs:1859:17:1859:21 | slice | &T.[T] | main.rs:1825:5:1826:13 | S | -| main.rs:1859:17:1859:24 | slice[0] | | main.rs:1825:5:1826:13 | S | -| main.rs:1859:17:1859:30 | ... .foo() | | main.rs:1825:5:1826:13 | S | -| main.rs:1859:23:1859:23 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1863:13:1863:19 | mut vec | | main.rs:1834:5:1837:5 | MyVec | -| main.rs:1863:13:1863:19 | mut vec | T | main.rs:1825:5:1826:13 | S | -| main.rs:1863:23:1863:34 | ...::new(...) | | main.rs:1834:5:1837:5 | MyVec | -| main.rs:1863:23:1863:34 | ...::new(...) | T | main.rs:1825:5:1826:13 | S | -| main.rs:1864:9:1864:11 | vec | | main.rs:1834:5:1837:5 | MyVec | -| main.rs:1864:9:1864:11 | vec | T | main.rs:1825:5:1826:13 | S | -| main.rs:1864:18:1864:18 | S | | main.rs:1825:5:1826:13 | S | -| main.rs:1865:9:1865:11 | vec | | main.rs:1834:5:1837:5 | MyVec | -| main.rs:1865:9:1865:11 | vec | T | main.rs:1825:5:1826:13 | S | -| main.rs:1865:13:1865:13 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1867:13:1867:14 | xs | | file://:0:0:0:0 | [] | -| main.rs:1867:13:1867:14 | xs | | file://:0:0:0:0 | [] | -| main.rs:1867:13:1867:14 | xs | [T;...] | main.rs:1825:5:1826:13 | S | -| main.rs:1867:13:1867:14 | xs | [T] | main.rs:1825:5:1826:13 | S | -| main.rs:1867:21:1867:21 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1867:26:1867:28 | [...] | | file://:0:0:0:0 | [] | -| main.rs:1867:26:1867:28 | [...] | | file://:0:0:0:0 | [] | -| main.rs:1867:26:1867:28 | [...] | [T;...] | main.rs:1825:5:1826:13 | S | -| main.rs:1867:26:1867:28 | [...] | [T] | main.rs:1825:5:1826:13 | S | -| main.rs:1867:27:1867:27 | S | | main.rs:1825:5:1826:13 | S | -| main.rs:1868:13:1868:13 | x | | main.rs:1825:5:1826:13 | S | -| main.rs:1868:17:1868:18 | xs | | file://:0:0:0:0 | [] | -| main.rs:1868:17:1868:18 | xs | | file://:0:0:0:0 | [] | -| main.rs:1868:17:1868:18 | xs | [T;...] | main.rs:1825:5:1826:13 | S | -| main.rs:1868:17:1868:18 | xs | [T] | main.rs:1825:5:1826:13 | S | -| main.rs:1868:17:1868:21 | xs[0] | | main.rs:1825:5:1826:13 | S | -| main.rs:1868:17:1868:27 | ... .foo() | | main.rs:1825:5:1826:13 | S | -| main.rs:1868:20:1868:20 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1870:23:1870:25 | &xs | | file://:0:0:0:0 | & | -| main.rs:1870:23:1870:25 | &xs | &T | file://:0:0:0:0 | [] | -| main.rs:1870:23:1870:25 | &xs | &T | file://:0:0:0:0 | [] | -| main.rs:1870:23:1870:25 | &xs | &T.[T;...] | main.rs:1825:5:1826:13 | S | -| main.rs:1870:23:1870:25 | &xs | &T.[T] | main.rs:1825:5:1826:13 | S | -| main.rs:1870:24:1870:25 | xs | | file://:0:0:0:0 | [] | -| main.rs:1870:24:1870:25 | xs | | file://:0:0:0:0 | [] | -| main.rs:1870:24:1870:25 | xs | [T;...] | main.rs:1825:5:1826:13 | S | -| main.rs:1870:24:1870:25 | xs | [T] | main.rs:1825:5:1826:13 | S | -| main.rs:1876:25:1876:35 | "Hello, {}" | | {EXTERNAL LOCATION} | str | -| main.rs:1876:25:1876:45 | ...::format(...) | | {EXTERNAL LOCATION} | String | -| main.rs:1876:25:1876:45 | { ... } | | {EXTERNAL LOCATION} | String | -| main.rs:1876:38:1876:45 | "World!" | | {EXTERNAL LOCATION} | str | -| main.rs:1882:19:1882:23 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1882:19:1882:23 | SelfParam | &T | main.rs:1881:5:1883:5 | Self [trait MyAdd] | -| main.rs:1882:26:1882:30 | value | | main.rs:1881:17:1881:17 | T | +| main.rs:1721:13:1721:26 | vec2_zero_plus | | {EXTERNAL LOCATION} | bool | +| main.rs:1721:30:1721:48 | Vec2 {...} | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1721:30:1721:64 | ... == ... | | {EXTERNAL LOCATION} | bool | +| main.rs:1721:40:1721:40 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1721:40:1721:40 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1721:46:1721:46 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1721:46:1721:46 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1731:18:1731:21 | SelfParam | | main.rs:1728:5:1728:14 | S1 | +| main.rs:1734:25:1736:5 | { ... } | | main.rs:1728:5:1728:14 | S1 | +| main.rs:1735:9:1735:10 | S1 | | main.rs:1728:5:1728:14 | S1 | +| main.rs:1738:41:1740:5 | { ... } | | {EXTERNAL LOCATION} | trait Future | +| main.rs:1738:41:1740:5 | { ... } | | main.rs:1738:16:1738:39 | ImplTraitTypeRepr | +| main.rs:1738:41:1740:5 | { ... } | Output | main.rs:1728:5:1728:14 | S1 | +| main.rs:1739:9:1739:20 | { ... } | | {EXTERNAL LOCATION} | trait Future | +| main.rs:1739:9:1739:20 | { ... } | | main.rs:1738:16:1738:39 | ImplTraitTypeRepr | +| main.rs:1739:9:1739:20 | { ... } | Output | main.rs:1728:5:1728:14 | S1 | +| main.rs:1739:17:1739:18 | S1 | | main.rs:1728:5:1728:14 | S1 | +| main.rs:1748:13:1748:42 | SelfParam | | {EXTERNAL LOCATION} | Pin | +| main.rs:1748:13:1748:42 | SelfParam | Ptr | file://:0:0:0:0 | & | +| main.rs:1748:13:1748:42 | SelfParam | Ptr.&T | main.rs:1742:5:1742:14 | S2 | +| main.rs:1749:13:1749:15 | _cx | | file://:0:0:0:0 | & | +| main.rs:1749:13:1749:15 | _cx | &T | {EXTERNAL LOCATION} | Context | +| main.rs:1750:44:1752:9 | { ... } | | {EXTERNAL LOCATION} | Poll | +| main.rs:1750:44:1752:9 | { ... } | T | main.rs:1728:5:1728:14 | S1 | +| main.rs:1751:13:1751:38 | ...::Ready(...) | | {EXTERNAL LOCATION} | Poll | +| main.rs:1751:13:1751:38 | ...::Ready(...) | T | main.rs:1728:5:1728:14 | S1 | +| main.rs:1751:36:1751:37 | S1 | | main.rs:1728:5:1728:14 | S1 | +| main.rs:1755:41:1757:5 | { ... } | | main.rs:1742:5:1742:14 | S2 | +| main.rs:1755:41:1757:5 | { ... } | | main.rs:1755:16:1755:39 | ImplTraitTypeRepr | +| main.rs:1756:9:1756:10 | S2 | | main.rs:1742:5:1742:14 | S2 | +| main.rs:1756:9:1756:10 | S2 | | main.rs:1755:16:1755:39 | ImplTraitTypeRepr | +| main.rs:1760:9:1760:12 | f1(...) | | {EXTERNAL LOCATION} | trait Future | +| main.rs:1760:9:1760:12 | f1(...) | Output | main.rs:1728:5:1728:14 | S1 | +| main.rs:1760:9:1760:18 | await ... | | main.rs:1728:5:1728:14 | S1 | +| main.rs:1761:9:1761:12 | f2(...) | | main.rs:1738:16:1738:39 | ImplTraitTypeRepr | +| main.rs:1761:9:1761:18 | await ... | | main.rs:1728:5:1728:14 | S1 | +| main.rs:1762:9:1762:12 | f3(...) | | main.rs:1755:16:1755:39 | ImplTraitTypeRepr | +| main.rs:1762:9:1762:18 | await ... | | main.rs:1728:5:1728:14 | S1 | +| main.rs:1763:9:1763:10 | S2 | | main.rs:1742:5:1742:14 | S2 | +| main.rs:1763:9:1763:16 | await S2 | | main.rs:1728:5:1728:14 | S1 | +| main.rs:1764:13:1764:13 | b | | {EXTERNAL LOCATION} | trait Future | +| main.rs:1764:13:1764:13 | b | Output | main.rs:1728:5:1728:14 | S1 | +| main.rs:1764:17:1764:28 | { ... } | | {EXTERNAL LOCATION} | trait Future | +| main.rs:1764:17:1764:28 | { ... } | Output | main.rs:1728:5:1728:14 | S1 | +| main.rs:1764:25:1764:26 | S1 | | main.rs:1728:5:1728:14 | S1 | +| main.rs:1765:9:1765:9 | b | | {EXTERNAL LOCATION} | trait Future | +| main.rs:1765:9:1765:9 | b | Output | main.rs:1728:5:1728:14 | S1 | +| main.rs:1765:9:1765:15 | await b | | main.rs:1728:5:1728:14 | S1 | +| main.rs:1774:15:1774:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1774:15:1774:19 | SelfParam | &T | main.rs:1773:5:1775:5 | Self [trait Trait1] | +| main.rs:1778:15:1778:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1778:15:1778:19 | SelfParam | &T | main.rs:1777:5:1779:5 | Self [trait Trait2] | +| main.rs:1782:15:1782:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1782:15:1782:19 | SelfParam | &T | main.rs:1770:5:1770:14 | S1 | +| main.rs:1786:15:1786:19 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1786:15:1786:19 | SelfParam | &T | main.rs:1770:5:1770:14 | S1 | +| main.rs:1789:37:1791:5 | { ... } | | main.rs:1770:5:1770:14 | S1 | +| main.rs:1789:37:1791:5 | { ... } | | main.rs:1789:16:1789:35 | ImplTraitTypeRepr | +| main.rs:1790:9:1790:10 | S1 | | main.rs:1770:5:1770:14 | S1 | +| main.rs:1790:9:1790:10 | S1 | | main.rs:1789:16:1789:35 | ImplTraitTypeRepr | +| main.rs:1794:18:1794:22 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1794:18:1794:22 | SelfParam | &T | main.rs:1793:5:1795:5 | Self [trait MyTrait] | +| main.rs:1798:18:1798:22 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1798:18:1798:22 | SelfParam | &T | main.rs:1770:5:1770:14 | S1 | +| main.rs:1798:31:1800:9 | { ... } | | main.rs:1771:5:1771:14 | S2 | +| main.rs:1799:13:1799:14 | S2 | | main.rs:1771:5:1771:14 | S2 | +| main.rs:1803:45:1805:5 | { ... } | | main.rs:1770:5:1770:14 | S1 | +| main.rs:1803:45:1805:5 | { ... } | | main.rs:1803:28:1803:43 | ImplTraitTypeRepr | +| main.rs:1804:9:1804:10 | S1 | | main.rs:1770:5:1770:14 | S1 | +| main.rs:1804:9:1804:10 | S1 | | main.rs:1803:28:1803:43 | ImplTraitTypeRepr | +| main.rs:1807:41:1807:41 | t | | main.rs:1807:26:1807:38 | B | +| main.rs:1807:52:1809:5 | { ... } | | main.rs:1807:23:1807:23 | A | +| main.rs:1808:9:1808:9 | t | | main.rs:1807:26:1807:38 | B | +| main.rs:1808:9:1808:17 | t.get_a() | | main.rs:1807:23:1807:23 | A | +| main.rs:1811:26:1811:26 | t | | main.rs:1811:29:1811:43 | ImplTraitTypeRepr | +| main.rs:1811:51:1813:5 | { ... } | | main.rs:1811:23:1811:23 | A | +| main.rs:1812:9:1812:9 | t | | main.rs:1811:29:1811:43 | ImplTraitTypeRepr | +| main.rs:1812:9:1812:17 | t.get_a() | | main.rs:1811:23:1811:23 | A | +| main.rs:1816:13:1816:13 | x | | main.rs:1789:16:1789:35 | ImplTraitTypeRepr | +| main.rs:1816:17:1816:20 | f1(...) | | main.rs:1789:16:1789:35 | ImplTraitTypeRepr | +| main.rs:1817:9:1817:9 | x | | main.rs:1789:16:1789:35 | ImplTraitTypeRepr | +| main.rs:1818:9:1818:9 | x | | main.rs:1789:16:1789:35 | ImplTraitTypeRepr | +| main.rs:1819:13:1819:13 | a | | main.rs:1803:28:1803:43 | ImplTraitTypeRepr | +| main.rs:1819:17:1819:32 | get_a_my_trait(...) | | main.rs:1803:28:1803:43 | ImplTraitTypeRepr | +| main.rs:1820:13:1820:13 | b | | main.rs:1771:5:1771:14 | S2 | +| main.rs:1820:17:1820:33 | uses_my_trait1(...) | | main.rs:1771:5:1771:14 | S2 | +| main.rs:1820:32:1820:32 | a | | main.rs:1803:28:1803:43 | ImplTraitTypeRepr | +| main.rs:1821:13:1821:13 | a | | main.rs:1803:28:1803:43 | ImplTraitTypeRepr | +| main.rs:1821:17:1821:32 | get_a_my_trait(...) | | main.rs:1803:28:1803:43 | ImplTraitTypeRepr | +| main.rs:1822:13:1822:13 | c | | main.rs:1771:5:1771:14 | S2 | +| main.rs:1822:17:1822:33 | uses_my_trait2(...) | | main.rs:1771:5:1771:14 | S2 | +| main.rs:1822:32:1822:32 | a | | main.rs:1803:28:1803:43 | ImplTraitTypeRepr | +| main.rs:1823:13:1823:13 | d | | main.rs:1771:5:1771:14 | S2 | +| main.rs:1823:17:1823:34 | uses_my_trait2(...) | | main.rs:1771:5:1771:14 | S2 | +| main.rs:1823:32:1823:33 | S1 | | main.rs:1770:5:1770:14 | S1 | +| main.rs:1834:16:1834:20 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1834:16:1834:20 | SelfParam | &T | main.rs:1830:5:1831:13 | S | +| main.rs:1834:31:1836:9 | { ... } | | main.rs:1830:5:1831:13 | S | +| main.rs:1835:13:1835:13 | S | | main.rs:1830:5:1831:13 | S | +| main.rs:1845:26:1847:9 | { ... } | | main.rs:1839:5:1842:5 | MyVec | +| main.rs:1845:26:1847:9 | { ... } | T | main.rs:1844:10:1844:10 | T | +| main.rs:1846:13:1846:38 | MyVec {...} | | main.rs:1839:5:1842:5 | MyVec | +| main.rs:1846:13:1846:38 | MyVec {...} | T | main.rs:1844:10:1844:10 | T | +| main.rs:1846:27:1846:36 | ...::new(...) | | {EXTERNAL LOCATION} | Vec | +| main.rs:1846:27:1846:36 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | +| main.rs:1846:27:1846:36 | ...::new(...) | T | main.rs:1844:10:1844:10 | T | +| main.rs:1849:17:1849:25 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1849:17:1849:25 | SelfParam | &T | main.rs:1839:5:1842:5 | MyVec | +| main.rs:1849:17:1849:25 | SelfParam | &T.T | main.rs:1844:10:1844:10 | T | +| main.rs:1849:28:1849:32 | value | | main.rs:1844:10:1844:10 | T | +| main.rs:1850:13:1850:16 | self | | file://:0:0:0:0 | & | +| main.rs:1850:13:1850:16 | self | &T | main.rs:1839:5:1842:5 | MyVec | +| main.rs:1850:13:1850:16 | self | &T.T | main.rs:1844:10:1844:10 | T | +| main.rs:1850:13:1850:21 | self.data | | {EXTERNAL LOCATION} | Vec | +| main.rs:1850:13:1850:21 | self.data | A | {EXTERNAL LOCATION} | Global | +| main.rs:1850:13:1850:21 | self.data | T | main.rs:1844:10:1844:10 | T | +| main.rs:1850:28:1850:32 | value | | main.rs:1844:10:1844:10 | T | +| main.rs:1858:18:1858:22 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1858:18:1858:22 | SelfParam | &T | main.rs:1839:5:1842:5 | MyVec | +| main.rs:1858:18:1858:22 | SelfParam | &T.T | main.rs:1854:10:1854:10 | T | +| main.rs:1858:25:1858:29 | index | | {EXTERNAL LOCATION} | usize | +| main.rs:1858:56:1860:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1858:56:1860:9 | { ... } | &T | main.rs:1854:10:1854:10 | T | +| main.rs:1859:13:1859:29 | &... | | file://:0:0:0:0 | & | +| main.rs:1859:13:1859:29 | &... | &T | main.rs:1854:10:1854:10 | T | +| main.rs:1859:14:1859:17 | self | | file://:0:0:0:0 | & | +| main.rs:1859:14:1859:17 | self | &T | main.rs:1839:5:1842:5 | MyVec | +| main.rs:1859:14:1859:17 | self | &T.T | main.rs:1854:10:1854:10 | T | +| main.rs:1859:14:1859:22 | self.data | | {EXTERNAL LOCATION} | Vec | +| main.rs:1859:14:1859:22 | self.data | A | {EXTERNAL LOCATION} | Global | +| main.rs:1859:14:1859:22 | self.data | T | main.rs:1854:10:1854:10 | T | +| main.rs:1859:14:1859:29 | ...[index] | | main.rs:1854:10:1854:10 | T | +| main.rs:1859:24:1859:28 | index | | {EXTERNAL LOCATION} | usize | +| main.rs:1863:22:1863:26 | slice | | file://:0:0:0:0 | & | +| main.rs:1863:22:1863:26 | slice | &T | file://:0:0:0:0 | [] | +| main.rs:1863:22:1863:26 | slice | &T.[T] | main.rs:1830:5:1831:13 | S | +| main.rs:1864:13:1864:13 | x | | main.rs:1830:5:1831:13 | S | +| main.rs:1864:17:1864:21 | slice | | file://:0:0:0:0 | & | +| main.rs:1864:17:1864:21 | slice | &T | file://:0:0:0:0 | [] | +| main.rs:1864:17:1864:21 | slice | &T.[T] | main.rs:1830:5:1831:13 | S | +| main.rs:1864:17:1864:24 | slice[0] | | main.rs:1830:5:1831:13 | S | +| main.rs:1864:17:1864:30 | ... .foo() | | main.rs:1830:5:1831:13 | S | +| main.rs:1864:23:1864:23 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1868:13:1868:19 | mut vec | | main.rs:1839:5:1842:5 | MyVec | +| main.rs:1868:13:1868:19 | mut vec | T | main.rs:1830:5:1831:13 | S | +| main.rs:1868:23:1868:34 | ...::new(...) | | main.rs:1839:5:1842:5 | MyVec | +| main.rs:1868:23:1868:34 | ...::new(...) | T | main.rs:1830:5:1831:13 | S | +| main.rs:1869:9:1869:11 | vec | | main.rs:1839:5:1842:5 | MyVec | +| main.rs:1869:9:1869:11 | vec | T | main.rs:1830:5:1831:13 | S | +| main.rs:1869:18:1869:18 | S | | main.rs:1830:5:1831:13 | S | +| main.rs:1870:9:1870:11 | vec | | main.rs:1839:5:1842:5 | MyVec | +| main.rs:1870:9:1870:11 | vec | T | main.rs:1830:5:1831:13 | S | +| main.rs:1870:13:1870:13 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1872:13:1872:14 | xs | | file://:0:0:0:0 | [] | +| main.rs:1872:13:1872:14 | xs | | file://:0:0:0:0 | [] | +| main.rs:1872:13:1872:14 | xs | [T;...] | main.rs:1830:5:1831:13 | S | +| main.rs:1872:13:1872:14 | xs | [T] | main.rs:1830:5:1831:13 | S | +| main.rs:1872:21:1872:21 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1872:26:1872:28 | [...] | | file://:0:0:0:0 | [] | +| main.rs:1872:26:1872:28 | [...] | | file://:0:0:0:0 | [] | +| main.rs:1872:26:1872:28 | [...] | [T;...] | main.rs:1830:5:1831:13 | S | +| main.rs:1872:26:1872:28 | [...] | [T] | main.rs:1830:5:1831:13 | S | +| main.rs:1872:27:1872:27 | S | | main.rs:1830:5:1831:13 | S | +| main.rs:1873:13:1873:13 | x | | main.rs:1830:5:1831:13 | S | +| main.rs:1873:17:1873:18 | xs | | file://:0:0:0:0 | [] | +| main.rs:1873:17:1873:18 | xs | | file://:0:0:0:0 | [] | +| main.rs:1873:17:1873:18 | xs | [T;...] | main.rs:1830:5:1831:13 | S | +| main.rs:1873:17:1873:18 | xs | [T] | main.rs:1830:5:1831:13 | S | +| main.rs:1873:17:1873:21 | xs[0] | | main.rs:1830:5:1831:13 | S | +| main.rs:1873:17:1873:27 | ... .foo() | | main.rs:1830:5:1831:13 | S | +| main.rs:1873:20:1873:20 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1875:23:1875:25 | &xs | | file://:0:0:0:0 | & | +| main.rs:1875:23:1875:25 | &xs | &T | file://:0:0:0:0 | [] | +| main.rs:1875:23:1875:25 | &xs | &T | file://:0:0:0:0 | [] | +| main.rs:1875:23:1875:25 | &xs | &T.[T;...] | main.rs:1830:5:1831:13 | S | +| main.rs:1875:23:1875:25 | &xs | &T.[T] | main.rs:1830:5:1831:13 | S | +| main.rs:1875:24:1875:25 | xs | | file://:0:0:0:0 | [] | +| main.rs:1875:24:1875:25 | xs | | file://:0:0:0:0 | [] | +| main.rs:1875:24:1875:25 | xs | [T;...] | main.rs:1830:5:1831:13 | S | +| main.rs:1875:24:1875:25 | xs | [T] | main.rs:1830:5:1831:13 | S | +| main.rs:1881:25:1881:35 | "Hello, {}" | | {EXTERNAL LOCATION} | str | +| main.rs:1881:25:1881:45 | ...::format(...) | | {EXTERNAL LOCATION} | String | +| main.rs:1881:25:1881:45 | { ... } | | {EXTERNAL LOCATION} | String | +| main.rs:1881:38:1881:45 | "World!" | | {EXTERNAL LOCATION} | str | | main.rs:1887:19:1887:23 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1887:19:1887:23 | SelfParam | &T | {EXTERNAL LOCATION} | i64 | -| main.rs:1887:26:1887:30 | value | | {EXTERNAL LOCATION} | i64 | -| main.rs:1887:46:1889:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:1888:13:1888:17 | value | | {EXTERNAL LOCATION} | i64 | -| main.rs:1894:19:1894:23 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1894:19:1894:23 | SelfParam | &T | {EXTERNAL LOCATION} | i64 | -| main.rs:1894:26:1894:30 | value | | file://:0:0:0:0 | & | -| main.rs:1894:26:1894:30 | value | &T | {EXTERNAL LOCATION} | i64 | -| main.rs:1894:26:1894:30 | value | &T | file://:0:0:0:0 | & | -| main.rs:1894:47:1896:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:1894:47:1896:9 | { ... } | | file://:0:0:0:0 | & | -| main.rs:1895:13:1895:18 | * ... | | {EXTERNAL LOCATION} | i64 | -| main.rs:1895:13:1895:18 | * ... | | file://:0:0:0:0 | & | -| main.rs:1895:14:1895:18 | value | | file://:0:0:0:0 | & | -| main.rs:1895:14:1895:18 | value | &T | {EXTERNAL LOCATION} | i64 | -| main.rs:1895:14:1895:18 | value | &T | file://:0:0:0:0 | & | -| main.rs:1901:19:1901:23 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1901:19:1901:23 | SelfParam | &T | {EXTERNAL LOCATION} | i64 | -| main.rs:1901:26:1901:30 | value | | {EXTERNAL LOCATION} | bool | -| main.rs:1901:47:1907:9 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:1901:47:1907:9 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:1902:13:1906:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i32 | -| main.rs:1902:13:1906:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i64 | -| main.rs:1902:16:1902:20 | value | | {EXTERNAL LOCATION} | bool | -| main.rs:1902:22:1904:13 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:1902:22:1904:13 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:1903:17:1903:17 | 1 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1903:17:1903:17 | 1 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1904:20:1906:13 | { ... } | | {EXTERNAL LOCATION} | i32 | -| main.rs:1904:20:1906:13 | { ... } | | {EXTERNAL LOCATION} | i64 | -| main.rs:1905:17:1905:17 | 0 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1905:17:1905:17 | 0 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1911:13:1911:13 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:1911:13:1911:13 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1911:22:1911:23 | 73 | | {EXTERNAL LOCATION} | i32 | -| main.rs:1911:22:1911:23 | 73 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1912:9:1912:9 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:1912:9:1912:9 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1912:9:1912:22 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:1912:18:1912:21 | 5i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1913:9:1913:9 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:1913:9:1913:9 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1913:9:1913:23 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:1913:18:1913:22 | &5i64 | | file://:0:0:0:0 | & | -| main.rs:1913:18:1913:22 | &5i64 | &T | {EXTERNAL LOCATION} | i64 | -| main.rs:1913:19:1913:22 | 5i64 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1914:9:1914:9 | x | | {EXTERNAL LOCATION} | i32 | -| main.rs:1914:9:1914:9 | x | | {EXTERNAL LOCATION} | i64 | -| main.rs:1914:9:1914:22 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | -| main.rs:1914:18:1914:21 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:1922:5:1922:20 | ...::f(...) | | main.rs:72:5:72:21 | Foo | -| main.rs:1923:5:1923:60 | ...::g(...) | | main.rs:72:5:72:21 | Foo | -| main.rs:1923:20:1923:38 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | -| main.rs:1923:41:1923:59 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | -| main.rs:1939:5:1939:15 | ...::f(...) | | {EXTERNAL LOCATION} | trait Future | +| main.rs:1887:19:1887:23 | SelfParam | &T | main.rs:1886:5:1888:5 | Self [trait MyAdd] | +| main.rs:1887:26:1887:30 | value | | main.rs:1886:17:1886:17 | T | +| main.rs:1892:19:1892:23 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1892:19:1892:23 | SelfParam | &T | {EXTERNAL LOCATION} | i64 | +| main.rs:1892:26:1892:30 | value | | {EXTERNAL LOCATION} | i64 | +| main.rs:1892:46:1894:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:1893:13:1893:17 | value | | {EXTERNAL LOCATION} | i64 | +| main.rs:1899:19:1899:23 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1899:19:1899:23 | SelfParam | &T | {EXTERNAL LOCATION} | i64 | +| main.rs:1899:26:1899:30 | value | | file://:0:0:0:0 | & | +| main.rs:1899:26:1899:30 | value | &T | {EXTERNAL LOCATION} | i64 | +| main.rs:1899:26:1899:30 | value | &T | file://:0:0:0:0 | & | +| main.rs:1899:47:1901:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:1899:47:1901:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1900:13:1900:18 | * ... | | {EXTERNAL LOCATION} | i64 | +| main.rs:1900:13:1900:18 | * ... | | file://:0:0:0:0 | & | +| main.rs:1900:14:1900:18 | value | | file://:0:0:0:0 | & | +| main.rs:1900:14:1900:18 | value | &T | {EXTERNAL LOCATION} | i64 | +| main.rs:1900:14:1900:18 | value | &T | file://:0:0:0:0 | & | +| main.rs:1906:19:1906:23 | SelfParam | | file://:0:0:0:0 | & | +| main.rs:1906:19:1906:23 | SelfParam | &T | {EXTERNAL LOCATION} | i64 | +| main.rs:1906:26:1906:30 | value | | {EXTERNAL LOCATION} | bool | +| main.rs:1906:47:1912:9 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:1906:47:1912:9 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:1907:13:1911:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i32 | +| main.rs:1907:13:1911:13 | if value {...} else {...} | | {EXTERNAL LOCATION} | i64 | +| main.rs:1907:16:1907:20 | value | | {EXTERNAL LOCATION} | bool | +| main.rs:1907:22:1909:13 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:1907:22:1909:13 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:1908:17:1908:17 | 1 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1908:17:1908:17 | 1 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1909:20:1911:13 | { ... } | | {EXTERNAL LOCATION} | i32 | +| main.rs:1909:20:1911:13 | { ... } | | {EXTERNAL LOCATION} | i64 | +| main.rs:1910:17:1910:17 | 0 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1910:17:1910:17 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1916:13:1916:13 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:1916:13:1916:13 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1916:22:1916:23 | 73 | | {EXTERNAL LOCATION} | i32 | +| main.rs:1916:22:1916:23 | 73 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1917:9:1917:9 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:1917:9:1917:9 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1917:9:1917:22 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:1917:18:1917:21 | 5i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1918:9:1918:9 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:1918:9:1918:9 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1918:9:1918:23 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:1918:18:1918:22 | &5i64 | | file://:0:0:0:0 | & | +| main.rs:1918:18:1918:22 | &5i64 | &T | {EXTERNAL LOCATION} | i64 | +| main.rs:1918:19:1918:22 | 5i64 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1919:9:1919:9 | x | | {EXTERNAL LOCATION} | i32 | +| main.rs:1919:9:1919:9 | x | | {EXTERNAL LOCATION} | i64 | +| main.rs:1919:9:1919:22 | x.my_add(...) | | {EXTERNAL LOCATION} | i64 | +| main.rs:1919:18:1919:21 | true | | {EXTERNAL LOCATION} | bool | +| main.rs:1927:5:1927:20 | ...::f(...) | | main.rs:72:5:72:21 | Foo | +| main.rs:1928:5:1928:60 | ...::g(...) | | main.rs:72:5:72:21 | Foo | +| main.rs:1928:20:1928:38 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | +| main.rs:1928:41:1928:59 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo | +| main.rs:1944:5:1944:15 | ...::f(...) | | {EXTERNAL LOCATION} | trait Future | testFailures From 7d536a3c80af2925e62f7d7dcf502d49a5e847c4 Mon Sep 17 00:00:00 2001 From: Simon Friis Vindum Date: Thu, 19 Jun 2025 14:57:52 +0200 Subject: [PATCH 4/7] Rust: When resolving methods on reference also consider the reference itself --- .../codeql/rust/internal/TypeInference.qll | 2 -- .../type-inference/dereference.rs | 2 +- .../test/library-tests/type-inference/main.rs | 6 +++--- .../type-inference/type-inference.expected | 20 +++++++++++++++++++ 4 files changed, 24 insertions(+), 6 deletions(-) diff --git a/rust/ql/lib/codeql/rust/internal/TypeInference.qll b/rust/ql/lib/codeql/rust/internal/TypeInference.qll index 34fce3082396..73c18b86cd0c 100644 --- a/rust/ql/lib/codeql/rust/internal/TypeInference.qll +++ b/rust/ql/lib/codeql/rust/internal/TypeInference.qll @@ -1141,8 +1141,6 @@ final class MethodCall extends Call { ( path0.isCons(TRefTypeParameter(), path) or - not path0.isCons(TRefTypeParameter(), _) and - not (path0.isEmpty() and result = TRefType()) and path = path0 ) | diff --git a/rust/ql/test/library-tests/type-inference/dereference.rs b/rust/ql/test/library-tests/type-inference/dereference.rs index 8ceb8ec78de7..df0018cbf205 100644 --- a/rust/ql/test/library-tests/type-inference/dereference.rs +++ b/rust/ql/test/library-tests/type-inference/dereference.rs @@ -58,7 +58,7 @@ fn explicit_polymorphic_dereference() { fn explicit_ref_dereference() { // Explicit dereference with type parameter let e1 = &'a'; - let _f1 = e1.deref(); // $ MISSING: method=deref type=_f1:&T.char + let _f1 = e1.deref(); // $ method=deref MISSING: type=_f1:&T.char // Explicit dereference with type parameter let e2 = &'a'; diff --git a/rust/ql/test/library-tests/type-inference/main.rs b/rust/ql/test/library-tests/type-inference/main.rs index fef7184c87bf..a6f98ffebc46 100644 --- a/rust/ql/test/library-tests/type-inference/main.rs +++ b/rust/ql/test/library-tests/type-inference/main.rs @@ -1157,14 +1157,14 @@ mod method_call_type_conversion { // https://doc.rust-lang.org/std/string/struct.String.html#deref. let u = x9.parse::(); // $ method=parse type=u:T.u32 - let my_thing = &MyInt { a: 37 }; + let my_thing = &MyInt { a: 37 }; // $ SPURIOUS: type=my_thing:&T.&T.MyInt // implicit borrow of a `&` - let a = my_thing.method_on_borrow(); // $ MISSING: method=MyInt::method_on_borrow + let a = my_thing.method_on_borrow(); // $ method=MyInt::method_on_borrow println!("{:?}", a); // no implicit borrow let my_thing = &MyInt { a: 38 }; - let a = my_thing.method_not_on_borrow(); // $ MISSING: method=MyInt::method_not_on_borrow + let a = my_thing.method_not_on_borrow(); // $ method=MyInt::method_not_on_borrow println!("{:?}", a); } } 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 328a2ec71986..8a3bfb24e60e 100644 --- a/rust/ql/test/library-tests/type-inference/type-inference.expected +++ b/rust/ql/test/library-tests/type-inference/type-inference.expected @@ -126,11 +126,17 @@ inferType | dereference.rs:55:17:55:18 | c3 | T | {EXTERNAL LOCATION} | i64 | | dereference.rs:60:9:60:10 | e1 | | file://:0:0:0:0 | & | | dereference.rs:60:9:60:10 | e1 | &T | {EXTERNAL LOCATION} | char | +| dereference.rs:60:9:60:10 | e1 | &T | file://:0:0:0:0 | & | | dereference.rs:60:14:60:17 | &'a' | | file://:0:0:0:0 | & | | dereference.rs:60:14:60:17 | &'a' | &T | {EXTERNAL LOCATION} | char | +| dereference.rs:60:14:60:17 | &'a' | &T | file://:0:0:0:0 | & | | dereference.rs:60:15:60:17 | 'a' | | {EXTERNAL LOCATION} | char | +| dereference.rs:60:15:60:17 | 'a' | | file://:0:0:0:0 | & | +| dereference.rs:61:9:61:11 | _f1 | | file://:0:0:0:0 | & | | dereference.rs:61:15:61:16 | e1 | | file://:0:0:0:0 | & | | dereference.rs:61:15:61:16 | e1 | &T | {EXTERNAL LOCATION} | char | +| dereference.rs:61:15:61:16 | e1 | &T | file://:0:0:0:0 | & | +| dereference.rs:61:15:61:24 | e1.deref() | | file://:0:0:0:0 | & | | dereference.rs:64:9:64:10 | e2 | | file://:0:0:0:0 | & | | dereference.rs:64:9:64:10 | e2 | &T | {EXTERNAL LOCATION} | char | | dereference.rs:64:9:64:10 | e2 | &T | file://:0:0:0:0 | & | @@ -1733,15 +1739,26 @@ inferType | main.rs:1158:17:1158:33 | x9.parse() | | {EXTERNAL LOCATION} | Result | | main.rs:1158:17:1158:33 | x9.parse() | T | {EXTERNAL LOCATION} | u32 | | main.rs:1160:13:1160:20 | my_thing | | file://:0:0:0:0 | & | +| main.rs:1160:13:1160:20 | my_thing | &T | file://:0:0:0:0 | & | | main.rs:1160:13:1160:20 | my_thing | &T | main.rs:1082:5:1085:5 | MyInt | +| main.rs:1160:13:1160:20 | my_thing | &T.&T | main.rs:1082:5:1085:5 | MyInt | | main.rs:1160:24:1160:39 | &... | | file://:0:0:0:0 | & | +| main.rs:1160:24:1160:39 | &... | &T | file://:0:0:0:0 | & | | main.rs:1160:24:1160:39 | &... | &T | main.rs:1082:5:1085:5 | MyInt | +| main.rs:1160:24:1160:39 | &... | &T.&T | main.rs:1082:5:1085:5 | MyInt | +| main.rs:1160:25:1160:39 | MyInt {...} | | file://:0:0:0:0 | & | | main.rs:1160:25:1160:39 | MyInt {...} | | main.rs:1082:5:1085:5 | MyInt | +| main.rs:1160:25:1160:39 | MyInt {...} | &T | main.rs:1082:5:1085:5 | MyInt | | main.rs:1160:36:1160:37 | 37 | | {EXTERNAL LOCATION} | i32 | | main.rs:1160:36:1160:37 | 37 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1162:13:1162:13 | a | | {EXTERNAL LOCATION} | i64 | | main.rs:1162:17:1162:24 | my_thing | | file://:0:0:0:0 | & | +| main.rs:1162:17:1162:24 | my_thing | &T | file://:0:0:0:0 | & | | main.rs:1162:17:1162:24 | my_thing | &T | main.rs:1082:5:1085:5 | MyInt | +| main.rs:1162:17:1162:24 | my_thing | &T.&T | main.rs:1082:5:1085:5 | MyInt | +| main.rs:1162:17:1162:43 | my_thing.method_on_borrow() | | {EXTERNAL LOCATION} | i64 | | main.rs:1163:18:1163:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1163:26:1163:26 | a | | {EXTERNAL LOCATION} | i64 | | main.rs:1166:13:1166:20 | my_thing | | file://:0:0:0:0 | & | | main.rs:1166:13:1166:20 | my_thing | &T | main.rs:1082:5:1085:5 | MyInt | | main.rs:1166:24:1166:39 | &... | | file://:0:0:0:0 | & | @@ -1749,9 +1766,12 @@ inferType | main.rs:1166:25:1166:39 | MyInt {...} | | main.rs:1082:5:1085:5 | MyInt | | main.rs:1166:36:1166:37 | 38 | | {EXTERNAL LOCATION} | i32 | | main.rs:1166:36:1166:37 | 38 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1167:13:1167:13 | a | | {EXTERNAL LOCATION} | i64 | | main.rs:1167:17:1167:24 | my_thing | | file://:0:0:0:0 | & | | main.rs:1167:17:1167:24 | my_thing | &T | main.rs:1082:5:1085:5 | MyInt | +| main.rs:1167:17:1167:47 | my_thing.method_not_on_borrow() | | {EXTERNAL LOCATION} | i64 | | main.rs:1168:18:1168:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | +| main.rs:1168:26:1168:26 | a | | {EXTERNAL LOCATION} | i64 | | main.rs:1175:16:1175:20 | SelfParam | | file://:0:0:0:0 | & | | main.rs:1175:16:1175:20 | SelfParam | &T | main.rs:1173:5:1181:5 | Self [trait MyTrait] | | main.rs:1178:16:1178:20 | SelfParam | | file://:0:0:0:0 | & | From 09bf05f0df804ca03537f1a8eb6e365bc515cf14 Mon Sep 17 00:00:00 2001 From: Simon Friis Vindum Date: Thu, 19 Jun 2025 15:31:59 +0200 Subject: [PATCH 5/7] Rust: Fix types for `*` to `deref` overload --- .../rust/elements/internal/CallImpl.qll | 23 ++- .../rust/elements/internal/OperationImpl.qll | 2 +- .../codeql/rust/internal/TypeInference.qll | 176 ++++++++++-------- .../type-inference/dereference.rs | 10 +- .../test/library-tests/type-inference/main.rs | 4 +- .../type-inference/type-inference.expected | 156 +++++----------- 6 files changed, 169 insertions(+), 202 deletions(-) diff --git a/rust/ql/lib/codeql/rust/elements/internal/CallImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/CallImpl.qll index 84d9aaab5ef1..f350e88efad8 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/CallImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/CallImpl.qll @@ -35,7 +35,7 @@ module Impl { */ abstract class Call extends ExprImpl::Expr { /** Holds if the receiver of this call is implicitly borrowed. */ - predicate receiverImplicitlyBorrowed() { this.implicitBorrowAt(TSelfArgumentPosition()) } + predicate receiverImplicitlyBorrowed() { this.implicitBorrowAt(TSelfArgumentPosition(), _) } /** Gets the trait targeted by this call, if any. */ abstract Trait getTrait(); @@ -47,7 +47,7 @@ module Impl { abstract Expr getArgument(ArgumentPosition pos); /** Holds if the argument at `pos` might be implicitly borrowed. */ - abstract predicate implicitBorrowAt(ArgumentPosition pos); + abstract predicate implicitBorrowAt(ArgumentPosition pos, boolean certain); /** Gets the number of arguments _excluding_ any `self` argument. */ int getNumberOfArguments() { result = count(this.getArgument(TPositionalArgumentPosition(_))) } @@ -85,7 +85,7 @@ module Impl { override Trait getTrait() { none() } - override predicate implicitBorrowAt(ArgumentPosition pos) { none() } + override predicate implicitBorrowAt(ArgumentPosition pos, boolean certain) { none() } override Expr getArgument(ArgumentPosition pos) { result = super.getArgList().getArg(pos.asPosition()) @@ -109,7 +109,7 @@ module Impl { qualifier.toString() != "Self" } - override predicate implicitBorrowAt(ArgumentPosition pos) { none() } + override predicate implicitBorrowAt(ArgumentPosition pos, boolean certain) { none() } override Expr getArgument(ArgumentPosition pos) { pos.isSelf() and result = super.getArgList().getArg(0) @@ -123,7 +123,9 @@ module Impl { override Trait getTrait() { none() } - override predicate implicitBorrowAt(ArgumentPosition pos) { pos.isSelf() } + override predicate implicitBorrowAt(ArgumentPosition pos, boolean certain) { + pos.isSelf() and certain = false + } override Expr getArgument(ArgumentPosition pos) { pos.isSelf() and result = this.(MethodCallExpr).getReceiver() @@ -143,10 +145,13 @@ module Impl { override Trait getTrait() { result = trait } - override predicate implicitBorrowAt(ArgumentPosition pos) { - pos.isSelf() and borrows >= 1 - or - pos.asPosition() = 0 and borrows = 2 + override predicate implicitBorrowAt(ArgumentPosition pos, boolean certain) { + ( + pos.isSelf() and borrows >= 1 + or + pos.asPosition() = 0 and borrows = 2 + ) and + certain = true } override Expr getArgument(ArgumentPosition pos) { diff --git a/rust/ql/lib/codeql/rust/elements/internal/OperationImpl.qll b/rust/ql/lib/codeql/rust/elements/internal/OperationImpl.qll index a65f99f7952b..ea76293a1bd9 100644 --- a/rust/ql/lib/codeql/rust/elements/internal/OperationImpl.qll +++ b/rust/ql/lib/codeql/rust/elements/internal/OperationImpl.qll @@ -22,7 +22,7 @@ private predicate isOverloaded(string op, int arity, string path, string method, op = "!" and path = "core::ops::bit::Not" and method = "not" and borrows = 0 or // Dereference - op = "*" and path = "core::ops::deref::Deref" and method = "deref" and borrows = 0 + op = "*" and path = "core::ops::deref::Deref" and method = "deref" and borrows = 1 ) or arity = 2 and diff --git a/rust/ql/lib/codeql/rust/internal/TypeInference.qll b/rust/ql/lib/codeql/rust/internal/TypeInference.qll index 73c18b86cd0c..a6034608d882 100644 --- a/rust/ql/lib/codeql/rust/internal/TypeInference.qll +++ b/rust/ql/lib/codeql/rust/internal/TypeInference.qll @@ -273,10 +273,6 @@ private predicate typeEquality(AstNode n1, TypePath prefix1, AstNode n2, TypePat prefix1.isEmpty() and prefix2 = TypePath::singleton(TRefTypeParameter()) or - n1 = n2.(DerefExpr).getExpr() and - prefix1 = TypePath::singleton(TRefTypeParameter()) and - prefix2.isEmpty() - or exists(BlockExpr be | n1 = be and n2 = be.getStmtList().getTailExpr() and @@ -640,20 +636,20 @@ private module CallExprBaseMatchingInput implements MatchingInputSig { } private newtype TAccessPosition = - TArgumentAccessPosition(ArgumentPosition pos, Boolean borrowed) or + TArgumentAccessPosition(ArgumentPosition pos, Boolean borrowed, Boolean certain) or TReturnAccessPosition() class AccessPosition extends TAccessPosition { - ArgumentPosition getArgumentPosition() { this = TArgumentAccessPosition(result, _) } + ArgumentPosition getArgumentPosition() { this = TArgumentAccessPosition(result, _, _) } - predicate isBorrowed() { this = TArgumentAccessPosition(_, true) } + predicate isBorrowed(boolean certain) { this = TArgumentAccessPosition(_, true, certain) } predicate isReturn() { this = TReturnAccessPosition() } string toString() { - exists(ArgumentPosition pos, boolean borrowed | - this = TArgumentAccessPosition(pos, borrowed) and - result = pos + ":" + borrowed + exists(ArgumentPosition pos, boolean borrowed, boolean certain | + this = TArgumentAccessPosition(pos, borrowed, certain) and + result = pos + ":" + borrowed + ":" + certain ) or this.isReturn() and @@ -674,10 +670,15 @@ private module CallExprBaseMatchingInput implements MatchingInputSig { } AstNode getNodeAt(AccessPosition apos) { - exists(ArgumentPosition pos, boolean borrowed | - apos = TArgumentAccessPosition(pos, borrowed) and - result = this.getArgument(pos) and - if this.implicitBorrowAt(pos) then borrowed = true else borrowed = false + exists(ArgumentPosition pos, boolean borrowed, boolean certain | + apos = TArgumentAccessPosition(pos, borrowed, certain) and + result = this.getArgument(pos) + | + if this.implicitBorrowAt(pos, _) + then borrowed = true and this.implicitBorrowAt(pos, certain) + else ( + borrowed = false and certain = true + ) ) or result = this and apos.isReturn() @@ -705,51 +706,54 @@ private module CallExprBaseMatchingInput implements MatchingInputSig { predicate adjustAccessType( AccessPosition apos, Declaration target, TypePath path, Type t, TypePath pathAdj, Type tAdj ) { - if apos.isBorrowed() - then - exists(Type selfParamType | - selfParamType = - target - .getParameterType(TArgumentDeclarationPosition(apos.getArgumentPosition()), - TypePath::nil()) - | - if selfParamType = TRefType() + apos.isBorrowed(true) and + pathAdj = TypePath::cons(TRefTypeParameter(), path) and + tAdj = t + or + apos.isBorrowed(false) and + exists(Type selfParamType | + selfParamType = + target + .getParameterType(TArgumentDeclarationPosition(apos.getArgumentPosition()), + TypePath::nil()) + | + if selfParamType = TRefType() + then + if t != TRefType() and path.isEmpty() then - if t != TRefType() and path.isEmpty() + // adjust for implicit borrow + pathAdj.isEmpty() and + tAdj = TRefType() + or + // adjust for implicit borrow + pathAdj = TypePath::singleton(TRefTypeParameter()) and + tAdj = t + else + if path.isCons(TRefTypeParameter(), _) then + pathAdj = path and + tAdj = t + else ( // adjust for implicit borrow - pathAdj.isEmpty() and - tAdj = TRefType() - or - // adjust for implicit borrow - pathAdj = TypePath::singleton(TRefTypeParameter()) and + not (t = TRefType() and path.isEmpty()) and + pathAdj = TypePath::cons(TRefTypeParameter(), path) and tAdj = t - else - if path.isCons(TRefTypeParameter(), _) - then - pathAdj = path and - tAdj = t - else ( - // adjust for implicit borrow - not (t = TRefType() and path.isEmpty()) and - pathAdj = TypePath::cons(TRefTypeParameter(), path) and - tAdj = t - ) - else ( - // adjust for implicit deref - path.isCons(TRefTypeParameter(), pathAdj) and - tAdj = t - or - not path.isCons(TRefTypeParameter(), _) and - not (t = TRefType() and path.isEmpty()) and - pathAdj = path and - tAdj = t - ) + ) + else ( + // adjust for implicit deref + path.isCons(TRefTypeParameter(), pathAdj) and + tAdj = t + or + not path.isCons(TRefTypeParameter(), _) and + not (t = TRefType() and path.isEmpty()) and + pathAdj = path and + tAdj = t ) - else ( - pathAdj = path and - tAdj = t ) + or + not apos.isBorrowed(_) and + pathAdj = path and + tAdj = t } } @@ -766,35 +770,47 @@ private Type inferCallExprBaseType(AstNode n, TypePath path) { TypePath path0 | n = a.getNodeAt(apos) and - result = CallExprBaseMatching::inferAccessType(a, apos, path0) and - if apos.isBorrowed() - then - exists(Type argType | argType = inferType(n) | - if argType = TRefType() - then - path = path0 and - path0.isCons(TRefTypeParameter(), _) - or - // adjust for implicit deref + result = CallExprBaseMatching::inferAccessType(a, apos, path0) + | + ( + apos.isBorrowed(true) + or + // The desugaring of the unary `*e` is `*Deref::deref(&e)`. To handle the + // deref expression after the call we must strip a `&` from the type at + // the return position. + apos.isReturn() and a instanceof DerefExpr + ) and + path0.isCons(TRefTypeParameter(), path) + or + apos.isBorrowed(false) and + exists(Type argType | argType = inferType(n) | + if argType = TRefType() + then + path = path0 and + path0.isCons(TRefTypeParameter(), _) + or + // adjust for implicit deref + not path0.isCons(TRefTypeParameter(), _) and + not (path0.isEmpty() and result = TRefType()) and + path = TypePath::cons(TRefTypeParameter(), path0) + else ( + not ( + argType.(StructType).asItemNode() instanceof StringStruct and + result.(StructType).asItemNode() instanceof Builtins::Str + ) and + ( not path0.isCons(TRefTypeParameter(), _) and not (path0.isEmpty() and result = TRefType()) and - path = TypePath::cons(TRefTypeParameter(), path0) - else ( - not ( - argType.(StructType).asItemNode() instanceof StringStruct and - result.(StructType).asItemNode() instanceof Builtins::Str - ) and - ( - not path0.isCons(TRefTypeParameter(), _) and - not (path0.isEmpty() and result = TRefType()) and - path = path0 - or - // adjust for implicit borrow - path0.isCons(TRefTypeParameter(), path) - ) + path = path0 + or + // adjust for implicit borrow + path0.isCons(TRefTypeParameter(), path) ) ) - else path = path0 + ) + or + not apos.isBorrowed(_) and + path = path0 ) } @@ -1387,7 +1403,7 @@ private module Cached { predicate receiverHasImplicitDeref(AstNode receiver) { exists(CallExprBaseMatchingInput::Access a, CallExprBaseMatchingInput::AccessPosition apos | apos.getArgumentPosition().isSelf() and - apos.isBorrowed() and + apos.isBorrowed(_) and receiver = a.getNodeAt(apos) and inferType(receiver) = TRefType() and CallExprBaseMatching::inferAccessType(a, apos, TypePath::nil()) != TRefType() @@ -1399,7 +1415,7 @@ private module Cached { predicate receiverHasImplicitBorrow(AstNode receiver) { exists(CallExprBaseMatchingInput::Access a, CallExprBaseMatchingInput::AccessPosition apos | apos.getArgumentPosition().isSelf() and - apos.isBorrowed() and + apos.isBorrowed(_) and receiver = a.getNodeAt(apos) and CallExprBaseMatching::inferAccessType(a, apos, TypePath::nil()) = TRefType() and inferType(receiver) != TRefType() diff --git a/rust/ql/test/library-tests/type-inference/dereference.rs b/rust/ql/test/library-tests/type-inference/dereference.rs index df0018cbf205..fb16eb00cf3d 100644 --- a/rust/ql/test/library-tests/type-inference/dereference.rs +++ b/rust/ql/test/library-tests/type-inference/dereference.rs @@ -34,7 +34,7 @@ fn explicit_monomorphic_dereference() { // Dereference with overloaded dereference operator let a2 = MyIntPointer { value: 34i64 }; - let _b2 = *a2; // $ method=MyIntPointer::deref MISSING: type=_b2:i64 + let _b2 = *a2; // $ method=MyIntPointer::deref type=_b2:i64 // Call method on explicitly dereferenced value let a3 = MyIntPointer { value: 34i64 }; @@ -48,11 +48,11 @@ fn explicit_polymorphic_dereference() { // Explicit dereference with type parameter let c2 = MySmartPointer { value: 'a' }; - let _d2 = *c2; // $ method=MySmartPointer::deref MISSING: type=_d2:char + let _d2 = *c2; // $ method=MySmartPointer::deref type=_d2:char // Call method on explicitly dereferenced value with type parameter let c3 = MySmartPointer { value: 34i64 }; - let _d3 = (*c3).is_positive(); // $ method=MySmartPointer::deref MISSING: method=is_positive type=_d3:bool + let _d3 = (*c3).is_positive(); // $ method=MySmartPointer::deref method=is_positive type=_d3:bool } fn explicit_ref_dereference() { @@ -76,11 +76,11 @@ fn explicit_box_dereference() { // Explicit dereference with type parameter let g2: Box = Box::new('a'); - let _h2 = *g2; // $ method=deref MISSING: type=_h2:char + let _h2 = *g2; // $ method=deref type=_h2:char // Call method on explicitly dereferenced value with type parameter let g3: Box = Box::new(34i64); - let _h3 = (*g3).is_positive(); // $ method=deref MISSING: method=is_positive type=_h3:bool + let _h3 = (*g3).is_positive(); // $ method=deref method=is_positive type=_h3:bool } fn implicit_dereference() { diff --git a/rust/ql/test/library-tests/type-inference/main.rs b/rust/ql/test/library-tests/type-inference/main.rs index a6f98ffebc46..bd8f6a1f25af 100644 --- a/rust/ql/test/library-tests/type-inference/main.rs +++ b/rust/ql/test/library-tests/type-inference/main.rs @@ -1140,7 +1140,7 @@ mod method_call_type_conversion { println!("{:?}", x5.m1()); // $ method=m1 println!("{:?}", x5.0); // $ fieldof=S - let x6 = &S(S2); // $ SPURIOUS: type=x6:&T.&T.S + let x6 = &S(S2); // explicit dereference println!("{:?}", (*x6).m1()); // $ method=m1 method=deref @@ -1717,7 +1717,7 @@ mod overloadable_operators { // Here the type of `default_vec2` must be inferred from the `==` call // and the type of the borrowed second argument is unknown at the call. - let default_vec2 = Default::default(); // $ MISSING: type=default_vec2:Vec2 + let default_vec2 = Default::default(); // $ type=default_vec2:Vec2 let vec2_zero_plus = Vec2 { x: 0, y: 0 } == default_vec2; // $ method=Vec2::eq } } 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 8a3bfb24e60e..e39428cc2d77 100644 --- a/rust/ql/test/library-tests/type-inference/type-inference.expected +++ b/rust/ql/test/library-tests/type-inference/type-inference.expected @@ -28,51 +28,27 @@ inferType | dereference.rs:33:15:33:24 | a1.deref() | | file://:0:0:0:0 | & | | dereference.rs:33:15:33:24 | a1.deref() | &T | {EXTERNAL LOCATION} | i64 | | dereference.rs:36:9:36:10 | a2 | | dereference.rs:4:1:6:1 | MyIntPointer | -| dereference.rs:36:9:36:10 | a2 | | file://:0:0:0:0 | & | -| dereference.rs:36:9:36:10 | a2 | &T | dereference.rs:4:1:6:1 | MyIntPointer | -| dereference.rs:36:9:36:10 | a2 | &T | file://:0:0:0:0 | & | -| dereference.rs:36:9:36:10 | a2 | &T.&T | {EXTERNAL LOCATION} | i64 | | dereference.rs:36:14:36:42 | MyIntPointer {...} | | dereference.rs:4:1:6:1 | MyIntPointer | -| dereference.rs:36:14:36:42 | MyIntPointer {...} | | file://:0:0:0:0 | & | -| dereference.rs:36:14:36:42 | MyIntPointer {...} | &T | dereference.rs:4:1:6:1 | MyIntPointer | -| dereference.rs:36:14:36:42 | MyIntPointer {...} | &T | file://:0:0:0:0 | & | -| dereference.rs:36:14:36:42 | MyIntPointer {...} | &T.&T | {EXTERNAL LOCATION} | i64 | | dereference.rs:36:36:36:40 | 34i64 | | {EXTERNAL LOCATION} | i64 | -| dereference.rs:37:9:37:11 | _b2 | | dereference.rs:4:1:6:1 | MyIntPointer | +| dereference.rs:37:9:37:11 | _b2 | | {EXTERNAL LOCATION} | i64 | | dereference.rs:37:9:37:11 | _b2 | | file://:0:0:0:0 | & | | dereference.rs:37:9:37:11 | _b2 | &T | {EXTERNAL LOCATION} | i64 | -| dereference.rs:37:15:37:17 | * ... | | dereference.rs:4:1:6:1 | MyIntPointer | +| dereference.rs:37:15:37:17 | * ... | | {EXTERNAL LOCATION} | i64 | | dereference.rs:37:15:37:17 | * ... | | file://:0:0:0:0 | & | | dereference.rs:37:15:37:17 | * ... | &T | {EXTERNAL LOCATION} | i64 | | dereference.rs:37:16:37:17 | a2 | | dereference.rs:4:1:6:1 | MyIntPointer | -| dereference.rs:37:16:37:17 | a2 | | file://:0:0:0:0 | & | -| dereference.rs:37:16:37:17 | a2 | &T | dereference.rs:4:1:6:1 | MyIntPointer | -| dereference.rs:37:16:37:17 | a2 | &T | file://:0:0:0:0 | & | -| dereference.rs:37:16:37:17 | a2 | &T.&T | {EXTERNAL LOCATION} | i64 | | dereference.rs:40:9:40:10 | a3 | | dereference.rs:4:1:6:1 | MyIntPointer | -| dereference.rs:40:9:40:10 | a3 | | file://:0:0:0:0 | & | -| dereference.rs:40:9:40:10 | a3 | &T | dereference.rs:4:1:6:1 | MyIntPointer | -| dereference.rs:40:9:40:10 | a3 | &T | file://:0:0:0:0 | & | -| dereference.rs:40:9:40:10 | a3 | &T.&T | {EXTERNAL LOCATION} | i64 | | dereference.rs:40:14:40:42 | MyIntPointer {...} | | dereference.rs:4:1:6:1 | MyIntPointer | -| dereference.rs:40:14:40:42 | MyIntPointer {...} | | file://:0:0:0:0 | & | -| dereference.rs:40:14:40:42 | MyIntPointer {...} | &T | dereference.rs:4:1:6:1 | MyIntPointer | -| dereference.rs:40:14:40:42 | MyIntPointer {...} | &T | file://:0:0:0:0 | & | -| dereference.rs:40:14:40:42 | MyIntPointer {...} | &T.&T | {EXTERNAL LOCATION} | i64 | | dereference.rs:40:36:40:40 | 34i64 | | {EXTERNAL LOCATION} | i64 | | dereference.rs:41:9:41:11 | _b3 | | {EXTERNAL LOCATION} | bool | -| dereference.rs:41:15:41:19 | (...) | | dereference.rs:4:1:6:1 | MyIntPointer | +| dereference.rs:41:15:41:19 | (...) | | {EXTERNAL LOCATION} | i64 | | dereference.rs:41:15:41:19 | (...) | | file://:0:0:0:0 | & | | dereference.rs:41:15:41:19 | (...) | &T | {EXTERNAL LOCATION} | i64 | | dereference.rs:41:15:41:33 | ... .is_positive() | | {EXTERNAL LOCATION} | bool | -| dereference.rs:41:16:41:18 | * ... | | dereference.rs:4:1:6:1 | MyIntPointer | +| dereference.rs:41:16:41:18 | * ... | | {EXTERNAL LOCATION} | i64 | | dereference.rs:41:16:41:18 | * ... | | file://:0:0:0:0 | & | | dereference.rs:41:16:41:18 | * ... | &T | {EXTERNAL LOCATION} | i64 | | dereference.rs:41:17:41:18 | a3 | | dereference.rs:4:1:6:1 | MyIntPointer | -| dereference.rs:41:17:41:18 | a3 | | file://:0:0:0:0 | & | -| dereference.rs:41:17:41:18 | a3 | &T | dereference.rs:4:1:6:1 | MyIntPointer | -| dereference.rs:41:17:41:18 | a3 | &T | file://:0:0:0:0 | & | -| dereference.rs:41:17:41:18 | a3 | &T.&T | {EXTERNAL LOCATION} | i64 | | dereference.rs:46:9:46:10 | c1 | | dereference.rs:17:1:19:1 | MySmartPointer | | dereference.rs:46:9:46:10 | c1 | T | {EXTERNAL LOCATION} | char | | dereference.rs:46:14:46:42 | MySmartPointer {...} | | dereference.rs:17:1:19:1 | MySmartPointer | @@ -85,44 +61,32 @@ inferType | dereference.rs:47:15:47:24 | c1.deref() | | file://:0:0:0:0 | & | | dereference.rs:47:15:47:24 | c1.deref() | &T | {EXTERNAL LOCATION} | char | | dereference.rs:50:9:50:10 | c2 | | dereference.rs:17:1:19:1 | MySmartPointer | -| dereference.rs:50:9:50:10 | c2 | | file://:0:0:0:0 | & | -| dereference.rs:50:9:50:10 | c2 | &T | dereference.rs:17:1:19:1 | MySmartPointer | -| dereference.rs:50:9:50:10 | c2 | &T | file://:0:0:0:0 | & | | dereference.rs:50:9:50:10 | c2 | T | {EXTERNAL LOCATION} | char | | dereference.rs:50:14:50:42 | MySmartPointer {...} | | dereference.rs:17:1:19:1 | MySmartPointer | -| dereference.rs:50:14:50:42 | MySmartPointer {...} | | file://:0:0:0:0 | & | -| dereference.rs:50:14:50:42 | MySmartPointer {...} | &T | dereference.rs:17:1:19:1 | MySmartPointer | -| dereference.rs:50:14:50:42 | MySmartPointer {...} | &T | file://:0:0:0:0 | & | | dereference.rs:50:14:50:42 | MySmartPointer {...} | T | {EXTERNAL LOCATION} | char | | dereference.rs:50:38:50:40 | 'a' | | {EXTERNAL LOCATION} | char | -| dereference.rs:51:9:51:11 | _d2 | | dereference.rs:17:1:19:1 | MySmartPointer | +| dereference.rs:51:9:51:11 | _d2 | | {EXTERNAL LOCATION} | char | | dereference.rs:51:9:51:11 | _d2 | | file://:0:0:0:0 | & | -| dereference.rs:51:15:51:17 | * ... | | dereference.rs:17:1:19:1 | MySmartPointer | +| dereference.rs:51:9:51:11 | _d2 | &T | {EXTERNAL LOCATION} | char | +| dereference.rs:51:15:51:17 | * ... | | {EXTERNAL LOCATION} | char | | dereference.rs:51:15:51:17 | * ... | | file://:0:0:0:0 | & | +| dereference.rs:51:15:51:17 | * ... | &T | {EXTERNAL LOCATION} | char | | dereference.rs:51:16:51:17 | c2 | | dereference.rs:17:1:19:1 | MySmartPointer | -| dereference.rs:51:16:51:17 | c2 | | file://:0:0:0:0 | & | -| dereference.rs:51:16:51:17 | c2 | &T | dereference.rs:17:1:19:1 | MySmartPointer | -| dereference.rs:51:16:51:17 | c2 | &T | file://:0:0:0:0 | & | | dereference.rs:51:16:51:17 | c2 | T | {EXTERNAL LOCATION} | char | | dereference.rs:54:9:54:10 | c3 | | dereference.rs:17:1:19:1 | MySmartPointer | -| dereference.rs:54:9:54:10 | c3 | | file://:0:0:0:0 | & | -| dereference.rs:54:9:54:10 | c3 | &T | dereference.rs:17:1:19:1 | MySmartPointer | -| dereference.rs:54:9:54:10 | c3 | &T | file://:0:0:0:0 | & | | dereference.rs:54:9:54:10 | c3 | T | {EXTERNAL LOCATION} | i64 | | dereference.rs:54:14:54:44 | MySmartPointer {...} | | dereference.rs:17:1:19:1 | MySmartPointer | -| dereference.rs:54:14:54:44 | MySmartPointer {...} | | file://:0:0:0:0 | & | -| dereference.rs:54:14:54:44 | MySmartPointer {...} | &T | dereference.rs:17:1:19:1 | MySmartPointer | -| dereference.rs:54:14:54:44 | MySmartPointer {...} | &T | file://:0:0:0:0 | & | | dereference.rs:54:14:54:44 | MySmartPointer {...} | T | {EXTERNAL LOCATION} | i64 | | dereference.rs:54:38:54:42 | 34i64 | | {EXTERNAL LOCATION} | i64 | -| dereference.rs:55:15:55:19 | (...) | | dereference.rs:17:1:19:1 | MySmartPointer | +| dereference.rs:55:9:55:11 | _d3 | | {EXTERNAL LOCATION} | bool | +| dereference.rs:55:15:55:19 | (...) | | {EXTERNAL LOCATION} | i64 | | dereference.rs:55:15:55:19 | (...) | | file://:0:0:0:0 | & | -| dereference.rs:55:16:55:18 | * ... | | dereference.rs:17:1:19:1 | MySmartPointer | +| dereference.rs:55:15:55:19 | (...) | &T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:55:15:55:33 | ... .is_positive() | | {EXTERNAL LOCATION} | bool | +| dereference.rs:55:16:55:18 | * ... | | {EXTERNAL LOCATION} | i64 | | dereference.rs:55:16:55:18 | * ... | | file://:0:0:0:0 | & | +| dereference.rs:55:16:55:18 | * ... | &T | {EXTERNAL LOCATION} | i64 | | dereference.rs:55:17:55:18 | c3 | | dereference.rs:17:1:19:1 | MySmartPointer | -| dereference.rs:55:17:55:18 | c3 | | file://:0:0:0:0 | & | -| dereference.rs:55:17:55:18 | c3 | &T | dereference.rs:17:1:19:1 | MySmartPointer | -| dereference.rs:55:17:55:18 | c3 | &T | file://:0:0:0:0 | & | | dereference.rs:55:17:55:18 | c3 | T | {EXTERNAL LOCATION} | i64 | | dereference.rs:60:9:60:10 | e1 | | file://:0:0:0:0 | & | | dereference.rs:60:9:60:10 | e1 | &T | {EXTERNAL LOCATION} | char | @@ -139,36 +103,32 @@ inferType | dereference.rs:61:15:61:24 | e1.deref() | | file://:0:0:0:0 | & | | dereference.rs:64:9:64:10 | e2 | | file://:0:0:0:0 | & | | dereference.rs:64:9:64:10 | e2 | &T | {EXTERNAL LOCATION} | char | -| dereference.rs:64:9:64:10 | e2 | &T | file://:0:0:0:0 | & | | dereference.rs:64:14:64:17 | &'a' | | file://:0:0:0:0 | & | | dereference.rs:64:14:64:17 | &'a' | &T | {EXTERNAL LOCATION} | char | -| dereference.rs:64:14:64:17 | &'a' | &T | file://:0:0:0:0 | & | | dereference.rs:64:15:64:17 | 'a' | | {EXTERNAL LOCATION} | char | -| dereference.rs:64:15:64:17 | 'a' | | file://:0:0:0:0 | & | | dereference.rs:65:9:65:11 | _f2 | | {EXTERNAL LOCATION} | char | | dereference.rs:65:9:65:11 | _f2 | | file://:0:0:0:0 | & | +| dereference.rs:65:9:65:11 | _f2 | &T | {EXTERNAL LOCATION} | char | | dereference.rs:65:15:65:17 | * ... | | {EXTERNAL LOCATION} | char | | dereference.rs:65:15:65:17 | * ... | | file://:0:0:0:0 | & | +| dereference.rs:65:15:65:17 | * ... | &T | {EXTERNAL LOCATION} | char | | dereference.rs:65:16:65:17 | e2 | | file://:0:0:0:0 | & | | dereference.rs:65:16:65:17 | e2 | &T | {EXTERNAL LOCATION} | char | -| dereference.rs:65:16:65:17 | e2 | &T | file://:0:0:0:0 | & | | dereference.rs:68:9:68:10 | e3 | | file://:0:0:0:0 | & | | dereference.rs:68:9:68:10 | e3 | &T | {EXTERNAL LOCATION} | i64 | -| dereference.rs:68:9:68:10 | e3 | &T | file://:0:0:0:0 | & | | dereference.rs:68:14:68:19 | &34i64 | | file://:0:0:0:0 | & | | dereference.rs:68:14:68:19 | &34i64 | &T | {EXTERNAL LOCATION} | i64 | -| dereference.rs:68:14:68:19 | &34i64 | &T | file://:0:0:0:0 | & | | dereference.rs:68:15:68:19 | 34i64 | | {EXTERNAL LOCATION} | i64 | -| dereference.rs:68:15:68:19 | 34i64 | | file://:0:0:0:0 | & | | dereference.rs:69:9:69:11 | _f3 | | {EXTERNAL LOCATION} | bool | | dereference.rs:69:15:69:19 | (...) | | {EXTERNAL LOCATION} | i64 | | dereference.rs:69:15:69:19 | (...) | | file://:0:0:0:0 | & | +| dereference.rs:69:15:69:19 | (...) | &T | {EXTERNAL LOCATION} | i64 | | dereference.rs:69:15:69:33 | ... .is_positive() | | {EXTERNAL LOCATION} | bool | | dereference.rs:69:16:69:18 | * ... | | {EXTERNAL LOCATION} | i64 | | dereference.rs:69:16:69:18 | * ... | | file://:0:0:0:0 | & | +| dereference.rs:69:16:69:18 | * ... | &T | {EXTERNAL LOCATION} | i64 | | dereference.rs:69:17:69:18 | e3 | | file://:0:0:0:0 | & | | dereference.rs:69:17:69:18 | e3 | &T | {EXTERNAL LOCATION} | i64 | -| dereference.rs:69:17:69:18 | e3 | &T | file://:0:0:0:0 | & | | dereference.rs:74:9:74:10 | g1 | | {EXTERNAL LOCATION} | Box | | dereference.rs:74:9:74:10 | g1 | A | {EXTERNAL LOCATION} | Global | | dereference.rs:74:9:74:10 | g1 | T | {EXTERNAL LOCATION} | char | @@ -184,49 +144,37 @@ inferType | dereference.rs:75:15:75:24 | g1.deref() | | file://:0:0:0:0 | & | | dereference.rs:75:15:75:24 | g1.deref() | &T | {EXTERNAL LOCATION} | char | | dereference.rs:78:9:78:10 | g2 | | {EXTERNAL LOCATION} | Box | -| dereference.rs:78:9:78:10 | g2 | | file://:0:0:0:0 | & | -| dereference.rs:78:9:78:10 | g2 | &T | {EXTERNAL LOCATION} | Box | -| dereference.rs:78:9:78:10 | g2 | &T | file://:0:0:0:0 | & | | dereference.rs:78:9:78:10 | g2 | A | {EXTERNAL LOCATION} | Global | | dereference.rs:78:9:78:10 | g2 | T | {EXTERNAL LOCATION} | char | | dereference.rs:78:25:78:37 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| dereference.rs:78:25:78:37 | ...::new(...) | | file://:0:0:0:0 | & | -| dereference.rs:78:25:78:37 | ...::new(...) | &T | {EXTERNAL LOCATION} | Box | -| dereference.rs:78:25:78:37 | ...::new(...) | &T | file://:0:0:0:0 | & | | dereference.rs:78:25:78:37 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | | dereference.rs:78:25:78:37 | ...::new(...) | T | {EXTERNAL LOCATION} | char | | dereference.rs:78:34:78:36 | 'a' | | {EXTERNAL LOCATION} | char | -| dereference.rs:79:9:79:11 | _h2 | | {EXTERNAL LOCATION} | Box | +| dereference.rs:79:9:79:11 | _h2 | | {EXTERNAL LOCATION} | char | | dereference.rs:79:9:79:11 | _h2 | | file://:0:0:0:0 | & | -| dereference.rs:79:15:79:17 | * ... | | {EXTERNAL LOCATION} | Box | +| dereference.rs:79:9:79:11 | _h2 | &T | {EXTERNAL LOCATION} | char | +| dereference.rs:79:15:79:17 | * ... | | {EXTERNAL LOCATION} | char | | dereference.rs:79:15:79:17 | * ... | | file://:0:0:0:0 | & | +| dereference.rs:79:15:79:17 | * ... | &T | {EXTERNAL LOCATION} | char | | dereference.rs:79:16:79:17 | g2 | | {EXTERNAL LOCATION} | Box | -| dereference.rs:79:16:79:17 | g2 | | file://:0:0:0:0 | & | -| dereference.rs:79:16:79:17 | g2 | &T | {EXTERNAL LOCATION} | Box | -| dereference.rs:79:16:79:17 | g2 | &T | file://:0:0:0:0 | & | | dereference.rs:79:16:79:17 | g2 | A | {EXTERNAL LOCATION} | Global | | dereference.rs:79:16:79:17 | g2 | T | {EXTERNAL LOCATION} | char | | dereference.rs:82:9:82:10 | g3 | | {EXTERNAL LOCATION} | Box | -| dereference.rs:82:9:82:10 | g3 | | file://:0:0:0:0 | & | -| dereference.rs:82:9:82:10 | g3 | &T | {EXTERNAL LOCATION} | Box | -| dereference.rs:82:9:82:10 | g3 | &T | file://:0:0:0:0 | & | | dereference.rs:82:9:82:10 | g3 | A | {EXTERNAL LOCATION} | Global | | dereference.rs:82:9:82:10 | g3 | T | {EXTERNAL LOCATION} | i64 | | dereference.rs:82:24:82:38 | ...::new(...) | | {EXTERNAL LOCATION} | Box | -| dereference.rs:82:24:82:38 | ...::new(...) | | file://:0:0:0:0 | & | -| dereference.rs:82:24:82:38 | ...::new(...) | &T | {EXTERNAL LOCATION} | Box | -| dereference.rs:82:24:82:38 | ...::new(...) | &T | file://:0:0:0:0 | & | | dereference.rs:82:24:82:38 | ...::new(...) | A | {EXTERNAL LOCATION} | Global | | dereference.rs:82:24:82:38 | ...::new(...) | T | {EXTERNAL LOCATION} | i64 | | dereference.rs:82:33:82:37 | 34i64 | | {EXTERNAL LOCATION} | i64 | -| dereference.rs:83:15:83:19 | (...) | | {EXTERNAL LOCATION} | Box | +| dereference.rs:83:9:83:11 | _h3 | | {EXTERNAL LOCATION} | bool | +| dereference.rs:83:15:83:19 | (...) | | {EXTERNAL LOCATION} | i64 | | dereference.rs:83:15:83:19 | (...) | | file://:0:0:0:0 | & | -| dereference.rs:83:16:83:18 | * ... | | {EXTERNAL LOCATION} | Box | +| dereference.rs:83:15:83:19 | (...) | &T | {EXTERNAL LOCATION} | i64 | +| dereference.rs:83:15:83:33 | ... .is_positive() | | {EXTERNAL LOCATION} | bool | +| dereference.rs:83:16:83:18 | * ... | | {EXTERNAL LOCATION} | i64 | | dereference.rs:83:16:83:18 | * ... | | file://:0:0:0:0 | & | +| dereference.rs:83:16:83:18 | * ... | &T | {EXTERNAL LOCATION} | i64 | | dereference.rs:83:17:83:18 | g3 | | {EXTERNAL LOCATION} | Box | -| dereference.rs:83:17:83:18 | g3 | | file://:0:0:0:0 | & | -| dereference.rs:83:17:83:18 | g3 | &T | {EXTERNAL LOCATION} | Box | -| dereference.rs:83:17:83:18 | g3 | &T | file://:0:0:0:0 | & | | dereference.rs:83:17:83:18 | g3 | A | {EXTERNAL LOCATION} | Global | | dereference.rs:83:17:83:18 | g3 | T | {EXTERNAL LOCATION} | i64 | | dereference.rs:88:9:88:9 | x | | dereference.rs:4:1:6:1 | MyIntPointer | @@ -1549,34 +1497,36 @@ inferType | main.rs:1103:33:1103:36 | SelfParam | | main.rs:1101:5:1104:5 | Self [trait ATrait] | | main.rs:1109:29:1109:33 | SelfParam | | file://:0:0:0:0 | & | | main.rs:1109:29:1109:33 | SelfParam | &T | file://:0:0:0:0 | & | -| main.rs:1109:29:1109:33 | SelfParam | &T.&T | file://:0:0:0:0 | & | +| main.rs:1109:29:1109:33 | SelfParam | &T | main.rs:1082:5:1085:5 | MyInt | | main.rs:1109:29:1109:33 | SelfParam | &T.&T | main.rs:1082:5:1085:5 | MyInt | -| main.rs:1109:29:1109:33 | SelfParam | &T.&T.&T | main.rs:1082:5:1085:5 | MyInt | | main.rs:1109:43:1111:9 | { ... } | | {EXTERNAL LOCATION} | i64 | | main.rs:1110:13:1110:22 | (...) | | file://:0:0:0:0 | & | | main.rs:1110:13:1110:22 | (...) | | main.rs:1082:5:1085:5 | MyInt | +| main.rs:1110:13:1110:22 | (...) | &T | file://:0:0:0:0 | & | | main.rs:1110:13:1110:22 | (...) | &T | main.rs:1082:5:1085:5 | MyInt | +| main.rs:1110:13:1110:22 | (...) | &T.&T | main.rs:1082:5:1085:5 | MyInt | | main.rs:1110:13:1110:24 | ... .a | | {EXTERNAL LOCATION} | i64 | | main.rs:1110:14:1110:21 | * ... | | file://:0:0:0:0 | & | | main.rs:1110:14:1110:21 | * ... | | main.rs:1082:5:1085:5 | MyInt | +| main.rs:1110:14:1110:21 | * ... | &T | file://:0:0:0:0 | & | | main.rs:1110:14:1110:21 | * ... | &T | main.rs:1082:5:1085:5 | MyInt | +| main.rs:1110:14:1110:21 | * ... | &T.&T | main.rs:1082:5:1085:5 | MyInt | | main.rs:1110:15:1110:21 | (...) | | file://:0:0:0:0 | & | +| main.rs:1110:15:1110:21 | (...) | | main.rs:1082:5:1085:5 | MyInt | | main.rs:1110:15:1110:21 | (...) | &T | file://:0:0:0:0 | & | | main.rs:1110:15:1110:21 | (...) | &T | main.rs:1082:5:1085:5 | MyInt | | main.rs:1110:15:1110:21 | (...) | &T.&T | main.rs:1082:5:1085:5 | MyInt | | main.rs:1110:16:1110:20 | * ... | | file://:0:0:0:0 | & | +| main.rs:1110:16:1110:20 | * ... | | main.rs:1082:5:1085:5 | MyInt | | main.rs:1110:16:1110:20 | * ... | &T | file://:0:0:0:0 | & | | main.rs:1110:16:1110:20 | * ... | &T | main.rs:1082:5:1085:5 | MyInt | | main.rs:1110:16:1110:20 | * ... | &T.&T | main.rs:1082:5:1085:5 | MyInt | | main.rs:1110:17:1110:20 | self | | file://:0:0:0:0 | & | | main.rs:1110:17:1110:20 | self | &T | file://:0:0:0:0 | & | -| main.rs:1110:17:1110:20 | self | &T.&T | file://:0:0:0:0 | & | +| main.rs:1110:17:1110:20 | self | &T | main.rs:1082:5:1085:5 | MyInt | | main.rs:1110:17:1110:20 | self | &T.&T | main.rs:1082:5:1085:5 | MyInt | -| main.rs:1110:17:1110:20 | self | &T.&T.&T | main.rs:1082:5:1085:5 | MyInt | | main.rs:1114:33:1114:36 | SelfParam | | file://:0:0:0:0 | & | -| main.rs:1114:33:1114:36 | SelfParam | &T | file://:0:0:0:0 | & | | main.rs:1114:33:1114:36 | SelfParam | &T | main.rs:1082:5:1085:5 | MyInt | -| main.rs:1114:33:1114:36 | SelfParam | &T.&T | main.rs:1082:5:1085:5 | MyInt | | main.rs:1114:46:1116:9 | { ... } | | {EXTERNAL LOCATION} | i64 | | main.rs:1115:13:1115:19 | (...) | | file://:0:0:0:0 | & | | main.rs:1115:13:1115:19 | (...) | | main.rs:1082:5:1085:5 | MyInt | @@ -1586,9 +1536,7 @@ inferType | main.rs:1115:14:1115:18 | * ... | | main.rs:1082:5:1085:5 | MyInt | | main.rs:1115:14:1115:18 | * ... | &T | main.rs:1082:5:1085:5 | MyInt | | main.rs:1115:15:1115:18 | self | | file://:0:0:0:0 | & | -| main.rs:1115:15:1115:18 | self | &T | file://:0:0:0:0 | & | | main.rs:1115:15:1115:18 | self | &T | main.rs:1082:5:1085:5 | MyInt | -| main.rs:1115:15:1115:18 | self | &T.&T | main.rs:1082:5:1085:5 | MyInt | | main.rs:1120:13:1120:14 | x1 | | main.rs:1076:5:1077:19 | S | | main.rs:1120:13:1120:14 | x1 | T | main.rs:1079:5:1080:14 | S2 | | main.rs:1120:18:1120:22 | S(...) | | main.rs:1076:5:1077:19 | S | @@ -1675,21 +1623,12 @@ inferType | main.rs:1141:26:1141:27 | x5 | &T.T | main.rs:1079:5:1080:14 | S2 | | main.rs:1141:26:1141:29 | x5.0 | | main.rs:1079:5:1080:14 | S2 | | main.rs:1143:13:1143:14 | x6 | | file://:0:0:0:0 | & | -| main.rs:1143:13:1143:14 | x6 | &T | file://:0:0:0:0 | & | | main.rs:1143:13:1143:14 | x6 | &T | main.rs:1076:5:1077:19 | S | -| main.rs:1143:13:1143:14 | x6 | &T.&T | main.rs:1076:5:1077:19 | S | -| main.rs:1143:13:1143:14 | x6 | &T.&T.T | main.rs:1079:5:1080:14 | S2 | | main.rs:1143:13:1143:14 | x6 | &T.T | main.rs:1079:5:1080:14 | S2 | | main.rs:1143:18:1143:23 | &... | | file://:0:0:0:0 | & | -| main.rs:1143:18:1143:23 | &... | &T | file://:0:0:0:0 | & | | main.rs:1143:18:1143:23 | &... | &T | main.rs:1076:5:1077:19 | S | -| main.rs:1143:18:1143:23 | &... | &T.&T | main.rs:1076:5:1077:19 | S | -| main.rs:1143:18:1143:23 | &... | &T.&T.T | main.rs:1079:5:1080:14 | S2 | | main.rs:1143:18:1143:23 | &... | &T.T | main.rs:1079:5:1080:14 | S2 | -| main.rs:1143:19:1143:23 | S(...) | | file://:0:0:0:0 | & | | main.rs:1143:19:1143:23 | S(...) | | main.rs:1076:5:1077:19 | S | -| main.rs:1143:19:1143:23 | S(...) | &T | main.rs:1076:5:1077:19 | S | -| main.rs:1143:19:1143:23 | S(...) | &T.T | main.rs:1079:5:1080:14 | S2 | | main.rs:1143:19:1143:23 | S(...) | T | main.rs:1079:5:1080:14 | S2 | | main.rs:1143:21:1143:22 | S2 | | main.rs:1079:5:1080:14 | S2 | | main.rs:1146:18:1146:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | @@ -1705,10 +1644,7 @@ inferType | main.rs:1146:27:1146:29 | * ... | &T.T | main.rs:1079:5:1080:14 | S2 | | main.rs:1146:27:1146:29 | * ... | T | main.rs:1079:5:1080:14 | S2 | | main.rs:1146:28:1146:29 | x6 | | file://:0:0:0:0 | & | -| main.rs:1146:28:1146:29 | x6 | &T | file://:0:0:0:0 | & | | main.rs:1146:28:1146:29 | x6 | &T | main.rs:1076:5:1077:19 | S | -| main.rs:1146:28:1146:29 | x6 | &T.&T | main.rs:1076:5:1077:19 | S | -| main.rs:1146:28:1146:29 | x6 | &T.&T.T | main.rs:1079:5:1080:14 | S2 | | main.rs:1146:28:1146:29 | x6 | &T.T | main.rs:1079:5:1080:14 | S2 | | main.rs:1148:13:1148:14 | x7 | | main.rs:1076:5:1077:19 | S | | main.rs:1148:13:1148:14 | x7 | T | file://:0:0:0:0 | & | @@ -1915,20 +1851,27 @@ inferType | main.rs:1251:16:1251:16 | x | | main.rs:1227:5:1227:13 | S | | main.rs:1253:13:1253:13 | n | | {EXTERNAL LOCATION} | bool | | main.rs:1253:13:1253:13 | n | | file://:0:0:0:0 | & | +| main.rs:1253:13:1253:13 | n | &T | {EXTERNAL LOCATION} | bool | +| main.rs:1253:13:1253:13 | n | &T | file://:0:0:0:0 | & | +| main.rs:1253:13:1253:13 | n | &T.&T | {EXTERNAL LOCATION} | bool | | main.rs:1253:17:1253:24 | * ... | | {EXTERNAL LOCATION} | bool | | main.rs:1253:17:1253:24 | * ... | | file://:0:0:0:0 | & | +| main.rs:1253:17:1253:24 | * ... | &T | {EXTERNAL LOCATION} | bool | +| main.rs:1253:17:1253:24 | * ... | &T | file://:0:0:0:0 | & | +| main.rs:1253:17:1253:24 | * ... | &T.&T | {EXTERNAL LOCATION} | bool | +| main.rs:1253:18:1253:24 | * ... | | {EXTERNAL LOCATION} | bool | | main.rs:1253:18:1253:24 | * ... | | file://:0:0:0:0 | & | | main.rs:1253:18:1253:24 | * ... | &T | {EXTERNAL LOCATION} | bool | | main.rs:1253:18:1253:24 | * ... | &T | file://:0:0:0:0 | & | +| main.rs:1253:18:1253:24 | * ... | &T.&T | {EXTERNAL LOCATION} | bool | | main.rs:1253:19:1253:24 | &... | | file://:0:0:0:0 | & | +| main.rs:1253:19:1253:24 | &... | &T | {EXTERNAL LOCATION} | bool | | main.rs:1253:19:1253:24 | &... | &T | file://:0:0:0:0 | & | | main.rs:1253:19:1253:24 | &... | &T.&T | {EXTERNAL LOCATION} | bool | -| main.rs:1253:19:1253:24 | &... | &T.&T | file://:0:0:0:0 | & | +| main.rs:1253:20:1253:24 | &true | | {EXTERNAL LOCATION} | bool | | main.rs:1253:20:1253:24 | &true | | file://:0:0:0:0 | & | | main.rs:1253:20:1253:24 | &true | &T | {EXTERNAL LOCATION} | bool | -| main.rs:1253:20:1253:24 | &true | &T | file://:0:0:0:0 | & | | main.rs:1253:21:1253:24 | true | | {EXTERNAL LOCATION} | bool | -| main.rs:1253:21:1253:24 | true | | file://:0:0:0:0 | & | | main.rs:1257:13:1257:20 | mut flag | | main.rs:1216:5:1219:5 | MyFlag | | main.rs:1257:24:1257:41 | ...::default(...) | | main.rs:1216:5:1219:5 | MyFlag | | main.rs:1258:22:1258:30 | &mut flag | | file://:0:0:0:0 | & | @@ -2794,6 +2737,8 @@ inferType | main.rs:1716:46:1716:46 | 0 | | {EXTERNAL LOCATION} | i32 | | main.rs:1716:46:1716:46 | 0 | | {EXTERNAL LOCATION} | i64 | | main.rs:1716:52:1716:63 | default_vec2 | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1720:13:1720:24 | default_vec2 | | main.rs:1356:5:1361:5 | Vec2 | +| main.rs:1720:28:1720:45 | ...::default(...) | | main.rs:1356:5:1361:5 | Vec2 | | main.rs:1721:13:1721:26 | vec2_zero_plus | | {EXTERNAL LOCATION} | bool | | main.rs:1721:30:1721:48 | Vec2 {...} | | main.rs:1356:5:1361:5 | Vec2 | | main.rs:1721:30:1721:64 | ... == ... | | {EXTERNAL LOCATION} | bool | @@ -2801,6 +2746,7 @@ inferType | main.rs:1721:40:1721:40 | 0 | | {EXTERNAL LOCATION} | i64 | | main.rs:1721:46:1721:46 | 0 | | {EXTERNAL LOCATION} | i32 | | main.rs:1721:46:1721:46 | 0 | | {EXTERNAL LOCATION} | i64 | +| main.rs:1721:53:1721:64 | default_vec2 | | main.rs:1356:5:1361:5 | Vec2 | | main.rs:1731:18:1731:21 | SelfParam | | main.rs:1728:5:1728:14 | S1 | | main.rs:1734:25:1736:5 | { ... } | | main.rs:1728:5:1728:14 | S1 | | main.rs:1735:9:1735:10 | S1 | | main.rs:1728:5:1728:14 | S1 | @@ -2990,14 +2936,14 @@ inferType | main.rs:1899:19:1899:23 | SelfParam | &T | {EXTERNAL LOCATION} | i64 | | main.rs:1899:26:1899:30 | value | | file://:0:0:0:0 | & | | main.rs:1899:26:1899:30 | value | &T | {EXTERNAL LOCATION} | i64 | -| main.rs:1899:26:1899:30 | value | &T | file://:0:0:0:0 | & | | main.rs:1899:47:1901:9 | { ... } | | {EXTERNAL LOCATION} | i64 | | main.rs:1899:47:1901:9 | { ... } | | file://:0:0:0:0 | & | +| main.rs:1899:47:1901:9 | { ... } | &T | {EXTERNAL LOCATION} | i64 | | main.rs:1900:13:1900:18 | * ... | | {EXTERNAL LOCATION} | i64 | | main.rs:1900:13:1900:18 | * ... | | file://:0:0:0:0 | & | +| main.rs:1900:13:1900:18 | * ... | &T | {EXTERNAL LOCATION} | i64 | | main.rs:1900:14:1900:18 | value | | file://:0:0:0:0 | & | | main.rs:1900:14:1900:18 | value | &T | {EXTERNAL LOCATION} | i64 | -| main.rs:1900:14:1900:18 | value | &T | file://:0:0:0:0 | & | | main.rs:1906:19:1906:23 | SelfParam | | file://:0:0:0:0 | & | | main.rs:1906:19:1906:23 | SelfParam | &T | {EXTERNAL LOCATION} | i64 | | main.rs:1906:26:1906:30 | value | | {EXTERNAL LOCATION} | bool | From 6b2c125bb0cf1a386ce701cae5c09576a9391fb5 Mon Sep 17 00:00:00 2001 From: Simon Friis Vindum Date: Thu, 19 Jun 2025 16:14:22 +0200 Subject: [PATCH 6/7] Rust: Updated expected files --- .../test/library-tests/dataflow/global/main.rs | 2 +- .../dataflow/global/viableCallable.expected | 2 ++ .../dataflow/local/DataFlowStep.expected | 18 ++++++++++++++++++ .../PathResolutionConsistency.expected | 3 +++ .../PathResolutionConsistency.expected | 6 ++++++ 5 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 rust/ql/test/library-tests/type-inference/CONSISTENCY/PathResolutionConsistency.expected diff --git a/rust/ql/test/library-tests/dataflow/global/main.rs b/rust/ql/test/library-tests/dataflow/global/main.rs index 6ca8f20f027c..fb5acfb7c606 100644 --- a/rust/ql/test/library-tests/dataflow/global/main.rs +++ b/rust/ql/test/library-tests/dataflow/global/main.rs @@ -227,7 +227,7 @@ fn test_operator_overloading() { let a = MyInt { value: source(28) }; let c = *a; - sink(c); // $ MISSING: hasValueFlow=28 + sink(c); // $ hasTaintFlow=28 MISSING: hasValueFlow=28 } trait MyTrait { diff --git a/rust/ql/test/library-tests/dataflow/global/viableCallable.expected b/rust/ql/test/library-tests/dataflow/global/viableCallable.expected index be147a36ed3f..6fdac9700b6c 100644 --- a/rust/ql/test/library-tests/dataflow/global/viableCallable.expected +++ b/rust/ql/test/library-tests/dataflow/global/viableCallable.expected @@ -40,6 +40,8 @@ | main.rs:165:13:165:34 | ...::new(...) | main.rs:158:5:161:5 | fn new | | main.rs:165:24:165:33 | source(...) | main.rs:1:1:3:1 | fn source | | main.rs:167:5:167:11 | sink(...) | main.rs:5:1:7:1 | fn sink | +| main.rs:181:10:181:14 | * ... | main.rs:188:5:190:5 | fn deref | +| main.rs:189:11:189:15 | * ... | main.rs:188:5:190:5 | fn deref | | main.rs:195:28:195:36 | source(...) | main.rs:1:1:3:1 | fn source | | main.rs:197:13:197:17 | ... + ... | main.rs:173:5:176:5 | fn add | | main.rs:198:5:198:17 | sink(...) | main.rs:5:1:7:1 | fn sink | diff --git a/rust/ql/test/library-tests/dataflow/local/DataFlowStep.expected b/rust/ql/test/library-tests/dataflow/local/DataFlowStep.expected index dd9bb4ae810e..10fe084f0a2b 100644 --- a/rust/ql/test/library-tests/dataflow/local/DataFlowStep.expected +++ b/rust/ql/test/library-tests/dataflow/local/DataFlowStep.expected @@ -114,6 +114,8 @@ localStep | main.rs:89:9:89:9 | i | main.rs:89:9:89:9 | [SSA] i | | main.rs:89:9:89:9 | i | main.rs:89:9:89:9 | i | | main.rs:89:13:89:31 | ...::new(...) | main.rs:89:9:89:9 | i | +| main.rs:90:11:90:11 | [post] receiver for i | main.rs:90:11:90:11 | [post] i | +| main.rs:90:11:90:11 | i | main.rs:90:11:90:11 | receiver for i | | main.rs:97:9:97:9 | [SSA] a | main.rs:98:10:98:10 | a | | main.rs:97:9:97:9 | a | main.rs:97:9:97:9 | [SSA] a | | main.rs:97:9:97:9 | a | main.rs:97:9:97:9 | a | @@ -732,6 +734,8 @@ localStep | main.rs:482:11:482:19 | vs.iter() | main.rs:482:11:482:19 | receiver for vs.iter() | | main.rs:482:11:482:26 | ... .next() | main.rs:482:11:482:26 | receiver for ... .next() | | main.rs:482:11:482:26 | [post] receiver for ... .next() | main.rs:482:11:482:26 | [post] ... .next() | +| main.rs:482:11:482:35 | ... .unwrap() | main.rs:482:11:482:35 | receiver for ... .unwrap() | +| main.rs:482:11:482:35 | [post] receiver for ... .unwrap() | main.rs:482:11:482:35 | [post] ... .unwrap() | | main.rs:483:11:483:12 | [post] receiver for vs | main.rs:483:11:483:12 | [post] vs | | main.rs:483:11:483:12 | [post] vs | main.rs:485:14:485:15 | vs | | main.rs:483:11:483:12 | vs | main.rs:483:11:483:12 | receiver for vs | @@ -740,6 +744,8 @@ localStep | main.rs:483:11:483:19 | vs.iter() | main.rs:483:11:483:19 | receiver for vs.iter() | | main.rs:483:11:483:26 | ... .nth(...) | main.rs:483:11:483:26 | receiver for ... .nth(...) | | main.rs:483:11:483:26 | [post] receiver for ... .nth(...) | main.rs:483:11:483:26 | [post] ... .nth(...) | +| main.rs:483:11:483:35 | ... .unwrap() | main.rs:483:11:483:35 | receiver for ... .unwrap() | +| main.rs:483:11:483:35 | [post] receiver for ... .unwrap() | main.rs:483:11:483:35 | [post] ... .unwrap() | | main.rs:485:9:485:9 | [SSA] v | main.rs:486:14:486:14 | v | | main.rs:485:9:485:9 | v | main.rs:485:9:485:9 | [SSA] v | | main.rs:485:9:485:9 | v | main.rs:485:9:485:9 | v | @@ -774,6 +780,8 @@ localStep | main.rs:497:20:497:20 | [SSA] x | main.rs:497:29:497:29 | x | | main.rs:497:20:497:20 | x | main.rs:497:20:497:20 | [SSA] x | | main.rs:497:20:497:20 | x | main.rs:497:20:497:20 | x | +| main.rs:497:29:497:29 | [post] receiver for x | main.rs:497:29:497:29 | [post] x | +| main.rs:497:29:497:29 | x | main.rs:497:29:497:29 | receiver for x | | main.rs:498:5:498:6 | [post] receiver for vs | main.rs:498:5:498:6 | [post] vs | | main.rs:498:5:498:6 | [post] vs | main.rs:500:14:500:15 | vs | | main.rs:498:5:498:6 | vs | main.rs:498:5:498:6 | receiver for vs | @@ -784,6 +792,8 @@ localStep | main.rs:498:25:498:25 | [SSA] x | main.rs:498:34:498:34 | x | | main.rs:498:25:498:25 | x | main.rs:498:25:498:25 | [SSA] x | | main.rs:498:25:498:25 | x | main.rs:498:25:498:25 | x | +| main.rs:498:34:498:34 | [post] receiver for x | main.rs:498:34:498:34 | [post] x | +| main.rs:498:34:498:34 | x | main.rs:498:34:498:34 | receiver for x | | main.rs:500:9:500:9 | [SSA] v | main.rs:501:14:501:14 | v | | main.rs:500:9:500:9 | v | main.rs:500:9:500:9 | [SSA] v | | main.rs:500:9:500:9 | v | main.rs:500:9:500:9 | v | @@ -809,6 +819,8 @@ localStep | main.rs:507:11:507:23 | vs_mut.iter() | main.rs:507:11:507:23 | receiver for vs_mut.iter() | | main.rs:507:11:507:30 | ... .next() | main.rs:507:11:507:30 | receiver for ... .next() | | main.rs:507:11:507:30 | [post] receiver for ... .next() | main.rs:507:11:507:30 | [post] ... .next() | +| main.rs:507:11:507:39 | ... .unwrap() | main.rs:507:11:507:39 | receiver for ... .unwrap() | +| main.rs:507:11:507:39 | [post] receiver for ... .unwrap() | main.rs:507:11:507:39 | [post] ... .unwrap() | | main.rs:508:11:508:16 | [SSA] vs_mut | main.rs:510:19:510:24 | vs_mut | | main.rs:508:11:508:16 | [post] receiver for vs_mut | main.rs:508:11:508:16 | [post] vs_mut | | main.rs:508:11:508:16 | [post] vs_mut | main.rs:510:19:510:24 | vs_mut | @@ -818,6 +830,8 @@ localStep | main.rs:508:11:508:23 | vs_mut.iter() | main.rs:508:11:508:23 | receiver for vs_mut.iter() | | main.rs:508:11:508:30 | ... .nth(...) | main.rs:508:11:508:30 | receiver for ... .nth(...) | | main.rs:508:11:508:30 | [post] receiver for ... .nth(...) | main.rs:508:11:508:30 | [post] ... .nth(...) | +| main.rs:508:11:508:39 | ... .unwrap() | main.rs:508:11:508:39 | receiver for ... .unwrap() | +| main.rs:508:11:508:39 | [post] receiver for ... .unwrap() | main.rs:508:11:508:39 | [post] ... .unwrap() | | main.rs:510:5:512:5 | for ... in ... { ... } | main.rs:478:16:513:1 | { ... } | | main.rs:510:14:510:14 | [SSA] v | main.rs:511:14:511:14 | v | | main.rs:510:14:510:14 | v | main.rs:510:14:510:14 | [SSA] v | @@ -842,6 +856,8 @@ localStep | main.rs:519:17:519:18 | &c | main.rs:519:9:519:13 | c_ref | | main.rs:523:14:523:18 | [post] c_ref | main.rs:524:11:524:15 | c_ref | | main.rs:523:14:523:18 | c_ref | main.rs:524:11:524:15 | c_ref | +| main.rs:524:11:524:15 | [post] receiver for c_ref | main.rs:524:11:524:15 | [post] c_ref | +| main.rs:524:11:524:15 | c_ref | main.rs:524:11:524:15 | receiver for c_ref | | main.rs:528:9:528:9 | [SSA] a | main.rs:530:10:530:10 | a | | main.rs:528:9:528:9 | a | main.rs:528:9:528:9 | [SSA] a | | main.rs:528:9:528:9 | a | main.rs:528:9:528:9 | a | @@ -867,6 +883,7 @@ localStep | main.rs:577:36:577:41 | [post] MacroExpr | main.rs:577:36:577:41 | [post] ...::new(...) | readStep | main.rs:36:9:36:15 | Some(...) | {EXTERNAL LOCATION} | Some | main.rs:36:14:36:14 | _ | +| main.rs:90:11:90:11 | [post] receiver for i | file://:0:0:0:0 | &ref | main.rs:90:11:90:11 | [post] i | | main.rs:90:11:90:11 | i | file://:0:0:0:0 | &ref | main.rs:90:10:90:11 | * ... | | main.rs:98:10:98:10 | a | file://:0:0:0:0 | tuple.0 | main.rs:98:10:98:12 | a.0 | | main.rs:99:10:99:10 | a | file://:0:0:0:0 | tuple.1 | main.rs:99:10:99:12 | a.1 | @@ -981,6 +998,7 @@ readStep | main.rs:510:19:510:35 | vs_mut.iter_mut() | file://:0:0:0:0 | element | main.rs:510:9:510:14 | &mut ... | | main.rs:524:11:524:15 | c_ref | file://:0:0:0:0 | &ref | main.rs:524:10:524:15 | * ... | storeStep +| main.rs:90:11:90:11 | i | file://:0:0:0:0 | &ref | main.rs:90:11:90:11 | receiver for i | | main.rs:97:14:97:22 | source(...) | file://:0:0:0:0 | tuple.0 | main.rs:97:13:97:26 | TupleExpr | | main.rs:97:25:97:25 | 2 | file://:0:0:0:0 | tuple.1 | main.rs:97:13:97:26 | TupleExpr | | main.rs:103:14:103:14 | 2 | file://:0:0:0:0 | tuple.0 | main.rs:103:13:103:30 | TupleExpr | diff --git a/rust/ql/test/library-tests/type-inference/CONSISTENCY/PathResolutionConsistency.expected b/rust/ql/test/library-tests/type-inference/CONSISTENCY/PathResolutionConsistency.expected new file mode 100644 index 000000000000..81551e369e2f --- /dev/null +++ b/rust/ql/test/library-tests/type-inference/CONSISTENCY/PathResolutionConsistency.expected @@ -0,0 +1,3 @@ +multipleMethodCallTargets +| dereference.rs:61:15:61:24 | e1.deref() | file://:0:0:0:0 | fn deref | +| dereference.rs:61:15:61:24 | e1.deref() | file://:0:0:0:0 | fn deref | 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..b67b05a0531f 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,9 @@ 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:103:12:103:44 | ... .write_fmt(...) | file://:0:0:0:0 | fn write_fmt | +| test_logging.rs:103:12:103:44 | ... .write_fmt(...) | file://:0:0:0:0 | fn write_fmt | +| test_logging.rs:107:14:107:46 | ... .write_fmt(...) | file://:0:0:0:0 | fn write_fmt | +| test_logging.rs:107:14:107:46 | ... .write_fmt(...) | file://:0:0:0:0 | fn write_fmt | +| test_logging.rs:111:12:111:44 | ... .write_fmt(...) | file://:0:0:0:0 | fn write_fmt | +| test_logging.rs:111:12:111:44 | ... .write_fmt(...) | file://:0:0:0:0 | fn write_fmt | From bd2812c82180eb3b653e752f404d3557c2075202 Mon Sep 17 00:00:00 2001 From: Simon Friis Vindum Date: Fri, 20 Jun 2025 11:09:01 +0200 Subject: [PATCH 7/7] Rust: Only resolve `deref` methods on references to avoid blowup --- rust/ql/lib/codeql/rust/internal/TypeInference.qll | 9 +++++++++ rust/ql/test/library-tests/type-inference/main.rs | 6 +++--- .../type-inference/type-inference.expected | 14 -------------- .../CONSISTENCY/PathResolutionConsistency.expected | 6 ------ .../CONSISTENCY/PathResolutionConsistency.expected | 14 +++++++------- 5 files changed, 19 insertions(+), 30 deletions(-) diff --git a/rust/ql/lib/codeql/rust/internal/TypeInference.qll b/rust/ql/lib/codeql/rust/internal/TypeInference.qll index a6034608d882..b560ac5ec8c1 100644 --- a/rust/ql/lib/codeql/rust/internal/TypeInference.qll +++ b/rust/ql/lib/codeql/rust/internal/TypeInference.qll @@ -1157,6 +1157,15 @@ final class MethodCall extends Call { ( path0.isCons(TRefTypeParameter(), path) or + ( + not path0.isCons(TRefTypeParameter(), _) and + not (path0.isEmpty() and result = TRefType()) + or + // Ideally we should find all methods on reference types, but as + // that currently causes a blowup we limit this to the `deref` + // method in order to make dereferencing work. + this.getMethodName() = "deref" + ) and path = path0 ) | diff --git a/rust/ql/test/library-tests/type-inference/main.rs b/rust/ql/test/library-tests/type-inference/main.rs index bd8f6a1f25af..109581588a58 100644 --- a/rust/ql/test/library-tests/type-inference/main.rs +++ b/rust/ql/test/library-tests/type-inference/main.rs @@ -1157,14 +1157,14 @@ mod method_call_type_conversion { // https://doc.rust-lang.org/std/string/struct.String.html#deref. let u = x9.parse::(); // $ method=parse type=u:T.u32 - let my_thing = &MyInt { a: 37 }; // $ SPURIOUS: type=my_thing:&T.&T.MyInt + let my_thing = &MyInt { a: 37 }; // implicit borrow of a `&` - let a = my_thing.method_on_borrow(); // $ method=MyInt::method_on_borrow + let a = my_thing.method_on_borrow(); // $ MISSING: method=MyInt::method_on_borrow println!("{:?}", a); // no implicit borrow let my_thing = &MyInt { a: 38 }; - let a = my_thing.method_not_on_borrow(); // $ method=MyInt::method_not_on_borrow + let a = my_thing.method_not_on_borrow(); // $ MISSING: method=MyInt::method_not_on_borrow println!("{:?}", a); } } 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 e39428cc2d77..fdbe769eba8e 100644 --- a/rust/ql/test/library-tests/type-inference/type-inference.expected +++ b/rust/ql/test/library-tests/type-inference/type-inference.expected @@ -1675,26 +1675,15 @@ inferType | main.rs:1158:17:1158:33 | x9.parse() | | {EXTERNAL LOCATION} | Result | | main.rs:1158:17:1158:33 | x9.parse() | T | {EXTERNAL LOCATION} | u32 | | main.rs:1160:13:1160:20 | my_thing | | file://:0:0:0:0 | & | -| main.rs:1160:13:1160:20 | my_thing | &T | file://:0:0:0:0 | & | | main.rs:1160:13:1160:20 | my_thing | &T | main.rs:1082:5:1085:5 | MyInt | -| main.rs:1160:13:1160:20 | my_thing | &T.&T | main.rs:1082:5:1085:5 | MyInt | | main.rs:1160:24:1160:39 | &... | | file://:0:0:0:0 | & | -| main.rs:1160:24:1160:39 | &... | &T | file://:0:0:0:0 | & | | main.rs:1160:24:1160:39 | &... | &T | main.rs:1082:5:1085:5 | MyInt | -| main.rs:1160:24:1160:39 | &... | &T.&T | main.rs:1082:5:1085:5 | MyInt | -| main.rs:1160:25:1160:39 | MyInt {...} | | file://:0:0:0:0 | & | | main.rs:1160:25:1160:39 | MyInt {...} | | main.rs:1082:5:1085:5 | MyInt | -| main.rs:1160:25:1160:39 | MyInt {...} | &T | main.rs:1082:5:1085:5 | MyInt | | main.rs:1160:36:1160:37 | 37 | | {EXTERNAL LOCATION} | i32 | | main.rs:1160:36:1160:37 | 37 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1162:13:1162:13 | a | | {EXTERNAL LOCATION} | i64 | | main.rs:1162:17:1162:24 | my_thing | | file://:0:0:0:0 | & | -| main.rs:1162:17:1162:24 | my_thing | &T | file://:0:0:0:0 | & | | main.rs:1162:17:1162:24 | my_thing | &T | main.rs:1082:5:1085:5 | MyInt | -| main.rs:1162:17:1162:24 | my_thing | &T.&T | main.rs:1082:5:1085:5 | MyInt | -| main.rs:1162:17:1162:43 | my_thing.method_on_borrow() | | {EXTERNAL LOCATION} | i64 | | main.rs:1163:18:1163:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:1163:26:1163:26 | a | | {EXTERNAL LOCATION} | i64 | | main.rs:1166:13:1166:20 | my_thing | | file://:0:0:0:0 | & | | main.rs:1166:13:1166:20 | my_thing | &T | main.rs:1082:5:1085:5 | MyInt | | main.rs:1166:24:1166:39 | &... | | file://:0:0:0:0 | & | @@ -1702,12 +1691,9 @@ inferType | main.rs:1166:25:1166:39 | MyInt {...} | | main.rs:1082:5:1085:5 | MyInt | | main.rs:1166:36:1166:37 | 38 | | {EXTERNAL LOCATION} | i32 | | main.rs:1166:36:1166:37 | 38 | | {EXTERNAL LOCATION} | i64 | -| main.rs:1167:13:1167:13 | a | | {EXTERNAL LOCATION} | i64 | | main.rs:1167:17:1167:24 | my_thing | | file://:0:0:0:0 | & | | main.rs:1167:17:1167:24 | my_thing | &T | main.rs:1082:5:1085:5 | MyInt | -| main.rs:1167:17:1167:47 | my_thing.method_not_on_borrow() | | {EXTERNAL LOCATION} | i64 | | main.rs:1168:18:1168:23 | "{:?}\\n" | | {EXTERNAL LOCATION} | str | -| main.rs:1168:26:1168:26 | a | | {EXTERNAL LOCATION} | i64 | | main.rs:1175:16:1175:20 | SelfParam | | file://:0:0:0:0 | & | | main.rs:1175:16:1175:20 | SelfParam | &T | main.rs:1173:5:1181:5 | Self [trait MyTrait] | | main.rs:1178:16:1178:20 | SelfParam | | file://:0:0:0:0 | & | 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 b67b05a0531f..36e75877d2be 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,9 +5,3 @@ 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:103:12:103:44 | ... .write_fmt(...) | file://:0:0:0:0 | fn write_fmt | -| test_logging.rs:103:12:103:44 | ... .write_fmt(...) | file://:0:0:0:0 | fn write_fmt | -| test_logging.rs:107:14:107:46 | ... .write_fmt(...) | file://:0:0:0:0 | fn write_fmt | -| test_logging.rs:107:14:107:46 | ... .write_fmt(...) | file://:0:0:0:0 | fn write_fmt | -| test_logging.rs:111:12:111:44 | ... .write_fmt(...) | file://:0:0:0:0 | fn write_fmt | -| test_logging.rs:111:12:111:44 | ... .write_fmt(...) | file://:0:0:0:0 | fn write_fmt | 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 767f33660084..e3bd532388b3 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,30 +1,30 @@ 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.173) | +| main.rs:218:14:218:17 | libc | file://:0:0:0:0 | Crate(libc@0.2.174) | | 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:16 | libc | file://:0:0:0:0 | Crate(libc@0.2.174) | | 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.173) | +| main.rs:220:13:220:16 | libc | file://:0:0:0:0 | Crate(libc@0.2.174) | | 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:16 | libc | file://:0:0:0:0 | Crate(libc@0.2.174) | | 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.173) | +| main.rs:222:13:222:16 | libc | file://:0:0:0:0 | Crate(libc@0.2.174) | | 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:16 | libc | file://:0:0:0:0 | Crate(libc@0.2.174) | | 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.173) | +| main.rs:224:13:224:16 | libc | file://:0:0:0:0 | Crate(libc@0.2.174) | | 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 |