You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by ah...@apache.org on 2015/04/09 01:05:13 UTC

[07/18] git commit: [flex-falcon] [refs/heads/develop] - use more recent GCC dependency options. We no longer need to compute deps.js, but we get more goog.require warnings which we now suppress when we remove circular goog.requires

use more recent GCC dependency options.  We no longer need to compute deps.js, but we get more goog.require warnings which we now suppress when we remove circular goog.requires


Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/8e68d5de
Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/8e68d5de
Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/8e68d5de

Branch: refs/heads/develop
Commit: 8e68d5dec4e8b0ca4bec371d1275e93440c6ac32
Parents: e7deb06
Author: Alex Harui <ah...@apache.org>
Authored: Tue Mar 24 22:53:42 2015 -0700
Committer: Alex Harui <ah...@apache.org>
Committed: Tue Mar 24 22:53:42 2015 -0700

----------------------------------------------------------------------
 .../mxml/flexjs/MXMLFlexJSPublisher.java        |  33 ++++-
 .../compiler/internal/graph/GoogDepsWriter.java | 141 +++++++++++++++++--
 .../utils/JSClosureCompilerWrapper.java         |  14 +-
 .../utils/VF2JSClosureCompilerWrapper.java      |   2 +-
 4 files changed, 168 insertions(+), 22 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/8e68d5de/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSPublisher.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSPublisher.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSPublisher.java
index 0432bd0..6e1c7eb 100644
--- a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSPublisher.java
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSPublisher.java
@@ -269,6 +269,12 @@ public class MXMLFlexJSPublisher extends JSGoogPublisher implements
         GoogDepsWriter gdw = new GoogDepsWriter(intermediateDir, projectName, (JSGoogConfiguration) configuration);
         try
         {
+        	ArrayList<String> fileList = gdw.getListOfFiles();
+        	for (String file : fileList)
+        	{
+                compilerWrapper.addJSSourceFile(file);	
+        	}
+        	/*
             StringBuilder depsFileData = new StringBuilder();
             ok = gdw.generateDeps(problems, depsFileData);
             if (!subsetGoog)
@@ -355,7 +361,7 @@ public class MXMLFlexJSPublisher extends JSGoogPublisher implements
                     FileUtils.copyFileToDirectory(file, new File(dir));
                     compilerWrapper.addJSSourceFile(file.getCanonicalPath());
                 }
-            }
+            }*/
         }
         catch (InterruptedException e)
         {
@@ -385,6 +391,7 @@ public class MXMLFlexJSPublisher extends JSGoogPublisher implements
         writeCSS(projectName, intermediateDirPath);
         writeCSS(projectName, releaseDirPath);
 
+        /*
         if (!subsetGoog)
         {
             // (erikdebruin) add 'goog' files
@@ -396,22 +403,33 @@ public class MXMLFlexJSPublisher extends JSGoogPublisher implements
                 compilerWrapper.addJSSourceFile(file.getCanonicalPath());
             }
         }
+        */
+        Collection<File> files = org.apache.commons.io.FileUtils.listFiles(new File(
+        		closureGoogSrcLibDirPath), new RegexFileFilter("^.*(\\.js)"),
+                DirectoryFileFilter.DIRECTORY);
+        for (File file : files)
+        {
+            compilerWrapper.addJSSourceFile(file.getCanonicalPath());
+        }
         
+        /*
         // (erikdebruin) add project files
         for (String filePath : gdw.filePathsInOrder)
         {
             compilerWrapper.addJSSourceFile(
                     new File(filePath).getCanonicalPath());   
         }
+        */
         
         compilerWrapper.setOptions(
-                projectReleaseJSFilePath, useStrictPublishing);
+                projectReleaseJSFilePath, useStrictPublishing, projectName);
         
+        /*
         // (erikdebruin) Include the 'goog' deps to allow the compiler to resolve
         //               dependencies.
         compilerWrapper.addJSSourceFile(
                 closureGoogSrcLibDirPath + File.separator + "deps.js");
-        
+        */
         List<String> externs = ((JSGoogConfiguration)configuration).getExternalJSLib();
         for (String extern : externs)
         {
@@ -423,6 +441,7 @@ public class MXMLFlexJSPublisher extends JSGoogPublisher implements
         
         appendSourceMapLocation(projectReleaseJSFilePath, projectName);
 
+        /*
         if (!isMarmotinniRun)
         {
             String allDeps = "";
@@ -435,8 +454,9 @@ public class MXMLFlexJSPublisher extends JSGoogPublisher implements
             
             org.apache.commons.io.FileUtils.deleteQuietly(new File(depsTgtFilePath));
         }
-
-        if (ok)
+		*/
+        
+        //if (ok)
             System.out.println("The project '"
                 + projectName
                 + "' has been successfully compiled and optimized.");
@@ -444,6 +464,7 @@ public class MXMLFlexJSPublisher extends JSGoogPublisher implements
         return true;
     }
 
+    /*
     private void addDeps(ArrayList<DependencyRecord> subsetdeps, HashMap<String, String> gotgoog, 
                             HashMap<String, DependencyRecord> defmap, String deps)
     {
@@ -464,7 +485,7 @@ public class MXMLFlexJSPublisher extends JSGoogPublisher implements
                 addDeps(subsetdeps, gotgoog, defmap, deprec.deps);                        
             }
         }
-    }
+    }*/
     
     private void appendExportSymbol(String path, String projectName)
             throws IOException

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/8e68d5de/compiler.jx/src/org/apache/flex/compiler/internal/graph/GoogDepsWriter.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/graph/GoogDepsWriter.java b/compiler.jx/src/org/apache/flex/compiler/internal/graph/GoogDepsWriter.java
index 53a216e..cd036be 100644
--- a/compiler.jx/src/org/apache/flex/compiler/internal/graph/GoogDepsWriter.java
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/graph/GoogDepsWriter.java
@@ -176,19 +176,89 @@ public class GoogDepsWriter {
                 List<String> fileLines = Files.readLines(new File(gd.filePath), Charset.defaultCharset());
                 ArrayList<String> finalLines = new ArrayList<String>();
                 
-                String inherits = getBaseClass(fileLines, className);
-                
+                FileInfo fi = getBaseClass(fileLines, className);
+                int suppressCount = 0;
+                int i = 0;
                 for (String line : fileLines)
                 {
-                    int c = line.indexOf(JSGoogEmitterTokens.GOOG_REQUIRE.getToken());
-                    if (c > -1)
-                    {
-                        int c2 = line.indexOf(")");
-                        String s = line.substring(c + 14, c2 - 1);
-                        if (circulars.contains(s) && !s.equals(inherits))
-                            continue;
-                    }
+                	if (i < fi.constructorLine)
+                	{
+	                    int c = line.indexOf(JSGoogEmitterTokens.GOOG_REQUIRE.getToken());
+	                    if (c > -1)
+	                    {
+	                        int c2 = line.indexOf(")");
+	                        String s = line.substring(c + 14, c2 - 1);
+	                        if (circulars.contains(s) && !s.equals(fi.inherits))
+	                        {
+	                        	suppressCount++;
+	                            continue;
+	                        }
+	                    }
+                	}
                     finalLines.add(line);
+                    i++;
+                }
+                if (suppressCount > 0)
+                {
+                	if (fi.suppressLine > 0)
+                	{
+                		if (fi.suppressLine < fi.constructorLine) 
+                		{
+	                		String line = finalLines.get(fi.suppressLine);
+	                		int c = line.indexOf("@suppress {");
+	                		if (c > -1)
+	                		{
+	                			if (!line.contains("missingRequire"))
+	                			{
+	                				line = line.substring(0, c) + "@suppress {missingRequire|" + line.substring(c + 11);
+	                				finalLines.remove(fi.suppressLine);
+	                				finalLines.add(fi.suppressLine, line);
+	                			}
+	                		}
+	                		else
+	                			System.out.println("Confused by @suppress in " + className);
+	                	}
+	                	else                		
+	                	{
+	                		// the @suppress was for the constructor or some other thing so add a top-level
+	                		// @suppress
+	                		if (fi.fileoverviewLine > -1)
+	                		{
+	                			// there is already a fileOverview but no @suppress
+	                			finalLines.add(fi.fileoverviewLine + 1, " *  @suppress {missingRequire}");
+	                		}
+	                		else if (fi.googProvideLine > -1)
+	                		{
+	                			finalLines.add(fi.googProvideLine, " */");
+	                			finalLines.add(fi.googProvideLine, " *  @suppress {missingRequire}");
+	                			finalLines.add(fi.googProvideLine, " *  @fileoverview");
+	                			finalLines.add(fi.googProvideLine, "/**");
+	                		}
+	                		else
+	                		{
+	                			System.out.println("Confused by @suppress in " + className);
+	                		}
+	                	}
+                	}
+                	else
+                	{
+                		if (fi.fileoverviewLine > -1)
+                		{
+                			// there is already a fileoverview but no @suppress
+                			finalLines.add(fi.fileoverviewLine + 1, " *  @suppress {missingRequire}");
+                		}
+                		else if (fi.googProvideLine > -1)
+                		{
+                			finalLines.add(fi.googProvideLine, " */");
+                			finalLines.add(fi.googProvideLine, " *  @suppress {missingRequire}");
+                			finalLines.add(fi.googProvideLine, " *  @fileoverview");
+                			finalLines.add(fi.googProvideLine, "/**");
+                		}
+                		else
+                		{
+                			System.out.println("Confused by @suppress in " + className);
+                		}                		
+                	}
                 }
                 File file = new File(gd.filePath);  
                 PrintWriter out = new PrintWriter(new FileWriter(file));  
@@ -207,9 +277,15 @@ public class GoogDepsWriter {
 		}
 	}
 	
-	String getBaseClass(List<String> lines, String className)
+	FileInfo getBaseClass(List<String> lines, String className)
 	{
+		FileInfo fi = new FileInfo();
+		
 	    int n = lines.size();
+	    fi.constructorLine = n;
+	    fi.suppressLine = -1;
+	    fi.fileoverviewLine = -1;
+	    fi.googProvideLine = -1;
 	    for (int i = 0; i < n; i++)
 	    {
 	        String line = lines.get(i);
@@ -232,10 +308,41 @@ public class GoogDepsWriter {
                 }
 	            c = inheritLine.indexOf(",");
                 c2 = inheritLine.indexOf(")");
-                return inheritLine.substring(c + 1, c2).trim();            
+                fi.inherits = inheritLine.substring(c + 1, c2).trim();
+                return fi;
+	        }
+	        else
+	        {
+		        c = line.indexOf("@constructor");
+		        if (c > -1)
+		        	fi.constructorLine = i;
+		        else
+		        {
+			        c = line.indexOf("@interface");
+			        if (c > -1)
+			        	fi.constructorLine = i;
+			        else
+			        {
+			        	c = line.indexOf("@suppress");
+			        	if (c > -1)
+			        		fi.suppressLine = i;
+			        	else
+			        	{
+				        	c = line.indexOf("@fileoverview");
+				        	if (c > -1)
+				        		fi.fileoverviewLine = i;
+				        	else
+				        	{
+					        	c = line.indexOf("goog.provide");
+					        	if (c > -1)
+					        		fi.googProvideLine = i;				        		
+				        	}
+			        	}
+			        }
+		        }
 	        }
 	    }
-	    return null;
+	    return fi;
 	}
 	
 	String getFilePath(String className)
@@ -403,4 +510,12 @@ public class GoogDepsWriter {
 		public ArrayList<String> deps;
 		
 	}
+	private class FileInfo
+	{
+		public String inherits;
+		public int constructorLine;
+		public int suppressLine;
+		public int fileoverviewLine;
+		public int googProvideLine;
+	}
 }

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/8e68d5de/compiler.jx/src/org/apache/flex/compiler/utils/JSClosureCompilerWrapper.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/utils/JSClosureCompilerWrapper.java b/compiler.jx/src/org/apache/flex/compiler/utils/JSClosureCompilerWrapper.java
index 30d976c..b16522a 100644
--- a/compiler.jx/src/org/apache/flex/compiler/utils/JSClosureCompilerWrapper.java
+++ b/compiler.jx/src/org/apache/flex/compiler/utils/JSClosureCompilerWrapper.java
@@ -31,6 +31,7 @@ import com.google.javascript.jscomp.CommandLineRunner;
 import com.google.javascript.jscomp.CompilationLevel;
 import com.google.javascript.jscomp.Compiler;
 import com.google.javascript.jscomp.CompilerOptions;
+import com.google.javascript.jscomp.DependencyOptions;
 import com.google.javascript.jscomp.DiagnosticGroups;
 import com.google.javascript.jscomp.FlexJSDiagnosticGroups;
 import com.google.javascript.jscomp.SourceFile;
@@ -141,7 +142,7 @@ public class JSClosureCompilerWrapper
         options_.setExtraAnnotationNames(Arrays.asList(asdocTags));
     }
     
-    public void setOptions(String sourceMapPath, boolean useStrictPublishing)
+    public void setOptions(String sourceMapPath, boolean useStrictPublishing, String projectName)
     {
         if (useStrictPublishing)
         {
@@ -186,6 +187,15 @@ public class JSClosureCompilerWrapper
             options_.setOptimizeCalls(true);
             options_.setOptimizeArgumentsArray(true);
             
+            DependencyOptions dopts = new DependencyOptions();
+            ArrayList<String> entryPoints = new ArrayList<String>();
+            entryPoints.add(projectName);
+            dopts.setDependencyPruning(true)
+                 .setDependencySorting(true)
+                 .setMoocherDropping(true)
+                 .setEntryPoints(entryPoints);
+            options_.setDependencyOptions(dopts);
+            
             // warnings already activated in previous incarnation
             options_.setWarningLevel(DiagnosticGroups.ACCESS_CONTROLS, CheckLevel.WARNING);
             options_.setWarningLevel(DiagnosticGroups.CONST, CheckLevel.WARNING);
@@ -197,7 +207,7 @@ public class JSClosureCompilerWrapper
             // the 'full' set of warnings
             options_.setWarningLevel(DiagnosticGroups.AMBIGUOUS_FUNCTION_DECL, CheckLevel.WARNING);
             options_.setWarningLevel(DiagnosticGroups.CHECK_EVENTFUL_OBJECT_DISPOSAL, CheckLevel.WARNING);
-            options_.setWarningLevel(DiagnosticGroups.CHECK_PROVIDES, CheckLevel.WARNING);
+            options_.setWarningLevel(DiagnosticGroups.MISSING_PROVIDE, CheckLevel.WARNING);
             options_.setWarningLevel(DiagnosticGroups.CHECK_REGEXP, CheckLevel.WARNING);
             options_.setWarningLevel(DiagnosticGroups.CHECK_STRUCT_DICT_INHERITANCE, CheckLevel.WARNING);
             options_.setWarningLevel(DiagnosticGroups.CHECK_TYPES, CheckLevel.WARNING);

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/8e68d5de/compiler.jx/src/org/apache/flex/compiler/utils/VF2JSClosureCompilerWrapper.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/utils/VF2JSClosureCompilerWrapper.java b/compiler.jx/src/org/apache/flex/compiler/utils/VF2JSClosureCompilerWrapper.java
index cdbdba6..9b188b9 100644
--- a/compiler.jx/src/org/apache/flex/compiler/utils/VF2JSClosureCompilerWrapper.java
+++ b/compiler.jx/src/org/apache/flex/compiler/utils/VF2JSClosureCompilerWrapper.java
@@ -183,7 +183,7 @@ public class VF2JSClosureCompilerWrapper
             // the 'full' set of warnings
             options_.setWarningLevel(DiagnosticGroups.AMBIGUOUS_FUNCTION_DECL, CheckLevel.WARNING);
             options_.setWarningLevel(DiagnosticGroups.CHECK_EVENTFUL_OBJECT_DISPOSAL, CheckLevel.WARNING);
-            options_.setWarningLevel(DiagnosticGroups.CHECK_PROVIDES, CheckLevel.WARNING);
+            options_.setWarningLevel(DiagnosticGroups.MISSING_PROVIDE, CheckLevel.WARNING);
             options_.setWarningLevel(DiagnosticGroups.CHECK_REGEXP, CheckLevel.WARNING);
             options_.setWarningLevel(DiagnosticGroups.CHECK_STRUCT_DICT_INHERITANCE, CheckLevel.WARNING);
             options_.setWarningLevel(DiagnosticGroups.CHECK_TYPES, CheckLevel.WARNING);