Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(437)

Unified Diff: third_party/WebKit/Source/devtools/front_end/formatter_worker/FormatterWorker.js

Issue 1887913002: DevTools: improve identifier extraction in SourceMapNamesResolver (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/devtools/front_end/formatter_worker/FormatterWorker.js
diff --git a/third_party/WebKit/Source/devtools/front_end/formatter_worker/FormatterWorker.js b/third_party/WebKit/Source/devtools/front_end/formatter_worker/FormatterWorker.js
index 37014ddcfc467fcdfb9099eb1d9ffe47a2fc3e32..2c8fd460578b23d61b7e29c7f08c1b2068a97a12 100644
--- a/third_party/WebKit/Source/devtools/front_end/formatter_worker/FormatterWorker.js
+++ b/third_party/WebKit/Source/devtools/front_end/formatter_worker/FormatterWorker.js
@@ -131,11 +131,11 @@ WebInspector.evaluatableJavaScriptSubstring = function(content)
*/
WebInspector.javaScriptIdentifiers = function(content)
{
- var root = acorn.parse(content, {});
+ var root = acorn.parse(content, { ranges: false, ecmaVersion: 6 });
+
/** @type {!Array<!ESTree.Node>} */
var identifiers = [];
- var functionDeclarationCounter = 0;
- var walker = new WebInspector.ESTreeWalker(beforeVisit, afterVisit);
+ var walker = new WebInspector.ESTreeWalker(beforeVisit);
/**
* @param {!ESTree.Node} node
@@ -143,7 +143,7 @@ WebInspector.javaScriptIdentifiers = function(content)
*/
function isFunction(node)
{
- return node.type === "FunctionDeclaration" || node.type === "FunctionExpression";
+ return node.type === "FunctionDeclaration" || node.type === "FunctionExpression" || node.type === "ArrowFunctionExpression";
}
/**
@@ -151,29 +151,29 @@ WebInspector.javaScriptIdentifiers = function(content)
*/
function beforeVisit(node)
{
- if (isFunction(node))
- functionDeclarationCounter++;
+ if (isFunction(node)) {
+ if (node.id)
+ identifiers.push(node.id);
+ return WebInspector.ESTreeWalker.SkipSubtree;
+ }
- if (functionDeclarationCounter > 1)
+ if (node.type !== "Identifier")
return;
- if (isFunction(node) && node.params)
- identifiers.pushAll(node.params);
-
- if (node.type === "VariableDeclarator")
- identifiers.push(/** @type {!ESTree.Node} */(node.id));
+ if (node.parent && node.parent.type === "MemberExpression" && node.parent.property === node && !node.parent.computed)
+ return;
+ identifiers.push(node);
}
- /**
- * @param {!ESTree.Node} node
- */
- function afterVisit(node)
- {
- if (isFunction(node))
- functionDeclarationCounter--;
+ if (!root || root.type !== "Program" || root.body.length !== 1 || !isFunction(root.body[0])) {
+ postMessage([]);
+ return;
}
- walker.walk(root);
+ var functionNode = root.body[0];
+ for (var param of functionNode.params)
+ walker.walk(param);
+ walker.walk(functionNode.body);
var reduced = identifiers.map(id => ({name: id.name, offset: id.start}));
postMessage(reduced);
}

Powered by Google App Engine
This is Rietveld 408576698