I checked only the jdk.nashorn.api.tree.* (parser API) classes in jdk9. Unfortunately, we'll not be able to support fixes on jdk.nashorn.internal.* :(
-Sundar On 8/3/2016 1:45 PM, Emilian Bold wrote: > > Also, please note that jdk.nashorn.internal.* packages are not > APIs and > therefore please avoid using those. Please use nashorn parser API > defined by JEP 236 [ http://openjdk.java.net/jeps/236 ] > > > I cannot use JEP 236 yet because it's only part of Java 9 and it's not > being backported to JDK 8 (why??). > > And I cannot use Java 9 because it hasn't been released yet. Even if > it would be, no company would instantly pick it up, especially with > the big changes/breakages introduced by modules. > > So my only choice is to use JDK 8 with jdk.nashorn.internal.* while > trying to keep an eye and maintain future compatibility with the JEP > 236 Tree API. > > Yes, comments are swallowed (by design). But, I initially though that > disturbs line & column number info. [i.e., position of various trees]. > i.e., that was the bug you reported. That does not seem to be the > case. > > > Could you tell me which classes produce the correct offsets in JDK 9 > compared to JDK 8? > > I have executed my test with Java 9 using the jdk.nashorn.internal.* > packages and the test still fails. Actually, it seems to me with JDK 9 > functionNode.getStart() == functionNode.getFinish() so I'm not certain > where the offsets are stored now. > > > > --emi > > On Fri, Jul 22, 2016 at 10:38 AM, Sundararajan Athijegannathan > <sundararajan.athijegannat...@oracle.com > <mailto:sundararajan.athijegannat...@oracle.com>> wrote: > > Hi, > > Yes, comments are swallowed (by design). But, I initially though that > disturbs line & column number info. [i.e., position of various trees]. > i.e., that was the bug you reported. That does not seem to be the > case. > > I wrote a simple sample and checked with jjs in jdk9 build. You can > check start and end line/column numbers of subtrees (function, > expression statement) are correct. > > Also, please note that jdk.nashorn.internal.* packages are not > APIs and > therefore please avoid using those. Please use nashorn parser API > defined by JEP 236 [ http://openjdk.java.net/jeps/236 ] > > #-scripting needed > > var Parser = Java.type("jdk.nashorn.api.tree.Parser") > var p = Parser.create(); > var cu = p.parse("t.js", <<EOF > /* start script comment */ > > function hello(){ > return 'world'; > } > > //some comment > hello(); > EOF, print); > > var src = cu.sourceElements; > var itr = src.iterator(); > var lm = cu.lineMap; > while (itr.hasNext()) { > var tree = itr.next(); > var start = tree.startPosition; > var end = tree.endPosition; > print(tree.kind, > lm.getLineNumber(start), > lm.getColumnNumber(start), > lm.getLineNumber(end), > lm.getColumnNumber(end)); > } > > > Output: > > FUNCTION 3 2 5 1 > EXPRESSION_STATEMENT 8 4 8 11 > > PS. please check line & column w.r.t beginning of test script parsed. > i.e., the heredoc starting point. > > -Sundar > >