Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(30)

Side by Side Diff: test/mjsunit/stack-traces.js

Issue 919653002: [V8] Use Function.name in Error.stack (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/runtime/runtime-debug.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2009 the V8 project authors. All rights reserved. 1 // Copyright 2009 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
87 function a$b$c$d() { return FAIL; } 87 function a$b$c$d() { return FAIL; }
88 function Wookie() { } 88 function Wookie() { }
89 Wookie.prototype.d = a$b$c$d; 89 Wookie.prototype.d = a$b$c$d;
90 (new Wookie).d(); 90 (new Wookie).d();
91 } 91 }
92 92
93 function testAnonymousMethod() { 93 function testAnonymousMethod() {
94 (function () { FAIL }).call([1, 2, 3]); 94 (function () { FAIL }).call([1, 2, 3]);
95 } 95 }
96 96
97 function testFunctionName() {
98 function gen(name, counter) {
99 var f = function foo() {
100 if (counter === 0) {
101 FAIL;
102 }
103 gen(name, counter - 1)();
104 }
105 if (counter === 4) {
106 Object.defineProperty(f, 'name', {get: function(){ throw 239; }});
107 } else if (counter == 3) {
108 Object.defineProperty(f, 'name', {value: 'boo' + '_' + counter});
109 } else {
110 Object.defineProperty(f, 'name', {writable: true});
111 if (counter === 2)
112 f.name = 42;
113 else
114 f.name = name + '_' + counter;
115 }
116 return f;
117 }
118 gen('foo', 4)();
119 }
120
121 function testFunctionInferredName() {
122 var f = function() {
123 FAIL;
124 }
125 f();
126 }
127
97 function CustomError(message, stripPoint) { 128 function CustomError(message, stripPoint) {
98 this.message = message; 129 this.message = message;
99 Error.captureStackTrace(this, stripPoint); 130 Error.captureStackTrace(this, stripPoint);
100 } 131 }
101 132
102 CustomError.prototype.toString = function () { 133 CustomError.prototype.toString = function () {
103 return "CustomError: " + this.message; 134 return "CustomError: " + this.message;
104 }; 135 };
105 136
106 function testDefaultCustomError() { 137 function testDefaultCustomError() {
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
254 testTrace("testNestedEval", testNestedEval, ["eval at Inner (eval at Outer"]); 285 testTrace("testNestedEval", testNestedEval, ["eval at Inner (eval at Outer"]);
255 testTrace("testEvalWithSourceURL", testEvalWithSourceURL, 286 testTrace("testEvalWithSourceURL", testEvalWithSourceURL,
256 [ "at Doo (res://name:1:18)" ]); 287 [ "at Doo (res://name:1:18)" ]);
257 testTrace("testNestedEvalWithSourceURL", testNestedEvalWithSourceURL, 288 testTrace("testNestedEvalWithSourceURL", testNestedEvalWithSourceURL,
258 [" at Inner (res://inner-eval:1:20)", 289 [" at Inner (res://inner-eval:1:20)",
259 " at Outer (res://outer-eval:1:37)"]); 290 " at Outer (res://outer-eval:1:37)"]);
260 testTrace("testValue", testValue, ["at Number.causeError"]); 291 testTrace("testValue", testValue, ["at Number.causeError"]);
261 testTrace("testConstructor", testConstructor, ["new Plonk"]); 292 testTrace("testConstructor", testConstructor, ["new Plonk"]);
262 testTrace("testRenamedMethod", testRenamedMethod, ["Wookie.a$b$c$d [as d]"]); 293 testTrace("testRenamedMethod", testRenamedMethod, ["Wookie.a$b$c$d [as d]"]);
263 testTrace("testAnonymousMethod", testAnonymousMethod, ["Array.<anonymous>"]); 294 testTrace("testAnonymousMethod", testAnonymousMethod, ["Array.<anonymous>"]);
295 testTrace("testFunctionName", testFunctionName,
296 [" at foo_0 ", " at foo_1", " at foo ", " at boo_3 ", " at foo "]);
297 testTrace("testFunctionInferredName", testFunctionInferredName, [" at f "]);
264 testTrace("testDefaultCustomError", testDefaultCustomError, 298 testTrace("testDefaultCustomError", testDefaultCustomError,
265 ["hep-hey", "new CustomError"], 299 ["hep-hey", "new CustomError"],
266 ["collectStackTrace"]); 300 ["collectStackTrace"]);
267 testTrace("testStrippedCustomError", testStrippedCustomError, ["hep-hey"], 301 testTrace("testStrippedCustomError", testStrippedCustomError, ["hep-hey"],
268 ["new CustomError", "collectStackTrace"]); 302 ["new CustomError", "collectStackTrace"]);
269 testTrace("testClassNames", testClassNames, 303 testTrace("testClassNames", testClassNames,
270 ["new MyObj", "MyObjCreator.Create"], ["as Create"]); 304 ["new MyObj", "MyObjCreator.Create"], ["as Create"]);
271 testCallerCensorship(); 305 testCallerCensorship();
272 testUnintendedCallerCensorship(); 306 testUnintendedCallerCensorship();
273 testErrorsDuringFormatting(); 307 testErrorsDuringFormatting();
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
344 378
345 my_error = {}; 379 my_error = {};
346 Object.preventExtensions(my_error); 380 Object.preventExtensions(my_error);
347 assertThrows(function() { Error.captureStackTrace(my_error); }); 381 assertThrows(function() { Error.captureStackTrace(my_error); });
348 382
349 var fake_error = {}; 383 var fake_error = {};
350 my_error = new Error(); 384 my_error = new Error();
351 var stolen_getter = Object.getOwnPropertyDescriptor(my_error, 'stack').get; 385 var stolen_getter = Object.getOwnPropertyDescriptor(my_error, 'stack').get;
352 Object.defineProperty(fake_error, 'stack', { get: stolen_getter }); 386 Object.defineProperty(fake_error, 'stack', { get: stolen_getter });
353 assertEquals(undefined, fake_error.stack); 387 assertEquals(undefined, fake_error.stack);
OLDNEW
« no previous file with comments | « src/runtime/runtime-debug.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698