1.1 --- a/src/compiler/NameBinding.cpp Thu Dec 27 21:07:03 2012 -0800
1.2 +++ b/src/compiler/NameBinding.cpp Fri Dec 28 17:13:51 2012 -0800
1.3 @@ -335,12 +335,26 @@
1.4 node->setScope(env.scope());
1.5 }
1.6 void visitBlockStatement(BlockStatement *node) {
1.7 - SymbolEnv env(&env_);
1.8 + if (node->type() == TOK_NEW) {
1.9 + // Don't create a symbol environment for this block, since it
1.10 + // was created solely to house multiple variable decls.
1.11 + for (size_t i = 0; i < node->statements()->length(); i++)
1.12 + node->statements()->at(i)->accept(this);
1.13 + } else {
1.14 + assert(node->type() == TOK_LBRACE);
1.15 +
1.16 + SymbolEnv env(&env_);
1.17
1.18 - for (size_t i = 0; i < node->statements()->length(); i++)
1.19 - node->statements()->at(i)->accept(this);
1.20 + for (size_t i = 0; i < node->statements()->length(); i++)
1.21 + node->statements()->at(i)->accept(this);
1.22 +
1.23 + if (node->type() == TOK_NEW) {
1.24 + assert(!env.scope());
1.25 + return;
1.26 + }
1.27
1.28 - node->setScope(env.scope());
1.29 + node->setScope(env.scope());
1.30 + }
1.31 }
1.32 void visitIntegerLiteral(IntegerLiteral *node) {
1.33 }
1.34 @@ -856,6 +870,9 @@
1.35 fun->setReturnType(type);
1.36 }
1.37
1.38 + if (sig.variadic())
1.39 + fun->setVariadic();
1.40 +
1.41 Local<FixedArray> params(zone_, FixedArray::New(zone_, sig.parameters()->length(), Heap::Tenure_Old));
1.42 if (!params)
1.43 return false;