Working on enum support.
git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@1455 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/dev/core/src/com/google/gwt/dev/jjs/ast/JEnumType.java b/dev/core/src/com/google/gwt/dev/jjs/ast/JEnumType.java
index cc9c125..efce503 100644
--- a/dev/core/src/com/google/gwt/dev/jjs/ast/JEnumType.java
+++ b/dev/core/src/com/google/gwt/dev/jjs/ast/JEnumType.java
@@ -29,6 +29,7 @@
public JEnumType(JProgram program, SourceInfo info, String name) {
super(program, info, name, false, false);
+ this.extnds = program.getTypeJavaLangEnum();
}
// TODO: implement traverse?
diff --git a/dev/core/src/com/google/gwt/dev/jjs/ast/JProgram.java b/dev/core/src/com/google/gwt/dev/jjs/ast/JProgram.java
index e08cec5..3b7677f 100644
--- a/dev/core/src/com/google/gwt/dev/jjs/ast/JProgram.java
+++ b/dev/core/src/com/google/gwt/dev/jjs/ast/JProgram.java
@@ -185,6 +185,8 @@
private final JPrimitiveType typeInt = new JPrimitiveType(this, "int", "I",
"java.lang.Integer", literalIntZero);
+ private JClassType typeJavaLangEnum;
+
private JClassType typeJavaLangObject;
private final JPrimitiveType typeLong = new JPrimitiveType(this, "long", "J",
@@ -243,6 +245,8 @@
typeJavaLangObject = x;
} else if (sname.equals("java.lang.String")) {
typeString = x;
+ } else if (sname.equals("java.lang.Enum")) {
+ typeJavaLangEnum = x;
} else if (sname.equals("java.lang.Class")) {
typeClass = x;
} else if (sname.equals("com.google.gwt.core.client.JavaScriptObject")) {
@@ -574,6 +578,10 @@
return typeClass;
}
+ public JClassType getTypeJavaLangEnum() {
+ return typeJavaLangEnum;
+ }
+
public JClassType getTypeJavaLangObject() {
return typeJavaLangObject;
}
diff --git a/user/test/com/google/gwt/dev/jjs/test/HostedTest.java b/user/test/com/google/gwt/dev/jjs/test/HostedTest.java
index 809a91d..c40f4e2 100644
--- a/user/test/com/google/gwt/dev/jjs/test/HostedTest.java
+++ b/user/test/com/google/gwt/dev/jjs/test/HostedTest.java
@@ -250,6 +250,11 @@
assertEquals(s.length(), getStringLength(s));
assertEquals(s + "me", getString(s));
}
+
+ @Override
+ public boolean catchExceptions() {
+ return false;
+ }
public void testEnum() {
TestEnum val = enumSimple(TestEnum.VAL2);
@@ -447,7 +452,7 @@
}-*/;
private native String enumName(TestEnum val) /*-{
- return val.@com.google.gwt.dev.jjs.test.HostedTest.TestEnum::name()();
+ return val.@java.lang.Enum::name()();
}-*/;
private native TestEnum enumSimple(TestEnum val) /*-{
@@ -455,7 +460,7 @@
}-*/;
private native int enumValue(TestEnum val) /*-{
- return val.@com.google.gwt.dev.jjs.test.HostedTest.TestEnum::ordinal()();
+ return val.@java.lang.Enum::ordinal()();
}-*/;
private native String fooCall(String s) /*-{