Commit 8846f75e authored by Yukihiro Matsumoto's avatar Yukihiro Matsumoto

refactor test driver

parent 332565e3
...@@ -27,29 +27,30 @@ int ...@@ -27,29 +27,30 @@ int
main(void) main(void)
{ {
struct mrb_parser_state *parser; struct mrb_parser_state *parser;
mrb_state *mrb_interpreter; mrb_state *mrb;
mrb_value mrb_return_value; mrb_value return_value;
int byte_code; int byte_code;
const char *prog = "report()";
print_hint(); print_hint();
/* new interpreter instance */ /* new interpreter instance */
mrb_interpreter = mrb_open(); mrb = mrb_open();
mrb_init_mrbtest(mrb_interpreter); mrb_init_mrbtest(mrb);
parser = mrb_parse_nstring_ext(mrb_interpreter, "report()", strlen("report()")); parser = mrb_parse_nstring(mrb, prog, strlen(prog));
/* generate bytecode */ /* generate bytecode */
byte_code = mrb_generate_code(mrb_interpreter, parser->tree); byte_code = mrb_generate_code(mrb, parser->tree);
/* evaluate the bytecode */ /* evaluate the bytecode */
mrb_return_value = mrb_run(mrb_interpreter, return_value = mrb_run(mrb,
/* pass a proc for evaulation */ /* pass a proc for evaulation */
mrb_proc_new(mrb_interpreter, mrb_interpreter->irep[byte_code]), mrb_proc_new(mrb, mrb->irep[byte_code]),
mrb_top_self(mrb_interpreter)); mrb_top_self(mrb));
/* did an exception occur? */ /* did an exception occur? */
if (mrb_interpreter->exc) { if (mrb->exc) {
mrb_p(mrb_interpreter, mrb_return_value); mrb_p(mrb, return_value);
mrb_interpreter->exc = 0; mrb->exc = 0;
} }
else { else {
/* no */ /* no */
......
...@@ -12,5 +12,9 @@ mrb_init_mrbtest(mrb_state *mrb) ...@@ -12,5 +12,9 @@ mrb_init_mrbtest(mrb_state *mrb)
int n = mrb_read_irep(mrb, mrbtest_irep); int n = mrb_read_irep(mrb, mrbtest_irep);
mrb_run(mrb, mrb_proc_new(mrb, mrb->irep[n]), mrb_top_self(mrb)); mrb_run(mrb, mrb_proc_new(mrb, mrb->irep[n]), mrb_top_self(mrb));
if (mrb->exc) {
mrb_p(mrb, mrb_obj_value(mrb->exc));
exit(0);
}
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment