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