1.1 --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Wed May 07 10:01:54 2014 +0200
1.2 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Wed May 07 11:41:41 2014 +0200
1.3 @@ -19,6 +19,7 @@
1.4
1.5 import java.io.IOException;
1.6 import java.io.InputStream;
1.7 +import java.util.Locale;
1.8 import static org.apidesign.vm4brwsr.ByteCodeParser.*;
1.9
1.10 /** Translator of the code inside class files to JavaScript.
1.11 @@ -1533,7 +1534,18 @@
1.12 case '_': sb.append("_1"); break;
1.13 case ';': sb.append("_2"); break;
1.14 case '[': sb.append("_3"); break;
1.15 - default: sb.append(ch); break;
1.16 + default:
1.17 + if (Character.isJavaIdentifierPart(ch)) {
1.18 + sb.append(ch);
1.19 + } else {
1.20 + sb.append("_0");
1.21 + String hex = Integer.toHexString(ch).toLowerCase(Locale.ENGLISH);
1.22 + for (int m = hex.length(); m < 4; m++) {
1.23 + sb.append("0");
1.24 + }
1.25 + sb.append(hex);
1.26 + }
1.27 + break;
1.28 }
1.29 }
1.30 return sb.toString();