@@ -42,3 +42,34 @@ In each case, we test the following patterns:
4242- ` self: Box<Pin<XXX>> `
4343
4444In the non-reference cases, ` Pin ` causes errors so we substitute ` Rc ` .
45+
46+ ### ` async fn `
47+
48+ For each of the tests above we also check that ` async fn ` behaves as an ` fn ` would.
49+ These tests are in files named ` *-async.rs ` .
50+
51+ Legends:
52+ - ✓ ⟹ Yes / Pass
53+ - X ⟹ No
54+ - α ⟹ lifetime mismatch
55+ - β ⟹ cannot infer an appropriate lifetime
56+ - γ ⟹ missing lifetime specifier
57+
58+ | ` async ` file | Pass? | Conforms to ` fn ` ? | How does it diverge? <br /> ` fn ` ⟶ ` async fn ` |
59+ | --- | --- | --- | --- |
60+ | ` self-async.rs ` | ✓ | ✓ | N/A |
61+ | ` struct-async.rs ` | ✓ | ✓ | N/A |
62+ | ` alias-async.rs ` | ✓ | ✓ | N/A |
63+ | ` assoc-async.rs ` | ✓ | ✓ | N/A |
64+ | ` ref-self-async.rs ` | X | X | α ⟶ β + γ |
65+ | ` ref-mut-self-async.rs ` | X | X | α ⟶ β + γ |
66+ | ` ref-struct-async.rs ` | X | X | α ⟶ β + γ |
67+ | ` ref-mut-struct-async.rs ` | X | X | α ⟶ β + γ |
68+ | ` ref-alias-async.rs ` | X | X | ✓ ⟶ β + γ |
69+ | ` ref-assoc-async.rs ` | X | X | ✓ ⟶ β + γ |
70+ | ` ref-mut-alias-async.rs ` | X | X | ✓ ⟶ β + γ |
71+ | ` lt-self-async.rs ` | ✓ | ✓ | N/A
72+ | ` lt-struct-async.rs ` | ✓ | ✓ | N/A
73+ | ` lt-alias-async.rs ` | ✓ | ✓ | N/A
74+ | ` lt-assoc-async.rs ` | ✓ | ✓ | N/A
75+ | ` lt-ref-self-async.rs ` | X | X | α ⟶ β + γ
0 commit comments