( e, offset )
| 1330 | // Later Safari and IE10 are supposed to support error.stack as well |
| 1331 | // See also https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error/Stack |
| 1332 | function extractStacktrace( e, offset ) { |
| 1333 | offset = offset === undefined ? 3 : offset; |
| 1334 | |
| 1335 | var stack, include, i; |
| 1336 | |
| 1337 | if ( e.stacktrace ) { |
| 1338 | // Opera |
| 1339 | return e.stacktrace.split( "\n" )[ offset + 3 ]; |
| 1340 | } else if ( e.stack ) { |
| 1341 | // Firefox, Chrome |
| 1342 | stack = e.stack.split( "\n" ); |
| 1343 | if (/^error$/i.test( stack[0] ) ) { |
| 1344 | stack.shift(); |
| 1345 | } |
| 1346 | if ( fileName ) { |
| 1347 | include = []; |
| 1348 | for ( i = offset; i < stack.length; i++ ) { |
| 1349 | if ( stack[ i ].indexOf( fileName ) !== -1 ) { |
| 1350 | break; |
| 1351 | } |
| 1352 | include.push( stack[ i ] ); |
| 1353 | } |
| 1354 | if ( include.length ) { |
| 1355 | return include.join( "\n" ); |
| 1356 | } |
| 1357 | } |
| 1358 | return stack[ offset ]; |
| 1359 | } else if ( e.sourceURL ) { |
| 1360 | // Safari, PhantomJS |
| 1361 | // hopefully one day Safari provides actual stacktraces |
| 1362 | // exclude useless self-reference for generated Error objects |
| 1363 | if ( /qunit.js$/.test( e.sourceURL ) ) { |
| 1364 | return; |
| 1365 | } |
| 1366 | // for actual exceptions, this is useful |
| 1367 | return e.sourceURL + ":" + e.line; |
| 1368 | } |
| 1369 | } |
| 1370 | function sourceFromStacktrace( offset ) { |
| 1371 | try { |
| 1372 | throw new Error(); |
no outgoing calls
no test coverage detected