Rust: Add type inference tests for dereferencing

This commit is contained in:
Simon Friis Vindum
2025-06-18 10:45:22 +02:00
parent 699c82a540
commit 9bdb541065
3 changed files with 345 additions and 5 deletions

View File

@@ -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<T> {
value: T,
}
impl<T> Deref for MySmartPointer<T> {
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<char> = Box::new('a');
let _h1 = g1.deref(); // $ method=deref type=_h1:&T.char
// Explicit dereference with type parameter
let g2: Box<char> = Box::new('a');
let _h2 = *g2; // $ method=deref MISSING: type=_h2:char
// Call method on explicitly dereferenced value with type parameter
let g3: Box<i64> = 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();
}

View File

@@ -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();
}

View File

@@ -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