mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
mruby-bin-debugger: extract raise_debugger_exception() helper
Both dbgcmd_run() and dbgcmd_quit() defined an exception class and raised it with identical code. Add a shared static inline helper in mrdb.h. Co-authored-by: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -501,9 +501,7 @@ dbgcmd_quit(mrb_state *mrb, mrdb_state *mrdb)
|
||||
}
|
||||
|
||||
if (mrdb->dbg->xm == DBG_QUIT) {
|
||||
struct RClass *exc;
|
||||
exc = mrb_define_class(mrb, "DebuggerExit", E_EXCEPTION);
|
||||
mrb_raise(mrb, exc, "Exit mrdb");
|
||||
raise_debugger_exception(mrb, "DebuggerExit", "Exit mrdb");
|
||||
}
|
||||
return DBGST_PROMPT;
|
||||
}
|
||||
|
||||
@@ -17,10 +17,8 @@ dbgcmd_run(mrb_state *mrb, mrdb_state *mrdb)
|
||||
else {
|
||||
dbg->xm = DBG_QUIT;
|
||||
if (dbg->xphase == DBG_PHASE_RUNNING){
|
||||
struct RClass *exc;
|
||||
puts("Start it from the beginning");
|
||||
exc = mrb_define_class(mrb, "DebuggerRestart", E_EXCEPTION);
|
||||
mrb_raise(mrb, exc, "Restart mrdb");
|
||||
raise_debugger_exception(mrb, "DebuggerRestart", "Restart mrdb");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
#define MRDB_H
|
||||
|
||||
#include <mruby.h>
|
||||
#include <mruby/class.h>
|
||||
|
||||
#include "mrdbconf.h"
|
||||
|
||||
@@ -136,6 +137,13 @@ typedef struct mrdb_state {
|
||||
|
||||
typedef dbgcmd_state (*debug_command_func)(mrb_state*, mrdb_state*);
|
||||
|
||||
static inline mrb_noreturn void
|
||||
raise_debugger_exception(mrb_state *mrb, const char *name, const char *msg)
|
||||
{
|
||||
struct RClass *exc = mrb_define_class(mrb, name, E_EXCEPTION);
|
||||
mrb_raise(mrb, exc, msg);
|
||||
}
|
||||
|
||||
/* cmdrun.c */
|
||||
dbgcmd_state dbgcmd_run(mrb_state*, mrdb_state*);
|
||||
dbgcmd_state dbgcmd_continue(mrb_state*, mrdb_state*);
|
||||
|
||||
Reference in New Issue
Block a user