Branch: Tag:

2001-06-30

2001-06-30 02:34:39 by Martin Stjernholm <mast@lysator.liu.se>

Slightly more accurate line number tracking of function block start.

Rev: src/language.yacc:1.252

112:   /* This is the grammar definition of Pike. */      #include "global.h" - RCSID("$Id: language.yacc,v 1.251 2001/06/30 01:32:42 mast Exp $"); + RCSID("$Id: language.yacc,v 1.252 2001/06/30 02:34:39 mast Exp $");   #ifdef HAVE_MEMORY_H   #include <memory.h>   #endif
543:   block_or_semi: block    {    $$ = check_node_hash(mknode(F_COMMA_EXPR,$1,mknode(F_RETURN,mkintnode(0),0))); +  if ($1) $$->line_number = $1->line_number;    }    | ';' { $$ = NULL; }    | TOK_LEX_EOF { yyerror("Expected ';'."); $$ = NULL; }
820:    free_string(bad_arg_str);    }    +  { +  int l = $10->line_number; +  char *f = $10->current_file;    if (check_args) {    /* Prepend the arg checking code. */    $10 = mknode(F_COMMA_EXPR, mknode(F_POP_VALUE, check_args, NULL), $10);    } -  +  lex.current_line = l; +  lex.current_file = f; +  }       f=dooptcode(check_node_hash($4)->u.sval.u.string,    check_node_hash($10),
1606:    else    Pike_compiler->compiler_frame->last_block_level=$<number>2;    } +  { +  $<number>$=lex.current_line; +  }    statements end_block    {    unuse_modules(Pike_compiler->num_used_modules - $<number>1);    pop_local_variables($<number>2);    Pike_compiler->compiler_frame->last_block_level=$<number>3; -  $$=$4; +  if ($5) $5->line_number = $<number>4; +  $$=$5;    }    ;