add -js-compiler-option=--skip_type_inference to get around GCC flow analysis 
bugs


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

Branch: refs/heads/feature/amf
Commit: 135b74928af0e04f9d4f19c7843240f6329bf78a
Parents: 8ccd2b9
Author: Alex Harui <aha...@apache.org>
Authored: Wed Aug 23 21:15:42 2017 -0700
Committer: Alex Harui <aha...@apache.org>
Committed: Wed Aug 23 21:15:42 2017 -0700

----------------------------------------------------------------------
 .../utils/JSClosureCompilerWrapper.java         | 30 ++++++++++++++++----
 1 file changed, 24 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/135b7492/compiler-jx/src/main/java/org/apache/flex/compiler/utils/JSClosureCompilerWrapper.java
----------------------------------------------------------------------
diff --git 
a/compiler-jx/src/main/java/org/apache/flex/compiler/utils/JSClosureCompilerWrapper.java
 
b/compiler-jx/src/main/java/org/apache/flex/compiler/utils/JSClosureCompilerWrapper.java
index eea622c..d50dc31 100644
--- 
a/compiler-jx/src/main/java/org/apache/flex/compiler/utils/JSClosureCompilerWrapper.java
+++ 
b/compiler-jx/src/main/java/org/apache/flex/compiler/utils/JSClosureCompilerWrapper.java
@@ -92,6 +92,7 @@ public class JSClosureCompilerWrapper
     private String propertyMapOutputPath;
     private String variableMapInputPath;
     private String propertyMapInputPath;
+    private boolean skipTypeInference;
     private Set<String> provideds;
     
     public String targetFilePath;
@@ -286,12 +287,14 @@ public class JSClosureCompilerWrapper
     
     private void filterOptions(List<String> args)
     {
+               final String SKIP_TYPE_INFERENCE = "--skip_type_inference";
                final String PROPERTY_MAP = "--property_map_output_file ";
                final String VARIABLE_MAP = "--variable_map_output_file ";
                final String PROPERTY_INPUT_MAP = "--property_map_input_file ";
                final String VARIABLE_INPUT_MAP = "--variable_map_input_file ";
                String propEntry = null;
                String varEntry = null;
+               String skipEntry = null;
                String propInputEntry = null;
                String varInputEntry = null;
 
@@ -320,6 +323,12 @@ public class JSClosureCompilerWrapper
                        varInputEntry = s;
                        variableMapInputPath = 
s.substring(VARIABLE_INPUT_MAP.length());
                }
+               
+               if (s.equals(SKIP_TYPE_INFERENCE))
+               {
+                       skipEntry = s;
+                       skipTypeInference = true;
+               }
        }
        if (varEntry != null)
                args.remove(varEntry);
@@ -329,6 +338,8 @@ public class JSClosureCompilerWrapper
                args.remove(varInputEntry);
        if (propInputEntry != null)
                args.remove(propInputEntry);
+       if (skipEntry != null)
+               args.remove(skipEntry);
                
     }
     
@@ -455,29 +466,29 @@ public class JSClosureCompilerWrapper
             
options_.setWarningLevel(DiagnosticGroups.CHECK_EVENTFUL_OBJECT_DISPOSAL, 
CheckLevel.WARNING);
             options_.setWarningLevel(DiagnosticGroups.MISSING_PROVIDE, 
CheckLevel.WARNING);
             options_.setWarningLevel(DiagnosticGroups.CHECK_REGEXP, 
CheckLevel.WARNING);
-            options_.setWarningLevel(DiagnosticGroups.CHECK_TYPES, 
CheckLevel.WARNING);
+            options_.setWarningLevel(DiagnosticGroups.CHECK_TYPES, 
skipTypeInference ? CheckLevel.OFF : CheckLevel.WARNING);
             options_.setWarningLevel(DiagnosticGroups.CHECK_USELESS_CODE, 
CheckLevel.WARNING);
             options_.setWarningLevel(DiagnosticGroups.CHECK_VARIABLES, 
CheckLevel.WARNING);
             
options_.setWarningLevel(DiagnosticGroups.DEBUGGER_STATEMENT_PRESENT, 
CheckLevel.WARNING);
             options_.setWarningLevel(DiagnosticGroups.DUPLICATE_MESSAGE, 
CheckLevel.WARNING);
-            options_.setWarningLevel(DiagnosticGroups.DUPLICATE_VARS, 
CheckLevel.WARNING);
+            options_.setWarningLevel(DiagnosticGroups.DUPLICATE_VARS, 
skipTypeInference ? CheckLevel.OFF : CheckLevel.WARNING);
             options_.setWarningLevel(DiagnosticGroups.ES3, CheckLevel.WARNING);
             options_.setWarningLevel(DiagnosticGroups.ES5_STRICT, 
CheckLevel.WARNING);
             options_.setWarningLevel(DiagnosticGroups.EXTERNS_VALIDATION, 
CheckLevel.WARNING);
             options_.setWarningLevel(DiagnosticGroups.GLOBAL_THIS, 
CheckLevel.WARNING);
             options_.setWarningLevel(DiagnosticGroups.FILEOVERVIEW_JSDOC, 
CheckLevel.WARNING);
             
options_.setWarningLevel(DiagnosticGroups.INTERNET_EXPLORER_CHECKS, 
CheckLevel.WARNING);
-            options_.setWarningLevel(DiagnosticGroups.INVALID_CASTS, 
CheckLevel.WARNING);
+            options_.setWarningLevel(DiagnosticGroups.INVALID_CASTS, 
skipTypeInference ? CheckLevel.OFF : CheckLevel.WARNING);
             options_.setWarningLevel(DiagnosticGroups.LINT_CHECKS, 
CheckLevel.OFF); // OFF
             
options_.setWarningLevel(DiagnosticGroups.MISPLACED_TYPE_ANNOTATION, 
CheckLevel.WARNING);
-            options_.setWarningLevel(DiagnosticGroups.MISSING_PROPERTIES, 
CheckLevel.WARNING);
+            options_.setWarningLevel(DiagnosticGroups.MISSING_PROPERTIES, 
skipTypeInference ? CheckLevel.OFF : CheckLevel.WARNING);
             options_.setWarningLevel(DiagnosticGroups.MISSING_PROVIDE, 
CheckLevel.WARNING);
             options_.setWarningLevel(DiagnosticGroups.MISSING_REQUIRE, 
CheckLevel.WARNING);
             options_.setWarningLevel(DiagnosticGroups.MISSING_RETURN, 
CheckLevel.WARNING);
-            options_.setWarningLevel(DiagnosticGroups.NEW_CHECK_TYPES, 
CheckLevel.WARNING);
+            options_.setWarningLevel(DiagnosticGroups.NEW_CHECK_TYPES, 
skipTypeInference ? CheckLevel.OFF : CheckLevel.WARNING);
             options_.setWarningLevel(DiagnosticGroups.NON_STANDARD_JSDOC, 
CheckLevel.WARNING);
             options_.setWarningLevel(DiagnosticGroups.REPORT_UNKNOWN_TYPES, 
CheckLevel.OFF); // OFF
-            options_.setWarningLevel(DiagnosticGroups.SUSPICIOUS_CODE, 
CheckLevel.WARNING);
+            options_.setWarningLevel(DiagnosticGroups.SUSPICIOUS_CODE, 
skipTypeInference ? CheckLevel.OFF : CheckLevel.WARNING);
             options_.setWarningLevel(DiagnosticGroups.TWEAKS, 
CheckLevel.WARNING);
             options_.setWarningLevel(DiagnosticGroups.TYPE_INVALIDATION, 
CheckLevel.WARNING);
             options_.setWarningLevel(DiagnosticGroups.UNDEFINED_NAMES, 
CheckLevel.WARNING);
@@ -499,6 +510,13 @@ public class JSClosureCompilerWrapper
         
         options_.sourceMapFormat = SourceMap.Format.V3;
         options_.sourceMapOutputPath = sourceMapPath + ".map";
+        if (skipTypeInference)
+        {
+               options_.setCheckTypes(false);
+               options_.setInferTypes(false);
+               options_.setNewTypeInference(false);
+        }
+        
     }
 
     private static class CompilerOptionsParser extends CommandLineRunner

Reply via email to