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);