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