60 lines
		
	
	
		
			1000 B
		
	
	
	
		
			V
		
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			1000 B
		
	
	
	
		
			V
		
	
	
| module builtin
 | |
| 
 | |
| // called by the generated main/init
 | |
| fn init() {
 | |
| }
 | |
| 
 | |
| pub fn isnil(p voidptr) bool {
 | |
| 	return p == 0
 | |
| }
 | |
| 
 | |
| pub fn print(s string) {
 | |
| 	sys_write(1, s.str, u64(s.len))
 | |
| }
 | |
| 
 | |
| pub fn println(s string) {
 | |
| 	print(s)
 | |
| 	print("\n")
 | |
| }
 | |
| 
 | |
| pub fn panic(s string) {
 | |
| 	eprint('V panic: ')
 | |
| 	eprintln(s)
 | |
| 	sys_exit(1)
 | |
| }
 | |
| 
 | |
| // replaces panic when -debug arg is passed
 | |
| fn panic_debug(line_no int, file,  mod, fn_name, s string) {
 | |
| 	eprintln('================ V panic ================')
 | |
| 	eprint('   module: ')
 | |
| 	eprintln('mod')
 | |
| 	eprint(' function: ')
 | |
| 	eprint(fn_name)
 | |
| 	eprintln('()')
 | |
| 	eprintln('     file: ')
 | |
| 	eprintln(file)
 | |
| 	//println('     line: ${line_no}')
 | |
| 	eprint('  message: ')
 | |
| 	eprintln(s)
 | |
| 	eprintln('=========================================')
 | |
| 	sys_exit(1)
 | |
| }
 | |
| pub fn eprint(s string) {
 | |
| 	if isnil(s.str) {
 | |
| 		panic('eprint(NIL)')
 | |
| 	}
 | |
| 	sys_write(2, s.str, u64(s.len))
 | |
| }
 | |
| 
 | |
| pub fn eprint_ln(s string) {
 | |
| 	eprint(s)
 | |
| 	eprint("\n")
 | |
| }
 | |
| 
 | |
| pub fn eprintln(s string) {
 | |
| 	if isnil(s.str) {
 | |
| 		panic('eprintln(NIL)')
 | |
| 	}
 | |
| 	eprint_ln(s)
 | |
| }
 |