| Index: test/mjsunit/stack-traces.js
|
| ===================================================================
|
| --- test/mjsunit/stack-traces.js (revision 9808)
|
| +++ test/mjsunit/stack-traces.js (working copy)
|
| @@ -194,6 +194,46 @@
|
| }
|
|
|
|
|
| +// Poisonous object that throws a reference error if attempted converted to
|
| +// a primitive values.
|
| +var thrower = { valueOf: function() { FAIL; },
|
| + toString: function() { FAIL; } };
|
| +
|
| +// Tests that a native constructor function is included in the
|
| +// stack trace.
|
| +function testTraceNativeConstructor(nativeFunc) {
|
| + var nativeFuncName = nativeFunc.name;
|
| + try {
|
| + new nativeFunc(thrower);
|
| + assertUnreachable(nativeFuncName);
|
| + } catch (e) {
|
| + assertTrue(e.stack.indexOf(nativeFuncName) >= 0, nativeFuncName);
|
| + }
|
| +}
|
| +
|
| +// Tests that a native conversion function is included in the
|
| +// stack trace.
|
| +function testTraceNativeConversion(nativeFunc) {
|
| + var nativeFuncName = nativeFunc.name;
|
| + try {
|
| + nativeFunc(thrower);
|
| + assertUnreachable(nativeFuncName);
|
| + } catch (e) {
|
| + assertTrue(e.stack.indexOf(nativeFuncName) >= 0, nativeFuncName);
|
| + }
|
| +}
|
| +
|
| +
|
| +function testOmittedBuiltin(throwing, omitted) {
|
| + try {
|
| + throwing();
|
| + assertUnreachable(omitted);
|
| + } catch (e) {
|
| + assertTrue(e.stack.indexOf(omitted) < 0, omitted);
|
| + }
|
| +}
|
| +
|
| +
|
| testTrace("testArrayNative", testArrayNative, ["Array.map (native)"]);
|
| testTrace("testNested", testNested, ["at one", "at two", "at three"]);
|
| testTrace("testMethodNameInference", testMethodNameInference, ["at Foo.bar"]);
|
| @@ -217,3 +257,21 @@
|
| testCallerCensorship();
|
| testUnintendedCallerCensorship();
|
| testErrorsDuringFormatting();
|
| +
|
| +testTraceNativeConversion(String); // Does ToString on argument.
|
| +testTraceNativeConversion(Number); // Does ToNumber on argument.
|
| +testTraceNativeConversion(RegExp); // Does ToString on argument.
|
| +
|
| +testTraceNativeConstructor(String); // Does ToString on argument.
|
| +testTraceNativeConstructor(Number); // Does ToNumber on argument.
|
| +testTraceNativeConstructor(RegExp); // Does ToString on argument.
|
| +testTraceNativeConstructor(Date); // Does ToNumber on argument.
|
| +
|
| +// Omitted because QuickSort has builtins object as receiver, and is non-native
|
| +// builtin.
|
| +testOmittedBuiltin(function(){ [thrower, 2].sort(function (a,b) {
|
| + (b < a) - (a < b); });
|
| + }, "QuickSort");
|
| +
|
| +// Omitted because ADD from runtime.js is non-native builtin.
|
| +testOmittedBuiltin(function(){ thrower + 2; }, "ADD");
|
|
|