if (!CheckFinalReturn(pn)) {
if (!CheckFinalReturn(pn)) { JSBool ok;
FunctionBody(JSContext *cx, JSTokenStream *ts, JSFunction *fun,	     JSTreeContext *tc){    JSStackFrame *fp, frame;    uintN oldflags;    JSParseNode *pn;    fp = cx->fp;    if (!fp || fp->scopeChain != fun->object) {	memset(&frame, 0, sizeof frame);	frame.scopeChain = fun->object;	frame.down = fp;	cx->fp = &frame;    }    oldflags = tc->flags;    tc->flags &= ~(TCF_RETURN_EXPR | TCF_RETURN_VOID);    tc->flags |= TCF_IN_FUNCTION;    pn = Statements(cx, ts, tc);    /* Check for falling off the end of a function that returns a value. */    if (pn && JS_HAS_STRICT_OPTION(cx) && (tc->flags & TCF_RETURN_EXPR)) {	if (!CheckFinalReturn(pn)) {            if (fun->atom) {                char *name = js_GetStringBytes(ATOM_TO_STRING(fun->atom));                js_ReportCompileErrorNumber(cx, ts, JSREPORT_ERROR,                                            JSMSG_NO_RETURN_VALUE, name);            } else {                js_ReportCompileErrorNumber(cx, ts, JSREPORT_ERROR,                                            JSMSG_ANON_NO_RETURN_VALUE);            }	    pn = NULL;	}    }    cx->fp = fp;    tc->flags = oldflags;    return pn;}