script_compiled event on compile error.

script_compiled event for TracePoint should not be invoked on
compile error (SyntaxError) because it is not "compiled".
[Bug #16459]
This commit is contained in:
Koichi Sasada 2020-01-06 11:36:51 +09:00
parent 46845d03c2
commit ce072fe568
2 changed files with 17 additions and 6 deletions

View File

@ -2188,10 +2188,19 @@ class TestSetTraceFunc < Test::Unit::TestCase
[__FILE__+"/instance_eval", eval_script], [__FILE__+"/instance_eval", eval_script],
[__FILE__+"/class_eval", eval_script], [__FILE__+"/class_eval", eval_script],
], events ], events
events.clear events.clear
tp.enable{
begin
eval('a=')
rescue SyntaxError
end
}
assert_equal [], events, 'script_compiled event should not be invoked on compile error'
skip "TODO: test for requires" skip "TODO: test for requires"
events.clear
tp.enable{ tp.enable{
require '' require ''
require_relative '' require_relative ''

View File

@ -1486,7 +1486,7 @@ eval_make_iseq(VALUE src, VALUE fname, int line, const rb_binding_t *bind,
const VALUE parser = rb_parser_new(); const VALUE parser = rb_parser_new();
const rb_iseq_t *const parent = vm_block_iseq(base_block); const rb_iseq_t *const parent = vm_block_iseq(base_block);
VALUE realpath = Qnil; VALUE realpath = Qnil;
rb_iseq_t *iseq = 0; rb_iseq_t *iseq = NULL;
rb_ast_t *ast; rb_ast_t *ast;
if (!fname) { if (!fname) {
@ -1511,12 +1511,14 @@ eval_make_iseq(VALUE src, VALUE fname, int line, const rb_binding_t *bind,
} }
rb_ast_dispose(ast); rb_ast_dispose(ast);
if (0 && iseq) { /* for debug */ if (iseq != NULL) {
VALUE disasm = rb_iseq_disasm(iseq); if (0 && iseq) { /* for debug */
printf("%s\n", StringValuePtr(disasm)); VALUE disasm = rb_iseq_disasm(iseq);
} printf("%s\n", StringValuePtr(disasm));
}
rb_exec_event_hook_script_compiled(GET_EC(), iseq, src); rb_exec_event_hook_script_compiled(GET_EC(), iseq, src);
}
return iseq; return iseq;
} }