Error Stack Column number

Art Fiedler artfiedler at gmail.com
Wed Nov 30 22:02:54 UTC 2016


When making an implementation of console.count([label])  part of the
Mozilla's developer docs
    https://developer.mozilla.org/en-US/docs/Web/API/Console/count
mentions when label is omitted, the function will count the number of times
count() was called
on that line... however, if the javascript code has been minified all lines
of code may be on the
same line... messing up all console.count() calls...

I was providing that implementation by using new Error().stack and parsing
the current file:line...
however I could fix the minify issue if new Error().stack output the column
also for instance...
other browser seem to be doing file:line:column in the stack trace.
Including nodejs see:
    https://nodejs.org/api/errors.html#errors_error_stack

Microsoft Edge's dev console outputs...
    new Error().stack:
    "Error
       at eval code (eval code:1:1)"
Firefox since FF30:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/stack

Currently nashorn error stacks only include the line number...
    public static void main(String[] args) throws Exception {
        NashornScriptEngineFactory factory = new
NashornScriptEngineFactory();
        ScriptEngine scriptEngine = factory.getScriptEngine();
        scriptEngine.put(ScriptEngine.FILENAME, "myfile.js");
        scriptEngine.eval("print('fileName: ' + new Error().fileName);");
        scriptEngine.eval("print('lineNumber: ' + new
Error().lineNumber);");
        scriptEngine.eval("print('columnNumber: ' + new
Error().columnNumber);");
        scriptEngine.eval("print('stack: ' + new Error().stack);");
    }
    /*
    fileName: myfile.js
    lineNumber: 1
    columnNumber: -1
    stack: Error
        at <program> (myfile.js:1)
     */

Would be nice to add the column number to the stacks and error object in
nashorn.

Thanks,
Arthur Fiedler


More information about the nashorn-dev mailing list