bool ExecutionContext::deleteProperty(String *name)
{
+ bool hasWith = false;
for (ExecutionContext *ctx = this; ctx; ctx = ctx->outer) {
if (ctx->withObject) {
+ hasWith = true;
if (ctx->withObject->__hasProperty__(this, name))
return ctx->withObject->__delete__(this, name);
} else {
if (ctx->activation && ctx->activation->__hasProperty__(this, name))
return ctx->activation->__delete__(this, name);
}
+ if (FunctionObject *f = ctx->function) {
+ if (f->needsActivation || hasWith) {
+ for (unsigned int i = 0; i < f->varCount; ++i)
+ if (f->varList[i]->isEqualTo(name))
+ return false;
+ for (int i = (int)f->formalParameterCount - 1; i >= 0; --i)
+ if (f->formalParameterList[i]->isEqualTo(name))
+ return false;
+ }
+ }
}
if (strictMode)
throwSyntaxError(0);
_expr.code = _block->CONST(IR::BoolType, 1);
return false;
}
+ if (expr->asTemp() && expr->asTemp()->index >= _env->members.size()) {
+ _expr.code = _block->CONST(IR::BoolType, 1);
+ return false;
+ }
IR::ExprList *args = _function->New<IR::ExprList>();
args->init(reference(expr));
S11.3.2_A4_T2 failing
S11.3.2_A4_T3 failing
S11.3.2_A4_T4 failing
-11.4.1-2-5 failing
-11.4.1-4.a-5 failing
-S11.4.1_A2.1 failing
S11.5.3_A4_T2 failing
S11.8.6_A3 failing
S11.8.6_A5_T2 failing
Sbp_A4_T1 failing
Sbp_A4_T2 failing
S12.4_A1 failing
-S15.2.4.4_A14 failing
\ No newline at end of file
+S15.2.4.4_A14 failing
+# Try/catch scoping issue
+S12.14_A4 failing
\ No newline at end of file