Skip to content

Commit

Permalink
Some code cleanups for readability
Browse files Browse the repository at this point in the history
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=181216471
  • Loading branch information
tbreisacher authored and brad4d committed Jan 9, 2018
1 parent 679ea8f commit fe990fe
Show file tree
Hide file tree
Showing 3 changed files with 69 additions and 27 deletions.
1 change: 0 additions & 1 deletion src/com/google/javascript/jscomp/FunctionInjector.java
Expand Up @@ -663,7 +663,6 @@ private CanInlineResult canInlineReferenceAsStatementBlock(
*/ */
private boolean callMeetsBlockInliningRequirements( private boolean callMeetsBlockInliningRequirements(
Reference ref, final Node fnNode, ImmutableSet<String> namesToAlias) { Reference ref, final Node fnNode, ImmutableSet<String> namesToAlias) {
final boolean assumeMinimumCapture = this.assumeMinimumCapture;
// Note: functions that contain function definitions are filtered out // Note: functions that contain function definitions are filtered out
// in isCandidateFunction. // in isCandidateFunction.


Expand Down
19 changes: 9 additions & 10 deletions src/com/google/javascript/jscomp/InlineFunctions.java
Expand Up @@ -228,9 +228,9 @@ public void findFunctionExpressions(NodeTraversal t, Node n) {
if (n.getFirstChild().isFunction()) { if (n.getFirstChild().isFunction()) {
fnNode = n.getFirstChild(); fnNode = n.getFirstChild();
} else if (NodeUtil.isFunctionObjectCall(n)) { } else if (NodeUtil.isFunctionObjectCall(n)) {
Node fnIdentifingNode = n.getFirstFirstChild(); Node fnIdentifyingNode = n.getFirstFirstChild();
if (fnIdentifingNode.isFunction()) { if (fnIdentifyingNode.isFunction()) {
fnNode = fnIdentifingNode; fnNode = fnIdentifyingNode;
} }
} }


Expand Down Expand Up @@ -400,19 +400,18 @@ public void visit(NodeTraversal t, Node n, Node parent) {
case CALL: case CALL:
Node child = n.getFirstChild(); Node child = n.getFirstChild();
String name = null; String name = null;
// NOTE: The normalization pass insures that local names do not // NOTE: The normalization pass ensures that local names do not collide with global names.
// collide with global names.
if (child.isName()) { if (child.isName()) {
name = child.getString(); name = child.getString();
} else if (child.isFunction()) { } else if (child.isFunction()) {
name = anonFunctionMap.get(child); name = anonFunctionMap.get(child);
} else if (NodeUtil.isFunctionObjectCall(n)) { } else if (NodeUtil.isFunctionObjectCall(n)) {
checkState(NodeUtil.isGet(child)); checkState(NodeUtil.isGet(child));
Node fnIdentifingNode = child.getFirstChild(); Node fnIdentifyingNode = child.getFirstChild();
if (fnIdentifingNode.isName()) { if (fnIdentifyingNode.isName()) {
name = fnIdentifingNode.getString(); name = fnIdentifyingNode.getString();
} else if (fnIdentifingNode.isFunction()) { } else if (fnIdentifyingNode.isFunction()) {
name = anonFunctionMap.get(fnIdentifingNode); name = anonFunctionMap.get(fnIdentifyingNode);
} }
} }


Expand Down
76 changes: 60 additions & 16 deletions test/com/google/javascript/jscomp/InlineFunctionsTest.java
Expand Up @@ -1199,10 +1199,15 @@ public void testNoInlineOfNonGlobalFunction1() {
} }


public void testNoInlineOfNonGlobalFunction2() { public void testNoInlineOfNonGlobalFunction2() {
test("var g;function _f(){var g=function(){return 0}}" + test(
"function _h(){return g()}", lines(
"var g;function _f(){}" + "var g;",
"function _h(){return g()}"); "function _f() { var g = function() { return 0; }; }",
"function _h() { return g(); }"),
lines(
"var g;",
"function _f(){}",
"function _h(){ return g(); }"));
} }


public void testNoInlineOfNonGlobalFunction3() { public void testNoInlineOfNonGlobalFunction3() {
Expand Down Expand Up @@ -1664,27 +1669,56 @@ public void testComplexFunctionWithFunctionDefinition2() {
assumeMinimumCapture = false; assumeMinimumCapture = false;


// Don't inline if local names might be captured. // Don't inline if local names might be captured.
testSame("function f(a){call(function(){return})}f()"); testSame(
lines(
"function f(a) {",
" call(function(){return});",
"}",
"f();"));


assumeMinimumCapture = true; assumeMinimumCapture = true;


test("(function(){" + test(
"var f = function(a){call(function(){return a})};f()})()", lines(
"{{var a$jscomp$inline_0=void 0;call(function(){return a$jscomp$inline_0})}}"); "(function() {",
" var f = function(a) { call(function(){return a}); };",
" f();",
"})();"),
lines(
"{",
" {",
" var a$jscomp$inline_0 = void 0;",
" call(function() { return a$jscomp$inline_0; });",
" }",
"}"));
} }


public void testComplexFunctionWithFunctionDefinition2a() { public void testComplexFunctionWithFunctionDefinition2a() {
assumeMinimumCapture = false; assumeMinimumCapture = false;


// Don't inline if local names might be captured. // Don't inline if local names might be captured.
testSame("(function(){" + testSame(
"var f = function(a){call(function(){return a})};f()})()"); lines(
"(function() {",
" var f = function(a) { call(function(){return a}); };",
" f();",
"})()"));


assumeMinimumCapture = true; assumeMinimumCapture = true;


test("(function(){" + test(
"var f = function(a){call(function(){return a})};f()})()", lines(
"{{var a$jscomp$inline_0=void 0;call(function(){return a$jscomp$inline_0})}}"); "(function() {",
" var f = function(a) { call(function(){return a}); };",
" f();",
"})()"),
lines(
"{",
" {",
" var a$jscomp$inline_0 = void 0;",
" call(function() { return a$jscomp$inline_0; });",
" }",
"}"));
} }


public void testComplexFunctionWithFunctionDefinition3() { public void testComplexFunctionWithFunctionDefinition3() {
Expand Down Expand Up @@ -1916,9 +1950,19 @@ public void testFunctionExpressionCallInlining12() {


public void testFunctionExpressionOmega() { public void testFunctionExpressionOmega() {
// ... with unused recursive name. // ... with unused recursive name.
test("(function (f){f(f)})(function(f){f(f)})", test(
"{var f$jscomp$inline_0=function(f$jscomp$1){f$jscomp$1(f$jscomp$1)};" + "(function (f){f(f)})(function(f){f(f)})",
"{{f$jscomp$inline_0(f$jscomp$inline_0)}}}"); lines(
"{",
" var f$jscomp$inline_0 = function(f$jscomp$1) {",
" f$jscomp$1(f$jscomp$1);",
" };",
" {",
" {",
" f$jscomp$inline_0(f$jscomp$inline_0);",
" }",
" }",
"}"));
} }


public void testLocalFunctionInlining1() { public void testLocalFunctionInlining1() {
Expand Down

0 comments on commit fe990fe

Please sign in to comment.