diff options
| author | take_cheeze <[email protected]> | 2013-09-03 00:29:49 +0900 |
|---|---|---|
| committer | take_cheeze <[email protected]> | 2013-09-03 00:29:49 +0900 |
| commit | d606f9d33ffb6c79a7385b6e418e120e130300cf (patch) | |
| tree | 015926a00f23e63d0ddf4eb5ec078b2feb443383 /src/parse.y | |
| parent | 968f5d2a2788b64d0122da9f1c17c438c1079ce2 (diff) | |
| download | mruby-d606f9d33ffb6c79a7385b6e418e120e130300cf.tar.gz mruby-d606f9d33ffb6c79a7385b6e418e120e130300cf.zip | |
fix line number after first file
Diffstat (limited to 'src/parse.y')
| -rw-r--r-- | src/parse.y | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/parse.y b/src/parse.y index bcc5fd35e..23f201d89 100644 --- a/src/parse.y +++ b/src/parse.y @@ -5037,7 +5037,7 @@ parser_init_cxt(parser_state *p, mrbc_context *cxt) { if (!cxt) return; if (cxt->lineno) p->lineno = cxt->lineno; - if (cxt->filename) p->filename = cxt->filename; + if (cxt->filename) mrb_parser_set_filename(p, cxt->filename); if (cxt->syms) { int i; @@ -5136,6 +5136,10 @@ mrb_parser_new(mrb_state *mrb) p->lex_strterm = NULL; p->heredocs = p->parsing_heredoc = NULL; + p->current_filename_index = -1; + p->filename_table = NULL; + p->filename_table_length = 0; + return p; } @@ -5186,7 +5190,7 @@ mrb_parser_set_filename(struct mrb_parser_state* p, char const* f) mrb_sym const sym = mrb_intern(p->mrb, f); size_t len; p->filename = mrb_sym2name_len(p->mrb, sym, &len); - p->lineno = 1; + p->lineno = (p->filename_table_length > 0)? 0 : 1; size_t i; for(i = 0; i < p->filename_table_length; ++i) { |
