diff --git a/src/language.yacc b/src/language.yacc index b111afd95aa0918f979f42fec8089970ed55e262..e70bafae0b979adf5b62c06f7c30c389f982d622 100644 --- a/src/language.yacc +++ b/src/language.yacc @@ -1720,7 +1720,13 @@ new_name: optional_stars TOK_IDENTIFIER if (tmp >= 1) { free_node($5); $5 = NULL; - if (!SAFE_IS_ZERO(Pike_sp - tmp)) { + if (!SAFE_IS_ZERO(Pike_sp - tmp) || + IDENTIFIER_IS_ALIAS(ID_FROM_INT(Pike_compiler->new_program, + $<number>4)->identifier_flags)) { + /* NB: Inherited variables get converted into aliases by + * define_variable, and we need to support clearing + * of inherited variables. + */ $5 = mkconstantsvaluenode(Pike_sp - tmp); } pop_n_elems(tmp);