Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2014 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 /** | 5 /** |
| 6 * @constructor | 6 * @constructor |
| 7 * @param {function(!ESTree.Node)} beforeVisit | 7 * @param {function(!ESTree.Node)} beforeVisit |
| 8 * @param {function(!ESTree.Node)} afterVisit | 8 * @param {function(!ESTree.Node)} afterVisit |
| 9 */ | 9 */ |
| 10 FormatterWorker.ESTreeWalker = function(beforeVisit, afterVisit) | 10 FormatterWorker.ESTreeWalker = function(beforeVisit, afterVisit) |
| (...skipping 22 matching lines...) Expand all Loading... | |
| 33 node.parent = parent; | 33 node.parent = parent; |
| 34 | 34 |
| 35 this._beforeVisit.call(null, node); | 35 this._beforeVisit.call(null, node); |
| 36 | 36 |
| 37 var walkOrder = FormatterWorker.ESTreeWalker._walkOrder[node.type]; | 37 var walkOrder = FormatterWorker.ESTreeWalker._walkOrder[node.type]; |
| 38 if (!walkOrder) { | 38 if (!walkOrder) { |
| 39 console.error("Walk order not defined for " + node.type); | 39 console.error("Walk order not defined for " + node.type); |
| 40 return; | 40 return; |
| 41 } | 41 } |
| 42 | 42 |
| 43 for (var i = 0; i < walkOrder.length; ++i) { | 43 if (node.type === "TemplateLiteral") { |
| 44 var entity = node[walkOrder[i]]; | 44 var templateLiteral = /** @type {!ESTree.TemplateLiteralNode} */ (no de); |
| 45 if (Array.isArray(entity)) | 45 var expressionsLength = templateLiteral.expressions.length; |
| 46 this._walkArray(entity, node); | 46 for (var i = 0; i < expressionsLength; ++i) { |
| 47 else | 47 this._innerWalk(templateLiteral.quasis[i], templateLiteral); |
| 48 this._innerWalk(entity, node); | 48 this._innerWalk(templateLiteral.expressions[i], templateLiteral) ; |
| 49 } | |
| 50 this._innerWalk(templateLiteral.quasis[expressionsLength - 1], templ ateLiteral); | |
|
sergeyv
2015/05/14 13:01:17
expressionLength
lushnikov
2015/05/14 13:07:54
Nice catch, thanks!
| |
| 51 } else { | |
| 52 for (var i = 0; i < walkOrder.length; ++i) { | |
| 53 var entity = node[walkOrder[i]]; | |
| 54 if (Array.isArray(entity)) | |
| 55 this._walkArray(entity, node); | |
| 56 else | |
| 57 this._innerWalk(entity, node); | |
| 58 } | |
| 49 } | 59 } |
| 50 | 60 |
| 51 this._afterVisit.call(null, node); | 61 this._afterVisit.call(null, node); |
| 52 }, | 62 }, |
| 53 | 63 |
| 54 /** | 64 /** |
| 55 * @param {!Array.<!ESTree.Node>} nodeArray | 65 * @param {!Array.<!ESTree.Node>} nodeArray |
| 56 * @param {?ESTree.Node} parentNode | 66 * @param {?ESTree.Node} parentNode |
| 57 */ | 67 */ |
| 58 _walkArray: function(nodeArray, parentNode) | 68 _walkArray: function(nodeArray, parentNode) |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 93 "MethodDefinition": ["key", "value"], | 103 "MethodDefinition": ["key", "value"], |
| 94 "NewExpression": ["callee", "arguments"], | 104 "NewExpression": ["callee", "arguments"], |
| 95 "ObjectExpression": ["properties"], | 105 "ObjectExpression": ["properties"], |
| 96 "Program": ["body"], | 106 "Program": ["body"], |
| 97 "Property": ["key", "value"], | 107 "Property": ["key", "value"], |
| 98 "ReturnStatement": ["argument"], | 108 "ReturnStatement": ["argument"], |
| 99 "SequenceExpression": ["expressions"], | 109 "SequenceExpression": ["expressions"], |
| 100 "Super": [], | 110 "Super": [], |
| 101 "SwitchCase": ["test", "consequent"], | 111 "SwitchCase": ["test", "consequent"], |
| 102 "SwitchStatement": ["discriminant", "cases"], | 112 "SwitchStatement": ["discriminant", "cases"], |
| 113 "TaggedTemplateExpression": ["tag", "quasi"], | |
| 114 "TemplateElement": [], | |
| 115 "TemplateLiteral": ["quasis", "expressions"], | |
| 103 "ThisExpression": [], | 116 "ThisExpression": [], |
| 104 "ThrowStatement": ["argument"], | 117 "ThrowStatement": ["argument"], |
| 105 "TryStatement": ["block", "handler", "finalizer"], | 118 "TryStatement": ["block", "handler", "finalizer"], |
| 106 "UnaryExpression": ["argument"], | 119 "UnaryExpression": ["argument"], |
| 107 "UpdateExpression": ["argument"], | 120 "UpdateExpression": ["argument"], |
| 108 "VariableDeclaration": ["declarations"], | 121 "VariableDeclaration": ["declarations"], |
| 109 "VariableDeclarator": ["id", "init"], | 122 "VariableDeclarator": ["id", "init"], |
| 110 "WhileStatement": ["test", "body"], | 123 "WhileStatement": ["test", "body"], |
| 111 "WithStatement": ["object", "body"], | 124 "WithStatement": ["object", "body"], |
| 112 "YieldExpression": ["argument"] | 125 "YieldExpression": ["argument"] |
| 113 } | 126 } |
| OLD | NEW |