Skip to content

Commit e6109cf

Browse files
committed
Rust: Add type inference tests for impl Trait
1 parent c32e05c commit e6109cf

File tree

2 files changed

+46
-4
lines changed

2 files changed

+46
-4
lines changed

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

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1670,6 +1670,37 @@ mod async_ {
16701670
}
16711671
}
16721672

1673+
1674+
mod impl_trait {
1675+
struct S1;
1676+
1677+
trait Trait1 {
1678+
fn f1(&self) {} // Trait1f1
1679+
}
1680+
1681+
trait Trait2 {
1682+
fn f2(&self) {} // Trait2f2
1683+
}
1684+
1685+
impl Trait1 for S1 {
1686+
fn f1(&self) {} // S1f1
1687+
}
1688+
1689+
impl Trait2 for S1 {
1690+
fn f2(&self) {} // S1f2
1691+
}
1692+
1693+
fn f1() -> impl Trait1 + Trait2 {
1694+
S1
1695+
}
1696+
1697+
pub fn f() {
1698+
let x = f1();
1699+
x.f1(); // $ MISSING: method=Trait1f1
1700+
x.f2(); // $ MISSING: method=Trait2f2
1701+
}
1702+
}
1703+
16731704
fn main() {
16741705
field_access::f();
16751706
method_impl::f();
@@ -1690,4 +1721,5 @@ fn main() {
16901721
builtins::f();
16911722
operators::f();
16921723
async_::f();
1724+
impl_trait::f();
16931725
}

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

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2393,8 +2393,18 @@ inferType
23932393
| main.rs:1662:41:1664:5 | { ... } | | main.rs:1652:5:1652:14 | S2 |
23942394
| main.rs:1663:9:1663:10 | S2 | | main.rs:1652:5:1652:14 | S2 |
23952395
| main.rs:1667:9:1667:12 | f1(...) | | main.rs:1636:5:1636:14 | S1 |
2396-
| main.rs:1675:5:1675:20 | ...::f(...) | | main.rs:67:5:67:21 | Foo |
2397-
| main.rs:1676:5:1676:60 | ...::g(...) | | main.rs:67:5:67:21 | Foo |
2398-
| main.rs:1676:20:1676:38 | ...::Foo {...} | | main.rs:67:5:67:21 | Foo |
2399-
| main.rs:1676:41:1676:59 | ...::Foo {...} | | main.rs:67:5:67:21 | Foo |
2396+
| main.rs:1678:15:1678:19 | SelfParam | | file://:0:0:0:0 | & |
2397+
| main.rs:1678:15:1678:19 | SelfParam | &T | main.rs:1677:5:1679:5 | Self [trait Trait1] |
2398+
| main.rs:1682:15:1682:19 | SelfParam | | file://:0:0:0:0 | & |
2399+
| main.rs:1682:15:1682:19 | SelfParam | &T | main.rs:1681:5:1683:5 | Self [trait Trait2] |
2400+
| main.rs:1686:15:1686:19 | SelfParam | | file://:0:0:0:0 | & |
2401+
| main.rs:1686:15:1686:19 | SelfParam | &T | main.rs:1675:5:1675:14 | S1 |
2402+
| main.rs:1690:15:1690:19 | SelfParam | | file://:0:0:0:0 | & |
2403+
| main.rs:1690:15:1690:19 | SelfParam | &T | main.rs:1675:5:1675:14 | S1 |
2404+
| main.rs:1693:37:1695:5 | { ... } | | main.rs:1675:5:1675:14 | S1 |
2405+
| main.rs:1694:9:1694:10 | S1 | | main.rs:1675:5:1675:14 | S1 |
2406+
| main.rs:1706:5:1706:20 | ...::f(...) | | main.rs:67:5:67:21 | Foo |
2407+
| main.rs:1707:5:1707:60 | ...::g(...) | | main.rs:67:5:67:21 | Foo |
2408+
| main.rs:1707:20:1707:38 | ...::Foo {...} | | main.rs:67:5:67:21 | Foo |
2409+
| main.rs:1707:41:1707:59 | ...::Foo {...} | | main.rs:67:5:67:21 | Foo |
24002410
testFailures

0 commit comments

Comments
 (0)