Bug #1512814, Fix incorrect lineno's when code at module scope

started after line 256.
This commit is contained in:
Neal Norwitz 2006-07-10 00:04:44 +00:00
parent 28746aba9b
commit ed65755608
3 changed files with 22 additions and 1 deletions

View file

@ -1776,7 +1776,8 @@ compiler_mod(struct compiler *c, mod_ty mod)
if (!module)
return NULL;
}
if (!compiler_enter_scope(c, module, mod, 1))
/* Use 0 for firstlineno initially, will fixup in assemble(). */
if (!compiler_enter_scope(c, module, mod, 0))
return NULL;
switch (mod->kind) {
case Module_kind:
@ -4446,6 +4447,13 @@ assemble(struct compiler *c, int addNone)
entryblock = b;
}
/* Set firstlineno if it wasn't explicitly set. */
if (!c->u->u_firstlineno) {
if (entryblock && entryblock->b_instr)
c->u->u_firstlineno = entryblock->b_instr->i_lineno;
else
c->u->u_firstlineno = 1;
}
if (!assemble_init(&a, nblocks, c->u->u_firstlineno))
goto error;
dfs(c, entryblock, &a);