Diff
Modified: trunk/LayoutTests/ChangeLog (192944 => 192945)
--- trunk/LayoutTests/ChangeLog 2015-12-02 16:53:12 UTC (rev 192944)
+++ trunk/LayoutTests/ChangeLog 2015-12-02 17:27:37 UTC (rev 192945)
@@ -1,3 +1,13 @@
+2015-12-02 Joseph Pecoraro <pecor...@apple.com>
+
+ Web Inspector: Handle YieldExpressions in the ScriptSyntaxTree
+ https://bugs.webkit.org/show_bug.cgi?id=151730
+
+ Reviewed by Brian Burg.
+
+ * inspector/model/parse-script-syntax-tree-expected.txt:
+ * inspector/model/parse-script-syntax-tree.html:
+
2015-12-01 Myles C. Maxfield <mmaxfi...@apple.com>
[Win] Test gardening after r192895
Modified: trunk/LayoutTests/inspector/model/parse-script-syntax-tree-expected.txt (192944 => 192945)
--- trunk/LayoutTests/inspector/model/parse-script-syntax-tree-expected.txt 2015-12-02 16:53:12 UTC (rev 192944)
+++ trunk/LayoutTests/inspector/model/parse-script-syntax-tree-expected.txt 2015-12-02 17:27:37 UTC (rev 192945)
@@ -38,6 +38,7 @@
passed VariableDeclarator
passed WhileStatement
passed WithStatement
+passed YieldExpression
passed ClassStatement, Super, MetaProperty
passed AssignmentPattern
passed ArrowFunctionExpression
Modified: trunk/LayoutTests/inspector/model/parse-script-syntax-tree.html (192944 => 192945)
--- trunk/LayoutTests/inspector/model/parse-script-syntax-tree.html 2015-12-02 16:53:12 UTC (rev 192944)
+++ trunk/LayoutTests/inspector/model/parse-script-syntax-tree.html 2015-12-02 17:27:37 UTC (rev 192945)
@@ -193,6 +193,7 @@
InspectorTest.assert(node.params[1].type === WebInspector.ScriptSyntaxTree.NodeType.Identifier);
InspectorTest.assert(node.body);
InspectorTest.assert(node.body.type === WebInspector.ScriptSyntaxTree.NodeType.BlockStatement);
+ InspectorTest.assert(!node.generator);
node = makeNode("x = {get foo(){return 20}}", true);
InspectorTest.assert(node.right.properties[0].value.type === WebInspector.ScriptSyntaxTree.NodeType.FunctionExpression);
node = makeNode("x = {set foo(x){return 20}}", true);
@@ -207,6 +208,7 @@
InspectorTest.assert(node.arguments[0].params[1].type === WebInspector.ScriptSyntaxTree.NodeType.Identifier);
InspectorTest.assert(node.arguments[0].body);
InspectorTest.assert(node.arguments[0].body.type === WebInspector.ScriptSyntaxTree.NodeType.BlockStatement);
+ InspectorTest.assert(!node.arguments[0].generator);
InspectorTest.log("passed FunctionExpression");
node = makeNode("foo;", true);
@@ -443,6 +445,21 @@
InspectorTest.assert(node.body.type === WebInspector.ScriptSyntaxTree.NodeType.BlockStatement);
InspectorTest.log("passed WithStatement");
+ node = makeNode("function* gen() { yield 1; yield* [1,2]; }", false);
+ InspectorTest.assert(node.type === WebInspector.ScriptSyntaxTree.NodeType.FunctionDeclaration);
+ InspectorTest.assert(node.generator);
+ InspectorTest.assert(node.body.type === WebInspector.ScriptSyntaxTree.NodeType.BlockStatement);
+ InspectorTest.assert(node.body.body.length === 2);
+ InspectorTest.assert(node.body.body[0].type === WebInspector.ScriptSyntaxTree.NodeType.ExpressionStatement);
+ InspectorTest.assert(node.body.body[0]._expression_.type === WebInspector.ScriptSyntaxTree.NodeType.YieldExpression);
+ InspectorTest.assert(!node.body.body[0]._expression_.delegate);
+ InspectorTest.assert(node.body.body[0]._expression_.argument.type === WebInspector.ScriptSyntaxTree.NodeType.Literal);
+ InspectorTest.assert(node.body.body[1].type === WebInspector.ScriptSyntaxTree.NodeType.ExpressionStatement);
+ InspectorTest.assert(node.body.body[1]._expression_.type === WebInspector.ScriptSyntaxTree.NodeType.YieldExpression);
+ InspectorTest.assert(node.body.body[1]._expression_.delegate);
+ InspectorTest.assert(node.body.body[1]._expression_.argument.type === WebInspector.ScriptSyntaxTree.NodeType.ArrayExpression);
+ InspectorTest.log("passed YieldExpression");
+
node = makeNode("class C { constructor() { super(); new.target; } }", false);
InspectorTest.assert(node.type === WebInspector.ScriptSyntaxTree.NodeType.ClassDeclaration);
InspectorTest.assert(node.body.type === WebInspector.ScriptSyntaxTree.NodeType.ClassBody);
Modified: trunk/Source/WebInspectorUI/ChangeLog (192944 => 192945)
--- trunk/Source/WebInspectorUI/ChangeLog 2015-12-02 16:53:12 UTC (rev 192944)
+++ trunk/Source/WebInspectorUI/ChangeLog 2015-12-02 17:27:37 UTC (rev 192945)
@@ -1,3 +1,18 @@
+2015-12-02 Joseph Pecoraro <pecor...@apple.com>
+
+ Web Inspector: Handle YieldExpressions in the ScriptSyntaxTree
+ https://bugs.webkit.org/show_bug.cgi?id=151730
+
+ Reviewed by Brian Burg.
+
+ * UserInterface/Models/NativeFunctionParameters.js:
+ Add the Generator API.
+
+ * UserInterface/Models/ScriptSyntaxTree.js:
+ (WebInspector.ScriptSyntaxTree.prototype._recurse):
+ (WebInspector.ScriptSyntaxTree.prototype._createInternalSyntaxTree):
+ Handle YieldExpressions.
+
2015-12-01 Matt Baker <mattba...@apple.com>
Web Inspector: TreeOutline should just dispatch events via WebInspector.Object
Modified: trunk/Source/WebInspectorUI/UserInterface/Models/NativeFunctionParameters.js (192944 => 192945)
--- trunk/Source/WebInspectorUI/UserInterface/Models/NativeFunctionParameters.js 2015-12-02 16:53:12 UTC (rev 192944)
+++ trunk/Source/WebInspectorUI/UserInterface/Models/NativeFunctionParameters.js 2015-12-02 17:27:37 UTC (rev 192945)
@@ -345,6 +345,13 @@
__proto__: null,
},
+ Generator: {
+ next: "value",
+ return: "value",
+ throw: "exception",
+ __proto__: null,
+ },
+
// Curated DOM Interfaces.
Element: {
Modified: trunk/Source/WebInspectorUI/UserInterface/Models/ScriptSyntaxTree.js (192944 => 192945)
--- trunk/Source/WebInspectorUI/UserInterface/Models/ScriptSyntaxTree.js 2015-12-02 16:53:12 UTC (rev 192944)
+++ trunk/Source/WebInspectorUI/UserInterface/Models/ScriptSyntaxTree.js 2015-12-02 17:27:37 UTC (rev 192945)
@@ -494,6 +494,10 @@
this._recurse(node.object, callback, state);
this._recurse(node.body, callback, state);
break;
+ case WebInspector.ScriptSyntaxTree.NodeType.YieldExpression:
+ callback(node, state);
+ this._recurse(node.argument, callback, state);
+ break;
// All the leaf nodes go here.
case WebInspector.ScriptSyntaxTree.NodeType.DebuggerStatement:
case WebInspector.ScriptSyntaxTree.NodeType.EmptyStatement:
@@ -546,6 +550,7 @@
params: node.params.map(this._createInternalSyntaxTree, this),
defaults: node.defaults.map(this._createInternalSyntaxTree, this),
body: this._createInternalSyntaxTree(node.body),
+ generator: node.generator,
_expression_: node._expression_, // Boolean indicating if the body a single _expression_ or a block statement.
typeProfilingReturnDivot: node.range[0]
};
@@ -690,6 +695,7 @@
params: node.params.map(this._createInternalSyntaxTree, this),
defaults: node.defaults.map(this._createInternalSyntaxTree, this),
body: this._createInternalSyntaxTree(node.body),
+ generator: node.generator,
typeProfilingReturnDivot: node.range[0]
};
break;
@@ -700,6 +706,7 @@
params: node.params.map(this._createInternalSyntaxTree, this),
defaults: node.defaults.map(this._createInternalSyntaxTree, this),
body: this._createInternalSyntaxTree(node.body),
+ generator: node.generator,
typeProfilingReturnDivot: node.range[0] // This may be overridden in the Property AST node.
};
break;
@@ -924,6 +931,13 @@
body: this._createInternalSyntaxTree(node.body)
};
break;
+ case "YieldExpression":
+ result = {
+ type: WebInspector.ScriptSyntaxTree.NodeType.YieldExpression,
+ argument: this._createInternalSyntaxTree(node.argument),
+ delegate: node.delegate
+ };
+ break;
default:
console.error("Unsupported Syntax Tree Node: " + node.type, node);
return null;
@@ -999,4 +1013,5 @@
VariableDeclarator: Symbol("variable-declarator"),
WhileStatement: Symbol("while-statement"),
WithStatement: Symbol("with-statement"),
+ YieldExpression: Symbol("yield-_expression_"),
};