LGTM
http://codereview.chromium.org/7756014/diff/1/src/ia32/full-codegen-ia32.cc File src/ia32/full-codegen-ia32.cc (right): http://codereview.chromium.org/7756014/diff/1/src/ia32/full-codegen-ia32.cc#newcode2162 src/ia32/full-codegen-ia32.cc:2162: // is a strict mode eval call. How come this invariant isn't shown in the strict_mode_flag to begin with? I.e., should strict_mode_flag be able to return anything but kStrictMode in Harmony mode? http://codereview.chromium.org/7756014/diff/1/src/parser.cc File src/parser.cc (right): http://codereview.chromium.org/7756014/diff/1/src/parser.cc#newcode1355 src/parser.cc:1355: // of var declared variables. This checks only for a redeclaration in the same scope, right? http://codereview.chromium.org/7756014/diff/1/src/parser.h File src/parser.h (right): http://codereview.chromium.org/7756014/diff/1/src/parser.h#newcode650 src/parser.h:650: // scope over a let binding of the same name. Be more explicit (define what you mean by "over", or, prefereably, don't say anything about hoisting - just say what the invalid syntax structure is). Am I understanding it correctly if the invalid case is: A var declaration inside a nested scope/block of a scope with a let(/const/function)-declaration of the same name. I.e., it doesn't check for redeclaration in the same scope (that's handled inline)? http://codereview.chromium.org/7756014/diff/1/src/scopes.cc File src/scopes.cc (right): http://codereview.chromium.org/7756014/diff/1/src/scopes.cc#newcode479 src/scopes.cc:479: Variable* other_var = scope->variables_.Lookup(name); This should be able to skip the first scope, where it only finds the decl variable itself? http://codereview.chromium.org/7756014/diff/1/src/scopes.cc#newcode480 src/scopes.cc:480: if (other_var != NULL && other_var->mode() == Variable::LET) { Is it only LET declarations that can conflict, or any non-VAR? http://codereview.chromium.org/7756014/ -- v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev
