Jason Orendorff (2014-03-27T18:29:19.000Z)
domenic at domenicdenicola.com (2014-03-30T16:12:24.844Z)
Not formally, but it's straightforward: At the time you call eval() or Function(), we capture the string fileName + " line " + lineNumber + " > eval" or "> Function" if you're calling Function. We use that string as the fileName for the dynamic eval or Function code. This affects both err.fileName and err.stack. This implies these synthetic fileNames can nest. You can end up with a stack like: js> try { eval("eval('FAIL')"); } catch (x) { print(x.stack); } @typein line 2 > eval line 1 > eval:1:1 @typein line 2 > eval:1:1 @typein:2:7 I think the extended format was added in this bug: https://bugzilla.mozilla.org/show_bug.cgi?id=332176