зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1316265 - Reps: display when a function is a generator or an async function. r=nchevobbe
MozReview-Commit-ID: C79EAU4vN1u --HG-- extra : rebase_source : a6a2f2c3a6673915811993db852f0c799a96d3c6
This commit is contained in:
Родитель
5095f8b5b8
Коммит
26aaa118a1
|
@ -27,16 +27,24 @@ define(function (require, exports, module) {
|
|||
},
|
||||
|
||||
getTitle: function (grip) {
|
||||
let title = "function ";
|
||||
if (grip.isGenerator) {
|
||||
title = "function* ";
|
||||
}
|
||||
if (grip.isAsync) {
|
||||
title = "async " + title;
|
||||
}
|
||||
|
||||
if (this.props.objectLink) {
|
||||
return this.props.objectLink({
|
||||
object: grip
|
||||
}, "function ");
|
||||
}, title);
|
||||
}
|
||||
return "";
|
||||
return title;
|
||||
},
|
||||
|
||||
summarizeFunction: function (grip) {
|
||||
let name = grip.userDisplayName || grip.displayName || grip.name || "function";
|
||||
let name = grip.userDisplayName || grip.displayName || grip.name || "";
|
||||
return cropString(name + "()", 100);
|
||||
},
|
||||
|
||||
|
|
|
@ -19,6 +19,7 @@ Test Func rep
|
|||
window.onload = Task.async(function* () {
|
||||
let { Rep } = browserRequire("devtools/client/shared/components/reps/rep");
|
||||
let { Func } = browserRequire("devtools/client/shared/components/reps/function");
|
||||
const { MODE } = browserRequire("devtools/client/shared/components/reps/constants");
|
||||
|
||||
const componentUnderTest = Func;
|
||||
|
||||
|
@ -32,6 +33,9 @@ window.onload = Task.async(function* () {
|
|||
yield testVarNamed();
|
||||
yield testAnon();
|
||||
yield testLongName();
|
||||
yield testAsyncFunction();
|
||||
yield testAnonAsyncFunction();
|
||||
yield testGeneratorFunction();
|
||||
} catch(e) {
|
||||
ok(false, "Got an error: " + DevToolsUtils.safeErrorString(e));
|
||||
} finally {
|
||||
|
@ -39,10 +43,10 @@ window.onload = Task.async(function* () {
|
|||
}
|
||||
|
||||
function testNamed() {
|
||||
// Test declaration: `function testName{ let innerVar = "foo" }`
|
||||
// Test declaration: `function testName() { let innerVar = "foo" }`
|
||||
const testName = "testNamed";
|
||||
|
||||
const defaultOutput = `testName()`;
|
||||
const defaultOutput = "function testName()";
|
||||
|
||||
const modeTests = [
|
||||
{
|
||||
|
@ -55,10 +59,10 @@ window.onload = Task.async(function* () {
|
|||
}
|
||||
|
||||
function testUserNamed() {
|
||||
// Test declaration: `function testName{ let innerVar = "foo" }`
|
||||
// Test declaration: `function testName() { let innerVar = "foo" }`
|
||||
const testName = "testUserNamed";
|
||||
|
||||
const defaultOutput = `testUserName()`;
|
||||
const defaultOutput = "function testUserName()";
|
||||
|
||||
const modeTests = [
|
||||
{
|
||||
|
@ -74,7 +78,7 @@ window.onload = Task.async(function* () {
|
|||
// Test declaration: `let testVarName = function() { }`
|
||||
const testName = "testVarNamed";
|
||||
|
||||
const defaultOutput = `testVarName()`;
|
||||
const defaultOutput = "function testVarName()";
|
||||
|
||||
const modeTests = [
|
||||
{
|
||||
|
@ -90,7 +94,7 @@ window.onload = Task.async(function* () {
|
|||
// Test declaration: `() => {}`
|
||||
const testName = "testAnon";
|
||||
|
||||
const defaultOutput = `function()`;
|
||||
const defaultOutput = "function ()";
|
||||
|
||||
const modeTests = [
|
||||
{
|
||||
|
@ -106,7 +110,7 @@ window.onload = Task.async(function* () {
|
|||
// Test declaration: `let f = function loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong() { }`
|
||||
const testName = "testLongName";
|
||||
|
||||
const defaultOutput = `looooooooooooooooooooooooooooooooooooooooooooooooo\u2026ooooooooooooooooooooooooooooooooooooooooooooong()`;
|
||||
const defaultOutput = "function looooooooooooooooooooooooooooooooooooooooooooooooo\u2026ooooooooooooooooooooooooooooooooooooooooooooong()";
|
||||
|
||||
const modeTests = [
|
||||
{
|
||||
|
@ -118,6 +122,110 @@ window.onload = Task.async(function* () {
|
|||
testRepRenderModes(modeTests, testName, componentUnderTest, getGripStub(testName));
|
||||
}
|
||||
|
||||
function testAsyncFunction() {
|
||||
const testName = "testAsyncFunction";
|
||||
|
||||
const defaultOutput = "async function waitUntil2017()";
|
||||
|
||||
const modeTests = [
|
||||
{
|
||||
mode: undefined,
|
||||
expectedOutput: defaultOutput,
|
||||
},
|
||||
{
|
||||
mode: MODE.TINY,
|
||||
expectedOutput: defaultOutput,
|
||||
},
|
||||
{
|
||||
mode: MODE.SHORT,
|
||||
expectedOutput: defaultOutput,
|
||||
},
|
||||
{
|
||||
mode: MODE.LONG,
|
||||
expectedOutput: defaultOutput,
|
||||
}
|
||||
];
|
||||
testRepRenderModes(modeTests, testName, componentUnderTest, getGripStub(testName));
|
||||
}
|
||||
|
||||
function testAnonAsyncFunction() {
|
||||
const testName = "testAnonAsyncFunction";
|
||||
|
||||
const defaultOutput = "async function ()";
|
||||
|
||||
const modeTests = [
|
||||
{
|
||||
mode: undefined,
|
||||
expectedOutput: defaultOutput,
|
||||
},
|
||||
{
|
||||
mode: MODE.TINY,
|
||||
expectedOutput: defaultOutput,
|
||||
},
|
||||
{
|
||||
mode: MODE.SHORT,
|
||||
expectedOutput: defaultOutput,
|
||||
},
|
||||
{
|
||||
mode: MODE.LONG,
|
||||
expectedOutput: defaultOutput,
|
||||
}
|
||||
];
|
||||
testRepRenderModes(modeTests, testName, componentUnderTest, getGripStub(testName));
|
||||
}
|
||||
|
||||
function testGeneratorFunction() {
|
||||
const testName = "testGeneratorFunction";
|
||||
|
||||
const defaultOutput = "function* fib()";
|
||||
|
||||
const modeTests = [
|
||||
{
|
||||
mode: undefined,
|
||||
expectedOutput: defaultOutput,
|
||||
},
|
||||
{
|
||||
mode: MODE.TINY,
|
||||
expectedOutput: defaultOutput,
|
||||
},
|
||||
{
|
||||
mode: MODE.SHORT,
|
||||
expectedOutput: defaultOutput,
|
||||
},
|
||||
{
|
||||
mode: MODE.LONG,
|
||||
expectedOutput: defaultOutput,
|
||||
}
|
||||
];
|
||||
testRepRenderModes(modeTests, testName, componentUnderTest, getGripStub(testName));
|
||||
}
|
||||
|
||||
function testAnonGeneratorFunction() {
|
||||
const testName = "testAnonGeneratorFunction";
|
||||
|
||||
const defaultOutput = "function* ()";
|
||||
|
||||
const modeTests = [
|
||||
{
|
||||
mode: undefined,
|
||||
expectedOutput: defaultOutput,
|
||||
},
|
||||
{
|
||||
mode: MODE.TINY,
|
||||
expectedOutput: defaultOutput,
|
||||
},
|
||||
{
|
||||
mode: MODE.SHORT,
|
||||
expectedOutput: defaultOutput,
|
||||
},
|
||||
{
|
||||
mode: MODE.LONG,
|
||||
expectedOutput: defaultOutput,
|
||||
}
|
||||
];
|
||||
testRepRenderModes(modeTests, testName, componentUnderTest, getGripStub(testName));
|
||||
}
|
||||
|
||||
function getGripStub(functionName) {
|
||||
switch (functionName) {
|
||||
case "testNamed":
|
||||
|
@ -128,6 +236,8 @@ window.onload = Task.async(function* () {
|
|||
"extensible": true,
|
||||
"frozen": false,
|
||||
"sealed": false,
|
||||
"isAsync": false,
|
||||
"isGenerator": false,
|
||||
"name": "testName",
|
||||
"displayName": "testName",
|
||||
"location": {
|
||||
|
@ -144,6 +254,8 @@ window.onload = Task.async(function* () {
|
|||
"extensible": true,
|
||||
"frozen": false,
|
||||
"sealed": false,
|
||||
"isAsync": false,
|
||||
"isGenerator": false,
|
||||
"name": "testName",
|
||||
"userDisplayName": "testUserName",
|
||||
"displayName": "testName",
|
||||
|
@ -161,6 +273,8 @@ window.onload = Task.async(function* () {
|
|||
"extensible": true,
|
||||
"frozen": false,
|
||||
"sealed": false,
|
||||
"isAsync": false,
|
||||
"isGenerator": false,
|
||||
"displayName": "testVarName",
|
||||
"location": {
|
||||
"url": "debugger eval code",
|
||||
|
@ -176,6 +290,8 @@ window.onload = Task.async(function* () {
|
|||
"extensible": true,
|
||||
"frozen": false,
|
||||
"sealed": false,
|
||||
"isAsync": false,
|
||||
"isGenerator": false,
|
||||
"location": {
|
||||
"url": "debugger eval code",
|
||||
"line": 1
|
||||
|
@ -190,6 +306,8 @@ window.onload = Task.async(function* () {
|
|||
"extensible": true,
|
||||
"frozen": false,
|
||||
"sealed": false,
|
||||
"isAsync": false,
|
||||
"isGenerator": false,
|
||||
"name": "loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong",
|
||||
"displayName": "loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong",
|
||||
"location": {
|
||||
|
@ -197,6 +315,75 @@ window.onload = Task.async(function* () {
|
|||
"line": 1
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
case "testAsyncFunction":
|
||||
return {
|
||||
"type": "object",
|
||||
"class": "Function",
|
||||
"actor": "server1.conn7.obj45",
|
||||
"extensible": true,
|
||||
"frozen": false,
|
||||
"sealed": false,
|
||||
"isAsync": true,
|
||||
"isGenerator": false,
|
||||
"name": "waitUntil2017",
|
||||
"displayName": "waitUntil2017",
|
||||
"location": {
|
||||
"url": "debugger eval code",
|
||||
"line": 1
|
||||
}
|
||||
};
|
||||
|
||||
case "testAnonAsyncFunction":
|
||||
return {
|
||||
"type": "object",
|
||||
"class": "Function",
|
||||
"actor": "server1.conn7.obj45",
|
||||
"extensible": true,
|
||||
"frozen": false,
|
||||
"sealed": false,
|
||||
"isAsync": true,
|
||||
"isGenerator": false,
|
||||
"location": {
|
||||
"url": "debugger eval code",
|
||||
"line": 1
|
||||
}
|
||||
};
|
||||
|
||||
case "testGeneratorFunction":
|
||||
return {
|
||||
"type": "object",
|
||||
"class": "Function",
|
||||
"actor": "server1.conn7.obj45",
|
||||
"extensible": true,
|
||||
"frozen": false,
|
||||
"sealed": false,
|
||||
"isAsync": false,
|
||||
"isGenerator": true,
|
||||
"name": "fib",
|
||||
"displayName": "fib",
|
||||
"location": {
|
||||
"url": "debugger eval code",
|
||||
"line": 1
|
||||
}
|
||||
};
|
||||
|
||||
case "testAnonGeneratorFunction":
|
||||
return {
|
||||
"type": "object",
|
||||
"class": "Function",
|
||||
"actor": "server1.conn7.obj45",
|
||||
"extensible": true,
|
||||
"frozen": false,
|
||||
"sealed": false,
|
||||
"isAsync": false,
|
||||
"isGenerator": true,
|
||||
"location": {
|
||||
"url": "debugger eval code",
|
||||
"line": 1
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
});
|
||||
|
|
|
@ -1127,6 +1127,10 @@ DebuggerServer.ObjectActorPreviewers = {
|
|||
grip.parameterNames = obj.parameterNames;
|
||||
}
|
||||
|
||||
let type = DevToolsUtils.getProperty(obj, "constructor").name;
|
||||
grip.isAsync = type === "AsyncFunction";
|
||||
grip.isGenerator = type === "GeneratorFunction";
|
||||
|
||||
// Check if the developer has added a de-facto standard displayName
|
||||
// property for us to use.
|
||||
let userDisplayName;
|
||||
|
|
Загрузка…
Ссылка в новой задаче