v2 / vlib / v / tests / casts / cast_option_to_interface_test.v
40 lines · 34 sloc · 538 bytes · 6488041a749df9762348d019c4223908c476f2e2
Raw
1@[heap]
2struct Package {
3 str string
4}
5
6interface Parser {
7 main &Package
8}
9
10struct ParserV1 {
11mut:
12 main &Package
13}
14
15fn new_0_parser() ?ParserV1 {
16 return ParserV1{
17 main: &Package{
18 str: 'test'
19 }
20 }
21}
22
23fn new_parser() ?Parser {
24 return Parser(new_0_parser()?)
25}
26
27struct Engine {
28 parser Parser
29}
30
31fn test_cast_option_to_interface() {
32 parser := new_parser()?
33 assert parser.main.str == 'test'
34 eprintln(voidptr(parser.main))
35 e := Engine{
36 parser: parser
37 }
38 assert e.parser.main.str == 'test'
39 eprintln(voidptr(e.parser.main))
40}
41