This is an automated email from the ASF dual-hosted git repository. aharui pushed a commit to branch develop in repository https://gitbox.apache.org/repos/asf/royale-compiler.git
The following commit(s) were added to refs/heads/develop by this push: new e4fa6e8 fix calculation of deps for the 'rest of deps' and make sure there are no duplicates e4fa6e8 is described below commit e4fa6e8da2bea7aeff4da5f296b4c3b3f2cec4d4 Author: Alex Harui <aha...@apache.org> AuthorDate: Fri Dec 7 10:53:16 2018 -0800 fix calculation of deps for the 'rest of deps' and make sure there are no duplicates --- .../compiler/internal/graph/GoogDepsWriter.java | 50 +++++++++++++--------- 1 file changed, 30 insertions(+), 20 deletions(-) diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/graph/GoogDepsWriter.java b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/graph/GoogDepsWriter.java index 44bdf9d..0018cc3 100644 --- a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/graph/GoogDepsWriter.java +++ b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/graph/GoogDepsWriter.java @@ -146,6 +146,7 @@ public class GoogDepsWriter { dps = sort(); } ArrayList<String> usedDeps = new ArrayList<String>(); + ArrayList<String> addedDeps = new ArrayList<String>(); StringBuilder sb = new StringBuilder(); int n = dps.size(); for (int i = n - 1; i >= 0; i--) @@ -153,26 +154,11 @@ public class GoogDepsWriter { GoogDep gd = dps.get(i); if (!isGoogClass(gd.className)) { + addedDeps.add(gd.filePath); if (removeCirculars) { ArrayList <String> deps = new ArrayList<String>(); - if (gd.fileInfo.impls != null) - { - deps.addAll(gd.fileInfo.impls); - for (String dep : gd.fileInfo.impls) - if (!usedDeps.contains(dep)) - usedDeps.add(dep); - } - if (gd.fileInfo.staticDeps != null) - { - for (String dep : gd.fileInfo.staticDeps) - { - if (!deps.contains(dep)) - deps.add(dep); - if (!usedDeps.contains(dep)) - usedDeps.add(dep); - } - } + computeDeps(deps, gd, usedDeps); sb.append("goog.addDependency('").append(relativePath(gd.filePath)).append("', ['") .append(gd.className).append("'], [") .append(getDependencies(deps)) @@ -201,8 +187,8 @@ public class GoogDepsWriter { // get the list of all units not referenced by other units for (GoogDep gd : depMap.values()) { -// if (usedDeps.contains(gd.className)) -// continue; + if (usedDeps.contains(gd.className)) + continue; if (gd.className.equals(mainName)) { @@ -243,9 +229,13 @@ public class GoogDepsWriter { problems.add(new FileNotFoundProblem(dep)); continue; } + if (addedDeps.contains(gd.filePath)) + continue; + ArrayList<String> deps = new ArrayList<String>(); + computeDeps(deps, gd, usedDeps); sb.append("goog.addDependency('").append(relativePath(gd.filePath)).append("', ['") .append(gd.className).append("'], [") - .append((gd.fileInfo.impls != null) ? getDependencies(gd.fileInfo.impls) : "") + .append(getDependencies(deps)) .append("]);\n"); } addRestOfDeps(mainDep, restOfDeps); @@ -253,6 +243,26 @@ public class GoogDepsWriter { return sb.toString(); } + private void computeDeps(ArrayList<String> deps, GoogDep gd, ArrayList<String> usedDeps) { + if (gd.fileInfo.impls != null) + { + deps.addAll(gd.fileInfo.impls); + for (String dep : gd.fileInfo.impls) + if (!usedDeps.contains(dep)) + usedDeps.add(dep); + } + if (gd.fileInfo.staticDeps != null) + { + for (String dep : gd.fileInfo.staticDeps) + { + if (!deps.contains(dep)) + deps.add(dep); + if (!usedDeps.contains(dep)) + usedDeps.add(dep); + } + } + } + private boolean isGoogClass(String className) { return className.startsWith("goog.");