# HG changeset patch # User Jaroslav Tulach # Date 1399973221 -7200 # Node ID f6200b8decc4de3ed7ac251af53948feaaff7f92 # Parent 2e415b91c0466a5b4afd041a85de2cd92dd6c512 Need to make sure all VALUES fields of enums are exported diff -r 2e415b91c046 -r f6200b8decc4 rt/emul/compact/src/main/java/java/util/EnumMap.java --- a/rt/emul/compact/src/main/java/java/util/EnumMap.java Mon May 12 16:40:57 2014 +0200 +++ b/rt/emul/compact/src/main/java/java/util/EnumMap.java Tue May 13 11:27:01 2014 +0200 @@ -737,7 +737,7 @@ * Returns all of the values comprising K. * The result is uncloned, cached, and shared by all callers. */ - @JavaScriptBody(args = { "enumType" }, body = "return enumType.cnstr.fld_$VALUES;") + @JavaScriptBody(args = { "enumType" }, body = "return enumType.cnstr.prototype['_$VALUES']();") private static native > K[] getKeyUniverse(Class keyType); private static final long serialVersionUID = 458661240069192865L; diff -r 2e415b91c046 -r f6200b8decc4 rt/emul/compact/src/main/java/java/util/EnumSet.java --- a/rt/emul/compact/src/main/java/java/util/EnumSet.java Mon May 12 16:40:57 2014 +0200 +++ b/rt/emul/compact/src/main/java/java/util/EnumSet.java Tue May 13 11:27:01 2014 +0200 @@ -384,7 +384,7 @@ * Returns all of the values comprising E. * The result is uncloned, cached, and shared by all callers. */ - @JavaScriptBody(args = { "enumType" }, body = "return enumType.cnstr.fld_$VALUES;") + @JavaScriptBody(args = { "enumType" }, body = "return enumType.cnstr.prototype['_$VALUES']();") private static native > E[] getUniverse(Class elementType); /** diff -r 2e415b91c046 -r f6200b8decc4 rt/emul/mini/src/main/java/java/lang/Enum.java --- a/rt/emul/mini/src/main/java/java/lang/Enum.java Mon May 12 16:40:57 2014 +0200 +++ b/rt/emul/mini/src/main/java/java/lang/Enum.java Tue May 13 11:27:01 2014 +0200 @@ -235,7 +235,7 @@ throw new IllegalArgumentException(); } - @JavaScriptBody(args = { "enumType" }, body = "return enumType.cnstr.fld_$VALUES;") + @JavaScriptBody(args = { "enumType" }, body = "return enumType.cnstr.prototype['_$VALUES']();") private static native Object[] values(Class enumType); /** diff -r 2e415b91c046 -r f6200b8decc4 rt/vm/src/main/java/org/apidesign/vm4brwsr/ExportedSymbols.java --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/ExportedSymbols.java Mon May 12 16:40:57 2014 +0200 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/ExportedSymbols.java Tue May 13 11:27:01 2014 +0200 @@ -55,8 +55,20 @@ } boolean isExported(FieldData fieldData) throws IOException { - return isAccessible(fieldData.access) && isExported(fieldData.cls) - || isMarkedAsExported(fieldData); + if ( + isAccessible(fieldData.access) && + isExported(fieldData.cls) || isMarkedAsExported(fieldData) + ) { + return true; + } + if ( + fieldData.isStatic() && fieldData.getName().equals("$VALUES") && + "java/lang/Enum".equals(fieldData.cls.getSuperClassName()) + ) { + // enum values need to be exported + return true; + } + return false; } private boolean isMarkedAsExportedPackage(String pkgName) {