When re-writing a factor containing a unary negation of a literal, only

affect nodes without another operator.  This was causing negated
exponentiations to drop the exponentiation.  This closes SF bug #456756.
This commit is contained in:
Fred Drake 2001-08-30 18:53:25 +00:00
parent 4b8c0f6d7d
commit 14ef244dfe

View file

@ -1891,8 +1891,11 @@ com_factor(struct compiling *c, node *n)
negative in the 0th position.
*/
if ((childtype == PLUS || childtype == MINUS || childtype == TILDE)
&& NCH(n) == 2
&& TYPE(CHILD(n, 1)) == factor
&& NCH(CHILD(n, 1)) == 1
&& TYPE(CHILD(CHILD(n, 1), 0)) == power
&& NCH(CHILD(CHILD(n, 1), 0)) == 1
&& TYPE(CHILD(CHILD(CHILD(n, 1), 0), 0)) == atom
&& TYPE(CHILD(CHILD(CHILD(CHILD(n, 1), 0), 0), 0)) == NUMBER) {
node *constant = CHILD(CHILD(CHILD(n, 1), 0), 0);