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.");

Reply via email to