EvalError
description    = (undefined)undefined
number         = (undefined)undefined
stack          = (string)  eval code@
eval@[native code]
Test@NativeErrors.js:49:20
global code@NativeErrors.js:68:5
toString()     = EvalError

RangeError('This is a range error')
description    = (undefined)undefined
number         = (undefined)undefined
stack          = (string)  eval code@
eval@[native code]
Test@NativeErrors.js:49:20
global code@NativeErrors.js:69:5
toString()     = RangeError: This is a range error

ReferenceError
description    = (undefined)undefined
number         = (undefined)undefined
stack          = (string)  eval code@
eval@[native code]
Test@NativeErrors.js:49:20
global code@NativeErrors.js:70:5
toString()     = ReferenceError

SyntaxError
description    = (undefined)undefined
number         = (undefined)undefined
stack          = (string)  eval code@
eval@[native code]
Test@NativeErrors.js:49:20
global code@NativeErrors.js:71:5
toString()     = SyntaxError

TypeError('This is a type error')
description    = (undefined)undefined
number         = (undefined)undefined
stack          = (string)  eval code@
eval@[native code]
Test@NativeErrors.js:49:20
global code@NativeErrors.js:72:5
toString()     = TypeError: This is a type error

URIError
description    = (undefined)undefined
number         = (undefined)undefined
stack          = (string)  eval code@
eval@[native code]
Test@NativeErrors.js:49:20
global code@NativeErrors.js:73:5
toString()     = URIError

RegExpError
ReferenceError: Can't find variable: RegExpError
ConversionError
ReferenceError: Can't find variable: ConversionError
