https://codereview.chromium.org/422923004/diff/60001/src/preparser.h
File src/preparser.h (right):

https://codereview.chromium.org/422923004/diff/60001/src/preparser.h#newcode613
src/preparser.h:613: bool IsArguments(const AstValueFactory*) const {
Why is this change necessary when the argument isn't even used?

https://codereview.chromium.org/422923004/diff/60001/src/preparser.h#newcode831
src/preparser.h:831: if (ident.IsEval() || ident.IsArguments(nullptr) ||
ident.IsYield() ||
Unfortunately, we can't use C++11 yet...

https://codereview.chromium.org/422923004/diff/60001/src/scopes.cc
File src/scopes.cc (right):

https://codereview.chromium.org/422923004/diff/60001/src/scopes.cc#newcode1175
src/scopes.cc:1175: if (inner->scope_uses_this_ ||
inner->inner_scope_uses_this_) {
If inner is a function scope and not an arrow function, then both new
flags must not be propagated.

https://codereview.chromium.org/422923004/diff/60001/test/cctest/test-parsing.cc
File test/cctest/test-parsing.cc (right):

https://codereview.chromium.org/422923004/diff/60001/test/cctest/test-parsing.cc#newcode950
test/cctest/test-parsing.cc:950: { "var x = function () { this.foo = 42
};",
On 2014/09/04 16:41:21, arv wrote:
Why do we need to track the this reference inside a function
expression?

Indeed, this seems wrong. Although it should be true for an arrow
function.

https://codereview.chromium.org/422923004/diff/60001/test/cctest/test-parsing.cc#newcode968
test/cctest/test-parsing.cc:968: };
We probably need some tests with block scopes as well, e.g.

  "while (true) { let x; this, arguments; }"  =>  false, false, true,
true

https://codereview.chromium.org/422923004/

--
--
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
--- You received this message because you are subscribed to the Google Groups "v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to