v8/test/inspector/runtime/es6-module.js
Aleksei Koziatinskii 915aeab1b5 inspector: fix queryObjects when page contains JSModuleNamespace
JSModuleNamespace does not have well defined CreationContext: current
implementation of JSReceiver::GetCreationContext crashes on CHECK.

R=lushnikov@chromium.org,yangguo@chromium.org

Bug: none
Change-Id: Ie2c0bfa39117d42d81f9709c21376c177b18e5ba
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1652559
Reviewed-by: Yang Guo <yangguo@chromium.org>
Commit-Queue: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#62128}
2019-06-12 18:27:19 +00:00

80 lines
2.6 KiB
JavaScript

// Copyright 2017 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('Checks basic ES6 modules support.');
var module1 = `
export function foo() {
console.log('module1');
return 42;
}
export let a1 = 1`;
var module2 = `
export function foo() {
console.log('module2');
return 239;
}
export let a2 = 2`;
var module3 = `
import { foo as foo1 } from 'module1';
import { foo as foo2 } from 'module2';
// check that queryObjects works with JSModuleNamespace
import * as foo3 from 'module2';
console.log(foo1());
console.log(foo2());
import { a1 } from 'module1';
import { a2 } from 'module2';
debugger;
foo3;
`;
var module4 = '}';
(async function test() {
session.setupScriptMap();
// We get scriptParsed events for modules ..
Protocol.Debugger.onScriptParsed(InspectorTest.logMessage);
// .. scriptFailed to parse for modules with syntax error ..
Protocol.Debugger.onScriptFailedToParse(InspectorTest.logMessage);
// .. API messages from modules contain correct stack trace ..
Protocol.Runtime.onConsoleAPICalled(message => {
InspectorTest.log(`console.log(${message.params.args[0].value})`);
session.logCallFrames(message.params.stackTrace.callFrames);
InspectorTest.log('');
});
// .. we could break inside module and scope contains correct list of variables ..
Protocol.Debugger.onPaused(message => {
InspectorTest.logMessage(message);
Protocol.Runtime.getProperties({ objectId: message.params.callFrames[0].scopeChain[0].object.objectId})
.then(InspectorTest.logMessage)
.then(() => Protocol.Debugger.resume());
});
// .. we process uncaught errors from modules correctly.
Protocol.Runtime.onExceptionThrown(InspectorTest.logMessage);
Protocol.Runtime.enable();
await Protocol.Debugger.enable();
await contextGroup.addModule(module1, 'module1');
await contextGroup.addModule(module2, 'module2');
await contextGroup.addModule(module3, 'module3');
await contextGroup.addModule(module4, 'module4');
await InspectorTest.waitForPendingTasks();
Protocol.Debugger.onScriptParsed(null);
Protocol.Runtime.evaluate({
includeCommandLineAPI: true,
expression: 'queryObjects(Function)'
});
const {params:{object:{objectId}}} = await Protocol.Runtime.onceInspectRequested();
const {result:{objects}} = await Protocol.Runtime.queryObjects({
prototypeObjectId: objectId
});
InspectorTest.log('queryObjects returns ' + objects.description.replace(/\d+/, 'N'));
InspectorTest.completeTest();
})();