# HG changeset patch # User Jaroslav Tulach # Date 1383228095 -3600 # Node ID e896bc6879840ec7a53531f7b7a22b0310ad8d25 # Parent 9aeb2a41e009bc86bb3445a929e91c8641c1c781 Implementing String's intern() diff -r 9aeb2a41e009 -r e896bc687984 rt/emul/compact/src/test/java/org/apidesign/bck2brwsr/tck/CompareStringsTest.java --- a/rt/emul/compact/src/test/java/org/apidesign/bck2brwsr/tck/CompareStringsTest.java Thu Oct 31 11:36:52 2013 +0100 +++ b/rt/emul/compact/src/test/java/org/apidesign/bck2brwsr/tck/CompareStringsTest.java Thu Oct 31 15:01:35 2013 +0100 @@ -49,6 +49,14 @@ return "Ahoj".equals(null); } + @Compare public boolean internIsSame() { + return new String("Ahoj").intern() == another(); + } + + private static String another() { + return new String("Ahoj").intern(); + } + @Compare public int highByteLenght() { byte[] arr= { 77,97,110,105,102,101,115,116,45,86,101,114,115,105,111,110 }; return new String(arr, 0).length(); diff -r 9aeb2a41e009 -r e896bc687984 rt/emul/mini/src/main/java/java/lang/String.java --- a/rt/emul/mini/src/main/java/java/lang/String.java Thu Oct 31 11:36:52 2013 +0100 +++ b/rt/emul/mini/src/main/java/java/lang/String.java Thu Oct 31 15:01:35 2013 +0100 @@ -3109,6 +3109,14 @@ * @return a string that has the same contents as this string, but is * guaranteed to be from a pool of unique strings. */ + @JavaScriptBody(args = {}, body = + "var s = this.toString().toString();\n" + + "var i = String.intern || (String.intern = {})\n" + + "if (!i[s]) {\n" + + " i[s] = s;\n" + + "}\n" + + "return i[s];" + ) public native String intern();