// Copyright 2020 the V8 project authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. let {session, contextGroup, Protocol} = InspectorTest.start('Regression test for crbug.com/1140845. Check that a "then" gettter on the object prototype does not crash V8'); const setupScript = ` let obj = Object.prototype; obj.__defineGetter__('then', function() {console.log("foo")}); `; (async function() { await Protocol.Debugger.enable(); // Set a custom `then` method on the Object prototype. This causes termination // when 'then' is retrieved, as the 'then' getter is side-effecting. await Protocol.Runtime.evaluate({ expression: setupScript, }); InspectorTest.log(`Evaluating a simple string 'foo' does not cause a crash, but a side-effect exception.`); InspectorTest.logMessage(await Protocol.Runtime.evaluate({ expression: `"foo"`, replMode: true, throwOnSideEffect: true, })); InspectorTest.log(`Evaluating a simple string 'foo' with side-effets should give us the string.`); InspectorTest.logMessage(await Protocol.Runtime.evaluate({ expression: `"foo"`, replMode: true, })); InspectorTest.completeTest(); })();