Merge pull request #2456 from take-cheeze/refactor_eval

Refactor eval.
This commit is contained in:
Yukihiro "Matz" Matsumoto
2014-07-09 23:06:24 +09:00
2 changed files with 13 additions and 4 deletions
+7 -4
View File
@@ -112,11 +112,14 @@ create_proc_from_string(mrb_state *mrb, char *s, int len, mrb_value binding, cha
if (file) {
mrbc_filename(mrb, cxt, file);
}
cxt->capture_errors = TRUE;
p = mrb_parser_new(mrb);
p->s = s;
p->send = s + len;
mrb_parser_parse(p, cxt);
p = mrb_parse_nstring(mrb, s, len, cxt);
/* only occur when memory ran out */
if (!p) {
mrb_raise(mrb, E_RUNTIME_ERROR, "Failed to create parser state.");
}
if (0 < p->nerr) {
/* parse error */
+6
View File
@@ -44,3 +44,9 @@ assert('rest arguments of eval') do
Kernel.eval('[\'test\', __FILE__, __LINE__]', nil, 'test.rb', 10)
end
end
assert 'eval syntax error' do
assert_raise(SyntaxError) do
eval 'p "test'
end
end