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;
}
/**