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