builtin: add a proper str() method to IError (#9379)
parent
59f95170b3
commit
3f9e921c95
|
@ -16,6 +16,14 @@ pub:
|
|||
code int
|
||||
}
|
||||
|
||||
pub fn (err IError) str() string {
|
||||
return match err {
|
||||
None__ { 'none' }
|
||||
Error { err.msg }
|
||||
else { '$err.type_name(): $err.msg' }
|
||||
}
|
||||
}
|
||||
|
||||
const none__ = IError(&None__{})
|
||||
|
||||
struct None__ {
|
||||
|
|
|
@ -151,7 +151,7 @@ fn (mut g Gen) gen_str_for_option(typ table.Type, styp string, str_fn_name strin
|
|||
g.auto_str_funcs.writeln('\t\tres = ${parent_str_fn_name}(*($sym.cname*)it.data);')
|
||||
}
|
||||
g.auto_str_funcs.writeln('\t} else {')
|
||||
g.auto_str_funcs.writeln('\t\tres = _STR("error: %.*s\\000", 2, indent_IError_str(it.err, indent_count));')
|
||||
g.auto_str_funcs.writeln('\t\tres = _STR("error: %.*s\\000", 2, IError_str(it.err));')
|
||||
g.auto_str_funcs.writeln('\t}')
|
||||
g.auto_str_funcs.writeln('\treturn _STR("Option(%.*s\\000)", 2, res);')
|
||||
g.auto_str_funcs.writeln('}')
|
||||
|
|
|
@ -296,12 +296,7 @@ fn create_option_err() ?string {
|
|||
}
|
||||
|
||||
fn test_option_err() {
|
||||
assert '$create_option_err()' == "
|
||||
Option(error: IError(Error{
|
||||
msg: 'this is an error'
|
||||
code: 0
|
||||
}))
|
||||
".trim_space()
|
||||
assert '$create_option_err()' == "Option(error: this is an error)"
|
||||
}
|
||||
|
||||
fn create_option_none() ?string {
|
||||
|
@ -309,7 +304,7 @@ fn create_option_none() ?string {
|
|||
}
|
||||
|
||||
fn test_option_none() {
|
||||
assert '$create_option_none()' == 'Option(error: IError(none))'
|
||||
assert '$create_option_none()' == 'Option(error: none)'
|
||||
}
|
||||
|
||||
fn create_option_string() ?string {
|
||||
|
|
Loading…
Reference in New Issue