v2 / vlib / v / tests / skip_unused / print_interface_smartcast.vv
42 lines · 35 sloc · 580 bytes · 7dc3889f19e7bdc6fb803ad4d1d65fd9d50c6e0c
Raw
1module main
2
3pub struct MyError implements IError {
4pub:
5 msg string
6 code int
7 domain int
8 level int
9}
10
11pub fn (e MyError) str() string {
12 return '${e.msg} ${e.code}:${e.domain}:${e.level}'
13}
14
15pub fn (e MyError) msg() string {
16 return e.msg
17}
18
19pub fn (e MyError) code() int {
20 return e.code
21}
22
23fn MyError.new(msg string, code int, domain int, level int) MyError {
24 return MyError{
25 msg: msg
26 code: code
27 domain: domain
28 level: level
29 }
30}
31
32fn foo() ! {
33 return MyError.new('xxx', 1, 1, 1)
34}
35
36fn main() {
37 foo() or {
38 if err is MyError {
39 eprintln(err)
40 }
41 }
42}
43