Reviewers: cromwellian_google.com,

Description:
When compiling for IE6, GWT breaks up large blocks of statements into
smaller ones.  The current test for whether it is compiling for IE6 or
not is buggy, however.  It only checks the first property oracle.  Thus,
it can guess wrong if it ends up compiling a single permutation that
targets multiple browsers.


Please review this at http://gwt-code-reviews.appspot.com/129803

Affected files:
  dev/core/src/com/google/gwt/dev/jjs/JavaToJavaScriptCompiler.java


Index: dev/core/src/com/google/gwt/dev/jjs/JavaToJavaScriptCompiler.java
===================================================================
--- dev/core/src/com/google/gwt/dev/jjs/JavaToJavaScriptCompiler.java (revision 7346) +++ dev/core/src/com/google/gwt/dev/jjs/JavaToJavaScriptCompiler.java (working copy)
@@ -333,17 +333,21 @@
       // http://code.google.com/p/google-web-toolkit/issues/detail?id=1440
       // note, JsIEBlockTextTransformer now handles restructuring top level
       // blocks, this class now handles non-top level blocks only.
-      SelectionProperty userAgentProperty = null;
+      boolean splitBlocks = false;
       for (PropertyOracle oracle : propertyOracles) {
         try {
- userAgentProperty = oracle.getSelectionProperty(logger, "user.agent"); + SelectionProperty userAgentProperty = oracle.getSelectionProperty(
+              logger, "user.agent");
+          if ("ie6".equals(userAgentProperty.getCurrentValue())) {
+            splitBlocks = true;
+            break;
+          }
         } catch (BadPropertyValueException e) {
+          // user agent unknown; play it safe
+          splitBlocks = true;
           break;
         }
       }
-      // if user agent is known or ie6, split overly large blocks
-      boolean splitBlocks = userAgentProperty == null
-          || ("ie6".equals(userAgentProperty.getCurrentValue()));

       if (splitBlocks) {
         JsIEBlockSizeVisitor.exec(jsProgram);


-- 
http://groups.google.com/group/Google-Web-Toolkit-Contributors

Reply via email to