Missing declaration/initialization of JsOverlay fields.

Change-Id: I14913cdae86ab9e0937a9edf806339dca2e27ef8
diff --git a/dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaScriptAST.java b/dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaScriptAST.java
index 8d29d1a..9612aeb 100644
--- a/dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaScriptAST.java
+++ b/dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaScriptAST.java
@@ -622,6 +622,8 @@
       if (type.isJsNative()) {
         // Emit JsOverlay static methods for native JsTypes.
         emitStaticMethods(type);
+        // Emit JsOverlay (static) fields for native JsTypes.
+        emitFields(type);
         return null;
       }
 
@@ -1726,6 +1728,10 @@
     private void emitFields(JDeclaredType type) {
       JsVars vars = new JsVars(type.getSourceInfo());
       for (JField field : type.getFields()) {
+        if (field.isJsNative()) {
+          // Nothing to output for native fields.
+          continue;
+        }
         JsExpression initializer = null;
         // if we need an initial value, create an assignment
         if (initializeAtTopScope(field)) {
diff --git a/user/test/com/google/gwt/core/interop/NativeJsTypeTest.java b/user/test/com/google/gwt/core/interop/NativeJsTypeTest.java
index 2529d6e..a40452f 100644
--- a/user/test/com/google/gwt/core/interop/NativeJsTypeTest.java
+++ b/user/test/com/google/gwt/core/interop/NativeJsTypeTest.java
@@ -420,4 +420,20 @@
     assertTrue(subClass.remove("Hi"));
     assertFalse(subClass.remove("Hi"));
   }
+
+  @JsType(isNative = true, namespace = JsPackage.GLOBAL, name = "Object")
+  static class NativeClassWithStaticOverlayFields {
+    @JsOverlay
+    static String uninitializedString;
+    @JsOverlay
+    static int uninitializedInt;
+    @JsOverlay
+    static int initializedInt = 5;
+  }
+
+  public void testUninitializedStaticOverlayField() {
+    assertEquals(0, NativeClassWithStaticOverlayFields.uninitializedInt);
+    assertEquals(5, NativeClassWithStaticOverlayFields.initializedInt);
+    assertNull(NativeClassWithStaticOverlayFields.uninitializedString);
+  }
 }