Skip to content

Commit 63d9b71

Browse files
committed
Rust: More type inference tests
1 parent a5e8fdb commit 63d9b71

File tree

3 files changed

+3862
-3791
lines changed

3 files changed

+3862
-3791
lines changed

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

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,13 @@ multipleCallTargets
55
| dereference.rs:184:17:184:30 | ... .foo() |
66
| dereference.rs:186:17:186:25 | S.bar(...) |
77
| dereference.rs:187:17:187:29 | S.bar(...) |
8-
| main.rs:2459:13:2459:31 | ...::from(...) |
9-
| main.rs:2460:13:2460:31 | ...::from(...) |
10-
| main.rs:2461:13:2461:31 | ...::from(...) |
11-
| main.rs:2467:13:2467:31 | ...::from(...) |
12-
| main.rs:2468:13:2468:31 | ...::from(...) |
13-
| main.rs:2469:13:2469:31 | ...::from(...) |
8+
| main.rs:589:9:589:14 | S4.m() |
9+
| main.rs:590:9:590:18 | ...::m(...) |
10+
| main.rs:591:9:591:20 | ... .m() |
11+
| main.rs:592:9:592:24 | ...::m(...) |
12+
| main.rs:2497:13:2497:31 | ...::from(...) |
13+
| main.rs:2498:13:2498:31 | ...::from(...) |
14+
| main.rs:2499:13:2499:31 | ...::from(...) |
15+
| main.rs:2505:13:2505:31 | ...::from(...) |
16+
| main.rs:2506:13:2506:31 | ...::from(...) |
17+
| main.rs:2507:13:2507:31 | ...::from(...) |

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

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -535,6 +535,37 @@ mod impl_overlap {
535535
}
536536
}
537537

538+
trait MyTrait1 {
539+
// MyTrait1::m
540+
fn m(&self) {}
541+
}
542+
543+
trait MyTrait2: MyTrait1 {}
544+
545+
#[derive(Debug)]
546+
struct S4;
547+
548+
impl MyTrait1 for S4 {
549+
// <S4_as_MyTrait2>::m
550+
fn m(&self) {}
551+
}
552+
553+
impl MyTrait2 for S4 {}
554+
555+
#[derive(Debug)]
556+
struct S5<T5>(T5);
557+
558+
impl MyTrait1 for S5<i32> {
559+
// <S5<i32>_as_MyTrait2>::m
560+
fn m(&self) {}
561+
}
562+
563+
impl MyTrait2 for S5<i32> {}
564+
565+
impl MyTrait1 for S5<bool> {}
566+
567+
impl MyTrait2 for S5<bool> {}
568+
538569
pub fn f() {
539570
let x = S1;
540571
println!("{:?}", x.common_method()); // $ target=S1::common_method
@@ -554,6 +585,13 @@ mod impl_overlap {
554585
let w = S3(S1);
555586
println!("{:?}", w.m(x)); // $ target=S3<T>::m
556587
println!("{:?}", S3::m(&w, x)); // $ target=S3<T>::m
588+
589+
S4.m(); // $ target=<S4_as_MyTrait2>::m $ SPURIOUS: target=MyTrait1::m
590+
S4::m(&S4); // $ target=<S4_as_MyTrait2>::m $ SPURIOUS: target=MyTrait1::m
591+
S5(0i32).m(); // $ target=<S5<i32>_as_MyTrait2>::m $ SPURIOUS: target=MyTrait1::m
592+
S5::m(&S5(0i32)); // $ target=<S5<i32>_as_MyTrait2>::m $ SPURIOUS: target=MyTrait1::m
593+
S5(true).m(); // $ target=MyTrait1::m
594+
S5::m(&S5(true)); // $ target=MyTrait1::m
557595
}
558596
}
559597

0 commit comments

Comments
 (0)