+1

On Mar 9, 2015, at 2:23 PM, A. Sundararajan 
<sundararajan.athijegannat...@oracle.com> wrote:

> Thanks for the review. Please review the updated webrev:
> 
> http://cr.openjdk.java.net/~sundar/8074671/webrev.01/
> 
> Changes:
> 
> * Fixed JSONWriter.java "should not reach here" string.
> * Fixed typo in withcheck.js
> * moved synthetic flag to Block.java - added a test case to 
> test/script/nosecurity/parservisitor.js test
> * changed stream().forEach() as forEach() as Remi suggested 
> (SimpleTreeVisitorES5_1.java)
> 
> Thanks,
> -Sundar
> 
> On Monday 09 March 2015 01:57 PM, Attila Szegedi wrote:
>> Amazing work Sundar. I can see this being a very strong point for Nashorn 
>> for people writing tools that work with JS source files.
>> 
>> Two typos:
>>    - JSONWriter: assert "should reach here" should read "should not reach 
>> here"
>>    - withcheck.js: typo: "diganostic"
>> 
>> I'm also very happy that we have synthetic marker on BlockStatement. That's 
>> actually something that we could now use for more precise let/const scoping. 
>> I think though that we should add the flag on Block, not on BlockStatement. 
>> Block already has a flags bitfield, BTW, but that's not the reason. The 
>> reason is that we're historically introducing synthetic blocks elsewhere 
>> too. "if(...) stmt;" becomes "if(...) { stmt; }" internally as our AST is 
>> structured so that IfNode, ForNode, WhileNode, CaseNode etc. do not hold 
>> Statement nodes as their bodies, but Block nodes instead. This is strictly 
>> speaking incorrect mapping of the ES grammar, but I guess that for now we're 
>> stuck with it.
>> 
>> Those blocks are synthetic too, and we aren't distinguishing them on the AST 
>> level from explicit blocks present in the source code. It isn't much of a 
>> trouble for contexts where only a single statement can be specified without 
>> a block (which is most contexts in JS) but it can be a trouble for 
>> switch/case, as "case x: stmt1; stmt2; case y: ..." and "case x: { stmt1; 
>> stmt2; } case y: ..." have differing semantics in ES6 if stmt1 is a 
>> let/const. So I think that if we're finally adding a "synthetic" flag (as we 
>> should!) to blocks, it should be marked on Block, not BlockStatement.
>> 
>> Attila.
>> 
>> On Mar 9, 2015, at 7:02 AM, A. Sundararajan 
>> <sundararajan.athijegannat...@oracle.com> wrote:
>> 
>>> Please review "Nashorn Parser API". Introduces jdk.nashorn.api.tree package 
>>> to support parser API for Nashorn.
>>> 
>>> JEP: http://openjdk.java.net/jeps/236
>>> Bug: https://bugs.openjdk.java.net/browse/JDK-8074671
>>> Webrev: http://cr.openjdk.java.net/~sundar/8074671/
>>> 
>>> Simple examples "evalcheck.js" and "withcheck.js" under samples directory 
>>> added.
>>> 
>>> Thanks to Joe Darcy who helped me with extensive specification review.
>>> 
>>> Thanks,
>>> -Sundar
> 

Reply via email to