Skip to content

Commit 988e9c6

Browse files
committed
Rust: Add type inference tests for impl Trait
1 parent de290ff commit 988e9c6

File tree

2 files changed

+45
-4
lines changed

2 files changed

+45
-4
lines changed

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

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1305,6 +1305,37 @@ mod async_ {
13051305
}
13061306
}
13071307

1308+
1309+
mod impl_trait {
1310+
struct S1;
1311+
1312+
trait Trait1 {
1313+
fn f1(&self) {} // Trait1f1
1314+
}
1315+
1316+
trait Trait2 {
1317+
fn f2(&self) {} // Trait2f2
1318+
}
1319+
1320+
impl Trait1 for S1 {
1321+
fn f1(&self) {} // S1f1
1322+
}
1323+
1324+
impl Trait2 for S1 {
1325+
fn f2(&self) {} // S1f2
1326+
}
1327+
1328+
fn f1() -> impl Trait1 + Trait2 {
1329+
S1
1330+
}
1331+
1332+
pub fn f() {
1333+
let x = f1();
1334+
x.f1(); // $ MISSING: method=Trait1f1
1335+
x.f2(); // $ MISSING: method=Trait2f2
1336+
}
1337+
}
1338+
13081339
fn main() {
13091340
field_access::f();
13101341
method_impl::f();

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

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1637,7 +1637,17 @@ inferType
16371637
| main.rs:1297:41:1299:5 | { ... } | | main.rs:1287:5:1287:14 | S2 |
16381638
| main.rs:1298:9:1298:10 | S2 | | main.rs:1287:5:1287:14 | S2 |
16391639
| main.rs:1302:9:1302:12 | f1(...) | | main.rs:1271:5:1271:14 | S1 |
1640-
| main.rs:1310:5:1310:20 | ...::f(...) | | main.rs:67:5:67:21 | Foo |
1641-
| main.rs:1311:5:1311:60 | ...::g(...) | | main.rs:67:5:67:21 | Foo |
1642-
| main.rs:1311:20:1311:38 | ...::Foo {...} | | main.rs:67:5:67:21 | Foo |
1643-
| main.rs:1311:41:1311:59 | ...::Foo {...} | | main.rs:67:5:67:21 | Foo |
1640+
| main.rs:1313:15:1313:19 | SelfParam | | file://:0:0:0:0 | & |
1641+
| main.rs:1313:15:1313:19 | SelfParam | &T | main.rs:1312:5:1314:5 | Self [trait Trait1] |
1642+
| main.rs:1317:15:1317:19 | SelfParam | | file://:0:0:0:0 | & |
1643+
| main.rs:1317:15:1317:19 | SelfParam | &T | main.rs:1316:5:1318:5 | Self [trait Trait2] |
1644+
| main.rs:1321:15:1321:19 | SelfParam | | file://:0:0:0:0 | & |
1645+
| main.rs:1321:15:1321:19 | SelfParam | &T | main.rs:1310:5:1310:14 | S1 |
1646+
| main.rs:1325:15:1325:19 | SelfParam | | file://:0:0:0:0 | & |
1647+
| main.rs:1325:15:1325:19 | SelfParam | &T | main.rs:1310:5:1310:14 | S1 |
1648+
| main.rs:1328:37:1330:5 | { ... } | | main.rs:1310:5:1310:14 | S1 |
1649+
| main.rs:1329:9:1329:10 | S1 | | main.rs:1310:5:1310:14 | S1 |
1650+
| main.rs:1341:5:1341:20 | ...::f(...) | | main.rs:67:5:67:21 | Foo |
1651+
| main.rs:1342:5:1342:60 | ...::g(...) | | main.rs:67:5:67:21 | Foo |
1652+
| main.rs:1342:20:1342:38 | ...::Foo {...} | | main.rs:67:5:67:21 | Foo |
1653+
| main.rs:1342:41:1342:59 | ...::Foo {...} | | main.rs:67:5:67:21 | Foo |

0 commit comments

Comments
 (0)