Branch: Tag:

2008-09-14

2008-09-14 11:16:23 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Fixed overriding of inherited local identifiers.

Rev: src/program.c:1.754

2:   || This file is part of Pike. For copyright information see COPYRIGHT.   || Pike is distributed under GPL, LGPL and MPL. See the file COPYING   || for more information. - || $Id: program.c,v 1.753 2008/09/04 11:36:45 grubba Exp $ + || $Id: program.c,v 1.754 2008/09/14 11:16:23 grubba Exp $   */      #include "global.h"
2025:    /* Do not zapp hidden identifiers */    if(ref->id_flags & ID_HIDDEN) continue;    -  /* Do not zapp inherited inline ('local') identifiers */ -  if((ref->id_flags & (ID_INLINE|ID_INHERITED)) == (ID_INLINE|ID_INHERITED)) -  continue; -  +     /* Do not zapp functions with the wrong name... */    if((i = ID_FROM_PTR(Pike_compiler->new_program, ref))->name != name)    continue;    -  +  /* Do not zapp inherited inline ('local') identifiers */ +  if((ref->id_flags & (ID_INLINE|ID_INHERITED)) == (ID_INLINE|ID_INHERITED)) { +  /* But we still need to hide them, since we shadow them... */ +  ref->id_flags |= ID_HIDDEN; +  continue; +  } +    #ifdef PROGRAM_BUILD_DEBUG    fprintf(stderr, "%.*soverloaded reference %d (id_flags:0x%04x)\n",    c->compilation_depth, "", cur_id, ref->id_flags);