js_ReportCompileErrorNumber(cx, ts,JSREPORT_WARNING, JSMSG_EQUAL_AS_ASSIGN, (JSVERSION_IS_ECMA(cx->version) ? "" : "\nAssuming equality test")); if (JSVERSION_IS_ECMA(cx->version)) goto no_rewrite;
Condition(JSContext *cx, JSTokenStream *ts, JSTreeContext *tc){    JSParseNode *pn, *pn2;    MUST_MATCH_TOKEN(TOK_LP, "missing ( before condition");    pn = Expr(cx, ts, tc);    if (!pn)	return NULL;    MUST_MATCH_TOKEN(TOK_RP, "missing ) after condition");    /*     * Check for (a = b) and "correct" it to (a == b).     * XXX not ECMA, but documented in several books -- need a compile option     */    if (pn->pn_type == TOK_ASSIGN && pn->pn_op == JSOP_NOP) {#ifdef CHECK_EQUALITY_ASSIGNMENT	js_ReportCompileError(cx, ts,	    "test for equality (==) mistyped as assignment (=)?\n"	    "Assuming equality test");#endif    	pn->pn_type = TOK_EQOP;    	pn->pn_op = cx->jsop_eq;	pn2 = pn->pn_left;	switch (pn2->pn_op) {	  case JSOP_SETARG:	    pn2->pn_op = JSOP_GETARG;	    break;	  case JSOP_SETVAR:	    pn2->pn_op = JSOP_GETVAR;	    break;	  case JSOP_SETNAME2:	    pn2->pn_op = JSOP_NAME;	    break;	  case JSOP_SETPROP:	    pn2->pn_op = JSOP_GETPROP;	    break;	  case JSOP_SETELEM:	    pn2->pn_op = JSOP_GETELEM;	    break;	  default:	    PR_ASSERT(0);	}    }    return pn;}