fixes a bug in TypeOracle that marked vararg methods with the transient modifier, which is illegal for methods

Review at http://gwt-code-reviews.appspot.com/1447817

Review by: jbrosenberg@google.com

git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@10275 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/dev/core/src/com/google/gwt/dev/javac/Shared.java b/dev/core/src/com/google/gwt/dev/javac/Shared.java
index e1a5df6..d91791b 100644
--- a/dev/core/src/com/google/gwt/dev/javac/Shared.java
+++ b/dev/core/src/com/google/gwt/dev/javac/Shared.java
@@ -33,8 +33,6 @@
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.List;
 
 /**
  * A grab bag of utility functions useful for dealing with java files.
@@ -164,48 +162,4 @@
     path = path.substring(0, path.lastIndexOf('.'));
     return path.replace('/', '.');
   }
-
-  static String[] modifierBitsToNames(int bits) {
-    List<String> strings = new ArrayList<String>();
-
-    // The order is based on the order in which we want them to appear.
-    //
-    if (0 != (bits & MOD_PUBLIC)) {
-      strings.add("public");
-    }
-
-    if (0 != (bits & MOD_PRIVATE)) {
-      strings.add("private");
-    }
-
-    if (0 != (bits & MOD_PROTECTED)) {
-      strings.add("protected");
-    }
-
-    if (0 != (bits & MOD_STATIC)) {
-      strings.add("static");
-    }
-
-    if (0 != (bits & MOD_ABSTRACT)) {
-      strings.add("abstract");
-    }
-
-    if (0 != (bits & MOD_FINAL)) {
-      strings.add("final");
-    }
-
-    if (0 != (bits & MOD_NATIVE)) {
-      strings.add("native");
-    }
-
-    if (0 != (bits & MOD_TRANSIENT)) {
-      strings.add("transient");
-    }
-
-    if (0 != (bits & MOD_VOLATILE)) {
-      strings.add("volatile");
-    }
-
-    return strings.toArray(NO_STRINGS);
-  }
 }
diff --git a/dev/core/src/com/google/gwt/dev/javac/typemodel/JConstructor.java b/dev/core/src/com/google/gwt/dev/javac/typemodel/JConstructor.java
index d8ba76f..fe95c71 100644
--- a/dev/core/src/com/google/gwt/dev/javac/typemodel/JConstructor.java
+++ b/dev/core/src/com/google/gwt/dev/javac/typemodel/JConstructor.java
@@ -62,7 +62,7 @@
 
   @Override
   public String getReadableDeclaration() {
-    String[] names = TypeOracle.modifierBitsToNames(getModifierBits());
+    String[] names = TypeOracle.modifierBitsToNamesForMethod(getModifierBits());
     StringBuilder sb = new StringBuilder();
     for (String name : names) {
       sb.append(name);
diff --git a/dev/core/src/com/google/gwt/dev/javac/typemodel/JField.java b/dev/core/src/com/google/gwt/dev/javac/typemodel/JField.java
index 8875156..b2c8d11 100644
--- a/dev/core/src/com/google/gwt/dev/javac/typemodel/JField.java
+++ b/dev/core/src/com/google/gwt/dev/javac/typemodel/JField.java
@@ -135,7 +135,7 @@
 
   @Override
   public String toString() {
-    String[] names = TypeOracle.modifierBitsToNames(modifierBits);
+    String[] names = TypeOracle.modifierBitsToNamesForField(modifierBits);
     StringBuffer sb = new StringBuffer();
     for (int i = 0; i < names.length; i++) {
       if (i > 0) {
diff --git a/dev/core/src/com/google/gwt/dev/javac/typemodel/JMethod.java b/dev/core/src/com/google/gwt/dev/javac/typemodel/JMethod.java
index c87476e..c12e715 100644
--- a/dev/core/src/com/google/gwt/dev/javac/typemodel/JMethod.java
+++ b/dev/core/src/com/google/gwt/dev/javac/typemodel/JMethod.java
@@ -129,7 +129,7 @@
   }
 
   String getReadableDeclaration(int modifierBits) {
-    String[] names = TypeOracle.modifierBitsToNames(modifierBits);
+    String[] names = TypeOracle.modifierBitsToNamesForMethod(modifierBits);
     StringBuilder sb = new StringBuilder();
     for (String name : names) {
       sb.append(name);
diff --git a/dev/core/src/com/google/gwt/dev/javac/typemodel/TypeOracle.java b/dev/core/src/com/google/gwt/dev/javac/typemodel/TypeOracle.java
index b2ee426..334fcd0 100644
--- a/dev/core/src/com/google/gwt/dev/javac/typemodel/TypeOracle.java
+++ b/dev/core/src/com/google/gwt/dev/javac/typemodel/TypeOracle.java
@@ -204,7 +204,48 @@
     });
   }
 
-  static String[] modifierBitsToNames(int bits) {
+  static String[] modifierBitsToNamesForField(int bits) {
+    List<String> strings = modifierBitsToNamesForMethodsAndFields(bits);
+
+    if (0 != (bits & MOD_VOLATILE)) {
+      strings.add("volatile");
+    }
+    
+    if (0 != (bits & MOD_TRANSIENT)) {
+      strings.add("transient");
+    }
+   
+    return strings.toArray(NO_STRINGS);
+  }
+  
+  static String[] modifierBitsToNamesForMethod(int bits) {
+    List<String> strings = modifierBitsToNamesForMethodsAndFields(bits);
+    
+    if (0 != (bits & MOD_ABSTRACT)) {
+      strings.add("abstract");
+    }
+    
+    if (0 != (bits & MOD_NATIVE)) {
+      strings.add("native");
+    } 
+    
+    return strings.toArray(NO_STRINGS);
+  }
+
+  private static JClassType[] cast(com.google.gwt.core.ext.typeinfo.JClassType[] extTypeArgs) {
+    JClassType[] result = new JClassType[extTypeArgs.length];
+    System.arraycopy(extTypeArgs, 0, result, 0, extTypeArgs.length);
+    return result;
+  }
+  
+  /**
+   * Converts modifier bits, which are common to fields and methods, to
+   * readable names.
+   * 
+   * @see TypeOracle#modifierBitsToNamesForField(int) modifierBitsToNamesForField
+   * @see TypeOracle#modifierBitsToNamesForMethod(int) modifierBitsToNamesForMethod
+   */
+  private static List<String> modifierBitsToNamesForMethodsAndFields(int bits) {
     List<String> strings = new ArrayList<String>();
 
     // The order is based on the order in which we want them to appear.
@@ -225,33 +266,11 @@
       strings.add("static");
     }
 
-    if (0 != (bits & MOD_ABSTRACT)) {
-      strings.add("abstract");
-    }
-
     if (0 != (bits & MOD_FINAL)) {
       strings.add("final");
     }
 
-    if (0 != (bits & MOD_NATIVE)) {
-      strings.add("native");
-    }
-
-    if (0 != (bits & MOD_TRANSIENT)) {
-      strings.add("transient");
-    }
-
-    if (0 != (bits & MOD_VOLATILE)) {
-      strings.add("volatile");
-    }
-
-    return strings.toArray(NO_STRINGS);
-  }
-
-  private static JClassType[] cast(com.google.gwt.core.ext.typeinfo.JClassType[] extTypeArgs) {
-    JClassType[] result = new JClassType[extTypeArgs.length];
-    System.arraycopy(extTypeArgs, 0, result, 0, extTypeArgs.length);
-    return result;
+    return strings;
   }
 
   /**