Title: [192945] trunk
Revision
192945
Author
commit-qu...@webkit.org
Date
2015-12-02 09:27:37 -0800 (Wed, 02 Dec 2015)

Log Message

Web Inspector: Handle YieldExpressions in the ScriptSyntaxTree
https://bugs.webkit.org/show_bug.cgi?id=151730

Patch by Joseph Pecoraro <pecor...@apple.com> on 2015-12-02
Reviewed by Brian Burg.

Source/WebInspectorUI:

* UserInterface/Models/NativeFunctionParameters.js:
Add the Generator API.

* UserInterface/Models/ScriptSyntaxTree.js:
(WebInspector.ScriptSyntaxTree.prototype._recurse):
(WebInspector.ScriptSyntaxTree.prototype._createInternalSyntaxTree):
Handle YieldExpressions.

LayoutTests:

* inspector/model/parse-script-syntax-tree-expected.txt:
* inspector/model/parse-script-syntax-tree.html:

Modified Paths

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_"),
 };
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to