Skip to content

Commit 53ee565

Browse files
committed
Rust: Add more type inference tests
1 parent 76544f2 commit 53ee565

File tree

2 files changed

+254
-63
lines changed

2 files changed

+254
-63
lines changed

rust/ql/test/library-tests/type-inference/main.rs

Lines changed: 116 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -2346,6 +2346,121 @@ mod tuples {
23462346
}
23472347
}
23482348

2349+
pub mod pattern_matching {
2350+
struct MyRecordStruct<T1, T2> {
2351+
value1: T1,
2352+
value2: T2,
2353+
}
2354+
2355+
struct MyTupleStruct<T1, T2>(T1, T2);
2356+
2357+
enum MyEnum<T1, T2> {
2358+
Variant1 { value1: T1, value2: T2 },
2359+
Variant2(T2, T1),
2360+
}
2361+
2362+
pub fn f() -> Option<()> {
2363+
let value = Some(42);
2364+
if let Some(mesg) = value {
2365+
let mesg = mesg; // $ MISSING: type=mesg:i32
2366+
println!("{mesg}");
2367+
}
2368+
match value {
2369+
Some(mesg) => {
2370+
let mesg = mesg; // $ MISSING: type=mesg:i32
2371+
println!("{mesg}");
2372+
}
2373+
None => (),
2374+
};
2375+
let mesg = value.unwrap(); // $ method=unwrap
2376+
let mesg = mesg; // $ type=mesg:i32
2377+
println!("{mesg}");
2378+
let mesg = value?; // $ type=mesg:i32
2379+
println!("{mesg}");
2380+
2381+
let value2 = &Some(42);
2382+
if let &Some(mesg) = value2 {
2383+
let mesg = mesg; // $ MISSING: type=mesg:i32
2384+
println!("{mesg}");
2385+
}
2386+
2387+
let value3 = 42;
2388+
if let ref mesg = value3 {
2389+
let mesg = mesg; // $ MISSING: type=mesg:&T.i32
2390+
println!("{mesg}");
2391+
}
2392+
2393+
let value4 = Some(42);
2394+
if let Some(ref mesg) = value4 {
2395+
let mesg = mesg; // $ MISSING: type=mesg:&T.i32
2396+
println!("{mesg}");
2397+
}
2398+
2399+
let ref value5 = 42;
2400+
let x = value5; // $ MISSING: type=x:&T.i32
2401+
2402+
let my_record_struct = MyRecordStruct {
2403+
value1: 42,
2404+
value2: false,
2405+
};
2406+
if let MyRecordStruct { value1, value2 } = my_record_struct {
2407+
let x = value1; // $ MISSING: type=x:i32
2408+
let y = value2; // $ MISSING: type=y:bool
2409+
();
2410+
}
2411+
2412+
let my_tuple_struct = MyTupleStruct(42, false);
2413+
if let MyTupleStruct(value1, value2) = my_tuple_struct {
2414+
let x = value1; // $ MISSING: type=x:i32
2415+
let y = value2; // $ MISSING: type=y:bool
2416+
();
2417+
}
2418+
2419+
let my_enum1 = MyEnum::Variant1 {
2420+
value1: 42,
2421+
value2: false,
2422+
};
2423+
match my_enum1 {
2424+
MyEnum::Variant1 { value1, value2 } => {
2425+
let x = value1; // $ MISSING: type=x:i32
2426+
let y = value2; // $ MISSING: type=y:bool
2427+
();
2428+
}
2429+
MyEnum::Variant2(value1, value2) => {
2430+
let x = value1; // $ MISSING: type=x:bool
2431+
let y = value2; // $ MISSING: type=y:i32
2432+
();
2433+
}
2434+
}
2435+
2436+
let my_nested_enum = MyEnum::Variant2(
2437+
false,
2438+
MyRecordStruct {
2439+
value1: 42,
2440+
value2: "string",
2441+
},
2442+
);
2443+
2444+
match my_nested_enum {
2445+
MyEnum::Variant2(
2446+
value1,
2447+
MyRecordStruct {
2448+
value1: x,
2449+
value2: y,
2450+
},
2451+
) => {
2452+
let a = value1; // $ MISSING: type=a:bool
2453+
let b = x; // $ MISSING: type=b:i32
2454+
let c = y; // $ MISSING: type=c:&T.str
2455+
();
2456+
}
2457+
_ => (),
2458+
}
2459+
2460+
None
2461+
}
2462+
}
2463+
23492464
fn main() {
23502465
field_access::f(); // $ method=f
23512466
method_impl::f(); // $ method=f
@@ -2374,27 +2489,5 @@ fn main() {
23742489
method_determined_by_argument_type::f(); // $ method=f
23752490
tuples::f(); // $ method=f
23762491
dereference::test(); // $ method=test
2377-
}
2378-
2379-
pub mod unwrap {
2380-
pub fn test_unwrapping() -> Option<()> {
2381-
let value = Some(42);
2382-
if let Some(mesg) = value {
2383-
let mesg = mesg; // $ MISSING: type=mesg:i32
2384-
println!("{mesg}");
2385-
}
2386-
match value {
2387-
Some(mesg) => {
2388-
let mesg = mesg; // $ MISSING: type=mesg:i32
2389-
println!("{mesg}");
2390-
}
2391-
None => (),
2392-
};
2393-
let mesg = value.unwrap(); // $ method=unwrap
2394-
let mesg = mesg; // $ type=mesg:i32
2395-
println!("{mesg}");
2396-
let mesg = value?; // $ type=mesg:i32
2397-
println!("{mesg}");
2398-
None
2399-
}
2492+
pattern_matching::f(); // $ method=f
24002493
}

rust/ql/test/library-tests/type-inference/type-inference.expected

Lines changed: 138 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -4009,48 +4009,146 @@ inferType
40094009
| main.rs:2326:14:2326:18 | S1 {...} | | main.rs:2322:5:2322:16 | S1 |
40104010
| main.rs:2326:21:2326:25 | S1 {...} | | main.rs:2322:5:2322:16 | S1 |
40114011
| main.rs:2328:16:2328:19 | SelfParam | | main.rs:2322:5:2322:16 | S1 |
4012-
| main.rs:2351:5:2351:20 | ...::f(...) | | main.rs:72:5:72:21 | Foo |
4013-
| main.rs:2352:5:2352:60 | ...::g(...) | | main.rs:72:5:72:21 | Foo |
4014-
| main.rs:2352:20:2352:38 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo |
4015-
| main.rs:2352:41:2352:59 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo |
4016-
| main.rs:2368:5:2368:15 | ...::f(...) | | {EXTERNAL LOCATION} | trait Future |
4017-
| main.rs:2380:44:2399:5 | { ... } | | {EXTERNAL LOCATION} | Option |
4018-
| main.rs:2381:13:2381:17 | value | | {EXTERNAL LOCATION} | Option |
4019-
| main.rs:2381:13:2381:17 | value | T | {EXTERNAL LOCATION} | i32 |
4020-
| main.rs:2381:21:2381:28 | Some(...) | | {EXTERNAL LOCATION} | Option |
4021-
| main.rs:2381:21:2381:28 | Some(...) | T | {EXTERNAL LOCATION} | i32 |
4022-
| main.rs:2381:26:2381:27 | 42 | | {EXTERNAL LOCATION} | i32 |
4023-
| main.rs:2382:29:2382:33 | value | | {EXTERNAL LOCATION} | Option |
4024-
| main.rs:2382:29:2382:33 | value | T | {EXTERNAL LOCATION} | i32 |
4012+
| main.rs:2362:30:2461:5 | { ... } | | {EXTERNAL LOCATION} | Option |
4013+
| main.rs:2363:13:2363:17 | value | | {EXTERNAL LOCATION} | Option |
4014+
| main.rs:2363:13:2363:17 | value | T | {EXTERNAL LOCATION} | i32 |
4015+
| main.rs:2363:21:2363:28 | Some(...) | | {EXTERNAL LOCATION} | Option |
4016+
| main.rs:2363:21:2363:28 | Some(...) | T | {EXTERNAL LOCATION} | i32 |
4017+
| main.rs:2363:26:2363:27 | 42 | | {EXTERNAL LOCATION} | i32 |
4018+
| main.rs:2364:29:2364:33 | value | | {EXTERNAL LOCATION} | Option |
4019+
| main.rs:2364:29:2364:33 | value | T | {EXTERNAL LOCATION} | i32 |
4020+
| main.rs:2366:22:2366:29 | "{mesg}\\n" | | file://:0:0:0:0 | & |
4021+
| main.rs:2366:22:2366:29 | "{mesg}\\n" | &T | {EXTERNAL LOCATION} | str |
4022+
| main.rs:2366:22:2366:29 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments |
4023+
| main.rs:2366:22:2366:29 | MacroExpr | | {EXTERNAL LOCATION} | Arguments |
4024+
| main.rs:2368:15:2368:19 | value | | {EXTERNAL LOCATION} | Option |
4025+
| main.rs:2368:15:2368:19 | value | T | {EXTERNAL LOCATION} | i32 |
4026+
| main.rs:2371:26:2371:33 | "{mesg}\\n" | | file://:0:0:0:0 | & |
4027+
| main.rs:2371:26:2371:33 | "{mesg}\\n" | &T | {EXTERNAL LOCATION} | str |
4028+
| main.rs:2371:26:2371:33 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments |
4029+
| main.rs:2371:26:2371:33 | MacroExpr | | {EXTERNAL LOCATION} | Arguments |
4030+
| main.rs:2375:13:2375:16 | mesg | | {EXTERNAL LOCATION} | i32 |
4031+
| main.rs:2375:20:2375:24 | value | | {EXTERNAL LOCATION} | Option |
4032+
| main.rs:2375:20:2375:24 | value | T | {EXTERNAL LOCATION} | i32 |
4033+
| main.rs:2375:20:2375:33 | value.unwrap() | | {EXTERNAL LOCATION} | i32 |
4034+
| main.rs:2376:13:2376:16 | mesg | | {EXTERNAL LOCATION} | i32 |
4035+
| main.rs:2376:20:2376:23 | mesg | | {EXTERNAL LOCATION} | i32 |
4036+
| main.rs:2377:18:2377:25 | "{mesg}\\n" | | file://:0:0:0:0 | & |
4037+
| main.rs:2377:18:2377:25 | "{mesg}\\n" | &T | {EXTERNAL LOCATION} | str |
4038+
| main.rs:2377:18:2377:25 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments |
4039+
| main.rs:2377:18:2377:25 | MacroExpr | | {EXTERNAL LOCATION} | Arguments |
4040+
| main.rs:2377:20:2377:23 | mesg | | {EXTERNAL LOCATION} | i32 |
4041+
| main.rs:2378:13:2378:16 | mesg | | {EXTERNAL LOCATION} | i32 |
4042+
| main.rs:2378:20:2378:24 | value | | {EXTERNAL LOCATION} | Option |
4043+
| main.rs:2378:20:2378:24 | value | T | {EXTERNAL LOCATION} | i32 |
4044+
| main.rs:2378:20:2378:25 | TryExpr | | {EXTERNAL LOCATION} | i32 |
4045+
| main.rs:2379:18:2379:25 | "{mesg}\\n" | | file://:0:0:0:0 | & |
4046+
| main.rs:2379:18:2379:25 | "{mesg}\\n" | &T | {EXTERNAL LOCATION} | str |
4047+
| main.rs:2379:18:2379:25 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments |
4048+
| main.rs:2379:18:2379:25 | MacroExpr | | {EXTERNAL LOCATION} | Arguments |
4049+
| main.rs:2379:20:2379:23 | mesg | | {EXTERNAL LOCATION} | i32 |
4050+
| main.rs:2381:13:2381:18 | value2 | | file://:0:0:0:0 | & |
4051+
| main.rs:2381:13:2381:18 | value2 | &T | {EXTERNAL LOCATION} | Option |
4052+
| main.rs:2381:13:2381:18 | value2 | &T.T | {EXTERNAL LOCATION} | i32 |
4053+
| main.rs:2381:22:2381:30 | &... | | file://:0:0:0:0 | & |
4054+
| main.rs:2381:22:2381:30 | &... | &T | {EXTERNAL LOCATION} | Option |
4055+
| main.rs:2381:22:2381:30 | &... | &T.T | {EXTERNAL LOCATION} | i32 |
4056+
| main.rs:2381:23:2381:30 | Some(...) | | {EXTERNAL LOCATION} | Option |
4057+
| main.rs:2381:23:2381:30 | Some(...) | T | {EXTERNAL LOCATION} | i32 |
4058+
| main.rs:2381:28:2381:29 | 42 | | {EXTERNAL LOCATION} | i32 |
4059+
| main.rs:2382:30:2382:35 | value2 | | file://:0:0:0:0 | & |
4060+
| main.rs:2382:30:2382:35 | value2 | &T | {EXTERNAL LOCATION} | Option |
4061+
| main.rs:2382:30:2382:35 | value2 | &T.T | {EXTERNAL LOCATION} | i32 |
40254062
| main.rs:2384:22:2384:29 | "{mesg}\\n" | | file://:0:0:0:0 | & |
40264063
| main.rs:2384:22:2384:29 | "{mesg}\\n" | &T | {EXTERNAL LOCATION} | str |
40274064
| main.rs:2384:22:2384:29 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments |
40284065
| main.rs:2384:22:2384:29 | MacroExpr | | {EXTERNAL LOCATION} | Arguments |
4029-
| main.rs:2386:15:2386:19 | value | | {EXTERNAL LOCATION} | Option |
4030-
| main.rs:2386:15:2386:19 | value | T | {EXTERNAL LOCATION} | i32 |
4031-
| main.rs:2389:26:2389:33 | "{mesg}\\n" | | file://:0:0:0:0 | & |
4032-
| main.rs:2389:26:2389:33 | "{mesg}\\n" | &T | {EXTERNAL LOCATION} | str |
4033-
| main.rs:2389:26:2389:33 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments |
4034-
| main.rs:2389:26:2389:33 | MacroExpr | | {EXTERNAL LOCATION} | Arguments |
4035-
| main.rs:2393:13:2393:16 | mesg | | {EXTERNAL LOCATION} | i32 |
4036-
| main.rs:2393:20:2393:24 | value | | {EXTERNAL LOCATION} | Option |
4037-
| main.rs:2393:20:2393:24 | value | T | {EXTERNAL LOCATION} | i32 |
4038-
| main.rs:2393:20:2393:33 | value.unwrap() | | {EXTERNAL LOCATION} | i32 |
4039-
| main.rs:2394:13:2394:16 | mesg | | {EXTERNAL LOCATION} | i32 |
4040-
| main.rs:2394:20:2394:23 | mesg | | {EXTERNAL LOCATION} | i32 |
4041-
| main.rs:2395:18:2395:25 | "{mesg}\\n" | | file://:0:0:0:0 | & |
4042-
| main.rs:2395:18:2395:25 | "{mesg}\\n" | &T | {EXTERNAL LOCATION} | str |
4043-
| main.rs:2395:18:2395:25 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments |
4044-
| main.rs:2395:18:2395:25 | MacroExpr | | {EXTERNAL LOCATION} | Arguments |
4045-
| main.rs:2395:20:2395:23 | mesg | | {EXTERNAL LOCATION} | i32 |
4046-
| main.rs:2396:13:2396:16 | mesg | | {EXTERNAL LOCATION} | i32 |
4047-
| main.rs:2396:20:2396:24 | value | | {EXTERNAL LOCATION} | Option |
4048-
| main.rs:2396:20:2396:24 | value | T | {EXTERNAL LOCATION} | i32 |
4049-
| main.rs:2396:20:2396:25 | TryExpr | | {EXTERNAL LOCATION} | i32 |
4050-
| main.rs:2397:18:2397:25 | "{mesg}\\n" | | file://:0:0:0:0 | & |
4051-
| main.rs:2397:18:2397:25 | "{mesg}\\n" | &T | {EXTERNAL LOCATION} | str |
4052-
| main.rs:2397:18:2397:25 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments |
4053-
| main.rs:2397:18:2397:25 | MacroExpr | | {EXTERNAL LOCATION} | Arguments |
4054-
| main.rs:2397:20:2397:23 | mesg | | {EXTERNAL LOCATION} | i32 |
4055-
| main.rs:2398:9:2398:12 | None | | {EXTERNAL LOCATION} | Option |
4066+
| main.rs:2387:13:2387:18 | value3 | | {EXTERNAL LOCATION} | i32 |
4067+
| main.rs:2387:22:2387:23 | 42 | | {EXTERNAL LOCATION} | i32 |
4068+
| main.rs:2388:27:2388:32 | value3 | | {EXTERNAL LOCATION} | i32 |
4069+
| main.rs:2390:22:2390:29 | "{mesg}\\n" | | file://:0:0:0:0 | & |
4070+
| main.rs:2390:22:2390:29 | "{mesg}\\n" | &T | {EXTERNAL LOCATION} | str |
4071+
| main.rs:2390:22:2390:29 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments |
4072+
| main.rs:2390:22:2390:29 | MacroExpr | | {EXTERNAL LOCATION} | Arguments |
4073+
| main.rs:2393:13:2393:18 | value4 | | {EXTERNAL LOCATION} | Option |
4074+
| main.rs:2393:13:2393:18 | value4 | T | {EXTERNAL LOCATION} | i32 |
4075+
| main.rs:2393:22:2393:29 | Some(...) | | {EXTERNAL LOCATION} | Option |
4076+
| main.rs:2393:22:2393:29 | Some(...) | T | {EXTERNAL LOCATION} | i32 |
4077+
| main.rs:2393:27:2393:28 | 42 | | {EXTERNAL LOCATION} | i32 |
4078+
| main.rs:2394:33:2394:38 | value4 | | {EXTERNAL LOCATION} | Option |
4079+
| main.rs:2394:33:2394:38 | value4 | T | {EXTERNAL LOCATION} | i32 |
4080+
| main.rs:2396:22:2396:29 | "{mesg}\\n" | | file://:0:0:0:0 | & |
4081+
| main.rs:2396:22:2396:29 | "{mesg}\\n" | &T | {EXTERNAL LOCATION} | str |
4082+
| main.rs:2396:22:2396:29 | FormatArgsExpr | | {EXTERNAL LOCATION} | Arguments |
4083+
| main.rs:2396:22:2396:29 | MacroExpr | | {EXTERNAL LOCATION} | Arguments |
4084+
| main.rs:2399:13:2399:22 | ref value5 | | {EXTERNAL LOCATION} | i32 |
4085+
| main.rs:2399:26:2399:27 | 42 | | {EXTERNAL LOCATION} | i32 |
4086+
| main.rs:2400:13:2400:13 | x | | {EXTERNAL LOCATION} | i32 |
4087+
| main.rs:2400:17:2400:22 | value5 | | {EXTERNAL LOCATION} | i32 |
4088+
| main.rs:2402:13:2402:28 | my_record_struct | | main.rs:2350:5:2353:5 | MyRecordStruct |
4089+
| main.rs:2402:13:2402:28 | my_record_struct | T1 | {EXTERNAL LOCATION} | i32 |
4090+
| main.rs:2402:13:2402:28 | my_record_struct | T2 | {EXTERNAL LOCATION} | bool |
4091+
| main.rs:2402:32:2405:9 | MyRecordStruct {...} | | main.rs:2350:5:2353:5 | MyRecordStruct |
4092+
| main.rs:2402:32:2405:9 | MyRecordStruct {...} | T1 | {EXTERNAL LOCATION} | i32 |
4093+
| main.rs:2402:32:2405:9 | MyRecordStruct {...} | T2 | {EXTERNAL LOCATION} | bool |
4094+
| main.rs:2403:21:2403:22 | 42 | | {EXTERNAL LOCATION} | i32 |
4095+
| main.rs:2404:21:2404:25 | false | | {EXTERNAL LOCATION} | bool |
4096+
| main.rs:2406:52:2406:67 | my_record_struct | | main.rs:2350:5:2353:5 | MyRecordStruct |
4097+
| main.rs:2406:52:2406:67 | my_record_struct | T1 | {EXTERNAL LOCATION} | i32 |
4098+
| main.rs:2406:52:2406:67 | my_record_struct | T2 | {EXTERNAL LOCATION} | bool |
4099+
| main.rs:2412:13:2412:27 | my_tuple_struct | | main.rs:2355:5:2355:41 | MyTupleStruct |
4100+
| main.rs:2412:13:2412:27 | my_tuple_struct | T1 | {EXTERNAL LOCATION} | i32 |
4101+
| main.rs:2412:13:2412:27 | my_tuple_struct | T2 | {EXTERNAL LOCATION} | bool |
4102+
| main.rs:2412:31:2412:54 | MyTupleStruct(...) | | main.rs:2355:5:2355:41 | MyTupleStruct |
4103+
| main.rs:2412:31:2412:54 | MyTupleStruct(...) | T1 | {EXTERNAL LOCATION} | i32 |
4104+
| main.rs:2412:31:2412:54 | MyTupleStruct(...) | T2 | {EXTERNAL LOCATION} | bool |
4105+
| main.rs:2412:45:2412:46 | 42 | | {EXTERNAL LOCATION} | i32 |
4106+
| main.rs:2412:49:2412:53 | false | | {EXTERNAL LOCATION} | bool |
4107+
| main.rs:2413:48:2413:62 | my_tuple_struct | | main.rs:2355:5:2355:41 | MyTupleStruct |
4108+
| main.rs:2413:48:2413:62 | my_tuple_struct | T1 | {EXTERNAL LOCATION} | i32 |
4109+
| main.rs:2413:48:2413:62 | my_tuple_struct | T2 | {EXTERNAL LOCATION} | bool |
4110+
| main.rs:2419:13:2419:20 | my_enum1 | | main.rs:2357:5:2360:5 | MyEnum |
4111+
| main.rs:2419:13:2419:20 | my_enum1 | T1 | {EXTERNAL LOCATION} | i32 |
4112+
| main.rs:2419:13:2419:20 | my_enum1 | T2 | {EXTERNAL LOCATION} | bool |
4113+
| main.rs:2419:24:2422:9 | ...::Variant1 {...} | | main.rs:2357:5:2360:5 | MyEnum |
4114+
| main.rs:2419:24:2422:9 | ...::Variant1 {...} | T1 | {EXTERNAL LOCATION} | i32 |
4115+
| main.rs:2419:24:2422:9 | ...::Variant1 {...} | T2 | {EXTERNAL LOCATION} | bool |
4116+
| main.rs:2420:21:2420:22 | 42 | | {EXTERNAL LOCATION} | i32 |
4117+
| main.rs:2421:21:2421:25 | false | | {EXTERNAL LOCATION} | bool |
4118+
| main.rs:2423:15:2423:22 | my_enum1 | | main.rs:2357:5:2360:5 | MyEnum |
4119+
| main.rs:2423:15:2423:22 | my_enum1 | T1 | {EXTERNAL LOCATION} | i32 |
4120+
| main.rs:2423:15:2423:22 | my_enum1 | T2 | {EXTERNAL LOCATION} | bool |
4121+
| main.rs:2436:13:2436:26 | my_nested_enum | | main.rs:2357:5:2360:5 | MyEnum |
4122+
| main.rs:2436:13:2436:26 | my_nested_enum | T1 | main.rs:2350:5:2353:5 | MyRecordStruct |
4123+
| main.rs:2436:13:2436:26 | my_nested_enum | T1.T1 | {EXTERNAL LOCATION} | i32 |
4124+
| main.rs:2436:13:2436:26 | my_nested_enum | T1.T2 | file://:0:0:0:0 | & |
4125+
| main.rs:2436:13:2436:26 | my_nested_enum | T1.T2.&T | {EXTERNAL LOCATION} | str |
4126+
| main.rs:2436:13:2436:26 | my_nested_enum | T2 | {EXTERNAL LOCATION} | bool |
4127+
| main.rs:2436:30:2442:9 | ...::Variant2(...) | | main.rs:2357:5:2360:5 | MyEnum |
4128+
| main.rs:2436:30:2442:9 | ...::Variant2(...) | T1 | main.rs:2350:5:2353:5 | MyRecordStruct |
4129+
| main.rs:2436:30:2442:9 | ...::Variant2(...) | T1.T1 | {EXTERNAL LOCATION} | i32 |
4130+
| main.rs:2436:30:2442:9 | ...::Variant2(...) | T1.T2 | file://:0:0:0:0 | & |
4131+
| main.rs:2436:30:2442:9 | ...::Variant2(...) | T1.T2.&T | {EXTERNAL LOCATION} | str |
4132+
| main.rs:2436:30:2442:9 | ...::Variant2(...) | T2 | {EXTERNAL LOCATION} | bool |
4133+
| main.rs:2437:13:2437:17 | false | | {EXTERNAL LOCATION} | bool |
4134+
| main.rs:2438:13:2441:13 | MyRecordStruct {...} | | main.rs:2350:5:2353:5 | MyRecordStruct |
4135+
| main.rs:2438:13:2441:13 | MyRecordStruct {...} | T1 | {EXTERNAL LOCATION} | i32 |
4136+
| main.rs:2438:13:2441:13 | MyRecordStruct {...} | T2 | file://:0:0:0:0 | & |
4137+
| main.rs:2438:13:2441:13 | MyRecordStruct {...} | T2.&T | {EXTERNAL LOCATION} | str |
4138+
| main.rs:2439:25:2439:26 | 42 | | {EXTERNAL LOCATION} | i32 |
4139+
| main.rs:2440:25:2440:32 | "string" | | file://:0:0:0:0 | & |
4140+
| main.rs:2440:25:2440:32 | "string" | &T | {EXTERNAL LOCATION} | str |
4141+
| main.rs:2444:15:2444:28 | my_nested_enum | | main.rs:2357:5:2360:5 | MyEnum |
4142+
| main.rs:2444:15:2444:28 | my_nested_enum | T1 | main.rs:2350:5:2353:5 | MyRecordStruct |
4143+
| main.rs:2444:15:2444:28 | my_nested_enum | T1.T1 | {EXTERNAL LOCATION} | i32 |
4144+
| main.rs:2444:15:2444:28 | my_nested_enum | T1.T2 | file://:0:0:0:0 | & |
4145+
| main.rs:2444:15:2444:28 | my_nested_enum | T1.T2.&T | {EXTERNAL LOCATION} | str |
4146+
| main.rs:2444:15:2444:28 | my_nested_enum | T2 | {EXTERNAL LOCATION} | bool |
4147+
| main.rs:2460:9:2460:12 | None | | {EXTERNAL LOCATION} | Option |
4148+
| main.rs:2466:5:2466:20 | ...::f(...) | | main.rs:72:5:72:21 | Foo |
4149+
| main.rs:2467:5:2467:60 | ...::g(...) | | main.rs:72:5:72:21 | Foo |
4150+
| main.rs:2467:20:2467:38 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo |
4151+
| main.rs:2467:41:2467:59 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo |
4152+
| main.rs:2483:5:2483:15 | ...::f(...) | | {EXTERNAL LOCATION} | trait Future |
4153+
| main.rs:2492:5:2492:25 | ...::f(...) | | {EXTERNAL LOCATION} | Option |
40564154
testFailures

0 commit comments

Comments
 (0)