# HG changeset patch # User Jaroslav Tulach # Date 1353165310 -3600 # Node ID f61602ea7759cdeac8b785fbb40c7cf967f15582 # Parent 2336c52d3ee54a0fe081f789eff3e8d0eb258522 Using === and !== to make sure empty string is not mistaken for null diff -r 2336c52d3ee5 -r f61602ea7759 vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java --- a/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Sat Nov 17 11:21:17 2012 +0100 +++ b/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java Sat Nov 17 16:15:10 2012 +0100 @@ -497,14 +497,14 @@ } case opc_ifnonnull: { int indx = i + readIntArg(byteCodes, i); - out.append("if (stack.pop()) { gt = " + indx); + out.append("if (stack.pop() !== null) { gt = " + indx); out.append("; continue; }"); i += 2; break; } case opc_ifnull: { int indx = i + readIntArg(byteCodes, i); - out.append("if (!stack.pop()) { gt = " + indx); + out.append("if (stack.pop() === null) { gt = " + indx); out.append("; continue; }"); i += 2; break; diff -r 2336c52d3ee5 -r f61602ea7759 vm/src/test/java/org/apidesign/vm4brwsr/StringSample.java --- a/vm/src/test/java/org/apidesign/vm4brwsr/StringSample.java Sat Nov 17 11:21:17 2012 +0100 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/StringSample.java Sat Nov 17 16:15:10 2012 +0100 @@ -43,6 +43,10 @@ char[] arr = { a, b, c }; return new String(arr).toString(); } + + public static String chars(char a, char b, char c) { + return ("" + a + b +c).toString(); + } public static String toStringTest(int howMuch) { counter = 0; diff -r 2336c52d3ee5 -r f61602ea7759 vm/src/test/java/org/apidesign/vm4brwsr/StringTest.java --- a/vm/src/test/java/org/apidesign/vm4brwsr/StringTest.java Sat Nov 17 11:21:17 2012 +0100 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/StringTest.java Sat Nov 17 16:15:10 2012 +0100 @@ -44,6 +44,14 @@ ); } + @Test public void concatChars() throws Exception { + assertExec( + "Composing yields ABC", + "org_apidesign_vm4brwsr_StringSample_charsLjava_lang_StringCCC", + "ABC", 'A', 'B', 'C' + ); + } + @Test(timeOut=10000) public void toStringConcatenation() throws Exception { assertExec( "Five executions should generate 5Hello World!",