From 5715c1df5f581a22ead2f22cb4ae84856a107a97 Mon Sep 17 00:00:00 2001 From: ValKmjolnir Date: Fri, 2 Sep 2022 02:04:03 +0800 Subject: [PATCH] :art: improve error log output format. --- nasal_builtin.h | 25 +++++++++---------------- nasal_codegen.h | 3 ++- nasal_dbg.h | 8 +++++--- nasal_err.h | 35 ++++++++++++++++++++++++++--------- nasal_gc.h | 3 +-- nasal_vm.h | 3 +-- 6 files changed, 44 insertions(+), 33 deletions(-) diff --git a/nasal_builtin.h b/nasal_builtin.h index efea11c..df7f5c7 100644 --- a/nasal_builtin.h +++ b/nasal_builtin.h @@ -93,7 +93,7 @@ nas_ref builtin_system(nas_ref* local,nasal_gc& gc) { nas_ref str=local[1]; if(str.type!=vm_str) - return nas_err("system","\"str\" must be string"); + return {vm_num,(f64)-1}; return {vm_num,(f64)system(str.str().c_str())}; } nas_ref builtin_input(nas_ref* local,nasal_gc& gc) @@ -110,7 +110,7 @@ nas_ref builtin_fin(nas_ref* local,nasal_gc& gc) { nas_ref val=local[1]; if(val.type!=vm_str) - return nas_err("io.fin","\"filename\" must be string"); + return nas_err("io::fin","\"filename\" must be string"); std::ifstream fin(val.str(),std::ios::binary); std::stringstream rd; if(!fin.fail()) @@ -122,12 +122,12 @@ nas_ref builtin_fout(nas_ref* local,nasal_gc& gc) nas_ref val=local[1]; nas_ref str=local[2]; if(val.type!=vm_str) - return nas_err("io.fout","\"filename\" must be string"); + return nas_err("io::fout","\"filename\" must be string"); if(str.type!=vm_str) - return nas_err("io.fout","\"str\" must be string"); + return nas_err("io::fout","\"str\" must be string"); std::ofstream fout(val.str()); if(fout.fail()) - return nas_err("io.fout","cannot open <"+val.str()+">"); + return nas_err("io::fout","cannot open <"+val.str()+">"); fout< #include #include @@ -136,7 +137,7 @@ void opcode::print(const char* header, const u32 index, bool deftnum=false) const { - std::cout<>24)&0xff)<<" " diff --git a/nasal_dbg.h b/nasal_dbg.h index 16f3a73..6ca948b 100644 --- a/nasal_dbg.h +++ b/nasal_dbg.h @@ -1,6 +1,7 @@ #ifndef __NASAL_DBG_H__ #define __NASAL_DBG_H__ +#include "nasal_err.h" #include "nasal_vm.h" #include @@ -119,7 +120,7 @@ void nasal_dbg::stepinfo() begin=(line>>3)==0?0:((line>>3)<<3); end=(1+(line>>3))<<3; for(u32 i=begin;i ":" ")< ":" ")<>3)==0?0:((pc>>3)<<3); end=(1+(pc>>3))<<3; @@ -134,7 +135,8 @@ void nasal_dbg::interact() if(bytecode[pc].op==op_intg) { std::cout - <<"[debug] nasal debug mode\n" + <\n"; + std::cerr<\n"; std::exit(1); } string line; @@ -101,30 +101,47 @@ class nasal_err:public fstreamline { private: u32 error; + string identation(usize len) + { + string tmp=""; + tmp.resize(len,' '); + return tmp; + } public: nasal_err():error(0){} void err(const char* stage,const string& info) { ++error; - std::cerr< "< "<