add provides for internal classes so the GoogDepsWriter will search for all dependencies in a file
Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo Commit: http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/3f9ed83d Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/3f9ed83d Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/3f9ed83d Branch: refs/heads/master Commit: 3f9ed83de08907a52392044be78ad324287c6662 Parents: e11cf7e Author: Alex Harui <[email protected]> Authored: Sun Apr 23 22:43:30 2017 -0700 Committer: Alex Harui <[email protected]> Committed: Sun Apr 23 22:43:30 2017 -0700 ---------------------------------------------------------------------- .../codegen/js/jx/PackageHeaderEmitter.java | 18 ++++++++++++++++++ .../compiler/internal/graph/GoogDepsWriter.java | 15 ++++++++++++++- .../codegen/js/flexjs/TestFlexJSPackage.java | 8 ++++++++ .../flexjs/projects/internal/MainClass_result.js | 1 + 4 files changed, 41 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/3f9ed83d/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/PackageHeaderEmitter.java ---------------------------------------------------------------------- diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/PackageHeaderEmitter.java b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/PackageHeaderEmitter.java index 73d3b80..5c9c91c 100644 --- a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/PackageHeaderEmitter.java +++ b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/PackageHeaderEmitter.java @@ -23,6 +23,7 @@ import java.io.File; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; +import java.util.HashMap; import java.util.List; import org.apache.flex.compiler.asdoc.flexjs.ASDocComment; @@ -149,7 +150,24 @@ public class PackageHeaderEmitter extends JSSubEmitter implements write(ASEmitterTokens.SINGLE_QUOTE); write(ASEmitterTokens.PAREN_CLOSE); writeNewline(ASEmitterTokens.SEMICOLON); + + HashMap<String, String> internalClasses = getEmitter().getModel().getInternalClasses(); + if (internalClasses.size() > 0) + { + for (String internalClass : internalClasses.keySet()) + { + /* goog.provide('x');\n\n */ + write(JSGoogEmitterTokens.GOOG_PROVIDE); + write(ASEmitterTokens.PAREN_OPEN); + write(ASEmitterTokens.SINGLE_QUOTE); + write(((JSFlexJSEmitter)getEmitter()).formatQualifiedName(internalClass, true)); + write(ASEmitterTokens.SINGLE_QUOTE); + write(ASEmitterTokens.PAREN_CLOSE); + writeNewline(ASEmitterTokens.SEMICOLON); + } + } writeNewline(); + } public void emitContents(IPackageDefinition definition) http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/3f9ed83d/compiler-jx/src/main/java/org/apache/flex/compiler/internal/graph/GoogDepsWriter.java ---------------------------------------------------------------------- diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/graph/GoogDepsWriter.java b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/graph/GoogDepsWriter.java index 5c122d4..49038cd 100644 --- a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/graph/GoogDepsWriter.java +++ b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/graph/GoogDepsWriter.java @@ -379,6 +379,8 @@ public class GoogDepsWriter { { for (String dep : gd.fileInfo.impls) { + if (gd.fileInfo.provides != null && + gd.fileInfo.provides.contains(dep)) continue; addDeps(dep); } } @@ -388,6 +390,8 @@ public class GoogDepsWriter { for (String dep : gd.fileInfo.deps) { gd.deps.add(dep); + if (gd.fileInfo.provides != null && + gd.fileInfo.provides.contains(dep)) continue; addDeps(dep); } } @@ -590,8 +594,16 @@ public class GoogDepsWriter { c = line.indexOf("goog.provide"); if (c > -1) { - if (fi.googProvideLine == -i) + if (fi.googProvideLine == -1) fi.googProvideLine = i; + if (numProvides > 0) + { + if (fi.provides == null) + fi.provides = new ArrayList<String>(); + c2 = line.indexOf(")", c); + String provide = line.substring(c + 14, c2 - 1); + fi.provides.add(provide); + } numProvides++; } else @@ -865,6 +877,7 @@ public class GoogDepsWriter { public ArrayList<String> impls; public ArrayList<String> deps; public ArrayList<String> staticDeps; + public ArrayList<String> provides; public int constructorLine; public int depsLine; public int suppressLine; http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/3f9ed83d/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSPackage.java ---------------------------------------------------------------------- diff --git a/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSPackage.java b/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSPackage.java index 9e94828..01932d0 100644 --- a/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSPackage.java +++ b/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSPackage.java @@ -434,6 +434,7 @@ public class TestFlexJSPackage extends TestGoogPackage " */\n" + "\n" + "goog.provide('foo.bar.baz.A');\n" + + "goog.provide('foo.bar.baz.A.InternalClass');\n" + "\n" + "\n" + "\n" + @@ -538,6 +539,7 @@ public class TestFlexJSPackage extends TestGoogPackage " */\n" + "\n" + "goog.provide('foo.bar.baz.A');\n" + + "goog.provide('foo.bar.baz.A.internalFunction');\n" + "\n" + "\n" + "\n" + @@ -606,6 +608,7 @@ public class TestFlexJSPackage extends TestGoogPackage " */\n" + "\n" + "goog.provide('foo.bar.baz.A');\n" + + "goog.provide('foo.bar.baz.A.internalVar');\n" + "\n" + "\n" + "\n" + @@ -686,6 +689,7 @@ public class TestFlexJSPackage extends TestGoogPackage " */\n" + "\n" + "goog.provide('foo.bar.baz.A');\n" + + "goog.provide('foo.bar.baz.A.InternalClass');\n" + "\n" + "\n" + "\n" + @@ -838,6 +842,7 @@ public class TestFlexJSPackage extends TestGoogPackage " */\n" + "\n" + "goog.provide('foo.bar.baz.A');\n" + + "goog.provide('foo.bar.baz.A.InternalClass');\n" + "\n" + "\n" + "\n" + @@ -995,6 +1000,8 @@ public class TestFlexJSPackage extends TestGoogPackage " */\n" + "\n" + "goog.provide('foo.bar.baz.A');\n" + + "goog.provide('foo.bar.baz.A.InternalClass');\n" + + "goog.provide('foo.bar.baz.A.ITestInterface');\n" + "\n" + "\n" + "\n" + @@ -1153,6 +1160,7 @@ public class TestFlexJSPackage extends TestGoogPackage " */\n" + "\n" + "goog.provide('foo.bar.A');\n" + + "goog.provide('foo.bar.A.Internal');\n" + "\n" + "\n" + "\n" + http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/3f9ed83d/compiler-jx/src/test/resources/flexjs/projects/internal/MainClass_result.js ---------------------------------------------------------------------- diff --git a/compiler-jx/src/test/resources/flexjs/projects/internal/MainClass_result.js b/compiler-jx/src/test/resources/flexjs/projects/internal/MainClass_result.js index a96b203..c1f9dd7 100644 --- a/compiler-jx/src/test/resources/flexjs/projects/internal/MainClass_result.js +++ b/compiler-jx/src/test/resources/flexjs/projects/internal/MainClass_result.js @@ -20,6 +20,7 @@ */ goog.provide('MainClass'); +goog.provide('MainClass.InternalClass'); goog.require('OtherClass');
