vxx / vlib / v / tests / casts / assert_as_cast_selector_test.v
33 lines · 27 sloc · 706 bytes · 98bbdd7e80922d81897461dc303b889be2c68980
Raw
1struct AssertAsCastPayload {
2 vals []string
3}
4
5struct AssertAsCastOther {}
6
7type AssertAsCastSum = AssertAsCastOther | AssertAsCastPayload
8
9fn assert_as_cast_sum() AssertAsCastSum {
10 return AssertAsCastPayload{
11 vals: ['foo', 'bar']
12 }
13}
14
15fn assert_as_cast_sums() []AssertAsCastSum {
16 return [
17 AssertAsCastOther{},
18 AssertAsCastPayload{
19 vals: ['foo', 'bar']
20 },
21 ]
22}
23
24fn test_assert_selector_after_as_cast_is_codegen_safe() {
25 assert (assert_as_cast_sum() as AssertAsCastPayload).vals == ['foo', 'bar']
26}
27
28fn test_assert_selector_after_filtered_as_cast_is_codegen_safe() {
29 assert (assert_as_cast_sums().filter(it is AssertAsCastPayload)[0] as AssertAsCastPayload).vals == [
30 'foo',
31 'bar',
32 ]
33}
34