Using === and !== to make sure empty string is not mistaken for null javap
authorJaroslav Tulach <jaroslav.tulach@apidesign.org>
Sat, 17 Nov 2012 16:15:10 +0100
branchjavap
changeset 171f61602ea7759
parent 170 2336c52d3ee5
child 172 9eb74b221cff
Using === and !== to make sure empty string is not mistaken for null
vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java
vm/src/test/java/org/apidesign/vm4brwsr/StringSample.java
vm/src/test/java/org/apidesign/vm4brwsr/StringTest.java
     1.1 --- a/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java	Sat Nov 17 11:21:17 2012 +0100
     1.2 +++ b/vm/src/main/java/org/apidesign/vm4brwsr/ByteCodeToJavaScript.java	Sat Nov 17 16:15:10 2012 +0100
     1.3 @@ -497,14 +497,14 @@
     1.4                  }
     1.5                  case opc_ifnonnull: {
     1.6                      int indx = i + readIntArg(byteCodes, i);
     1.7 -                    out.append("if (stack.pop()) { gt = " + indx);
     1.8 +                    out.append("if (stack.pop() !== null) { gt = " + indx);
     1.9                      out.append("; continue; }");
    1.10                      i += 2;
    1.11                      break;
    1.12                  }
    1.13                  case opc_ifnull: {
    1.14                      int indx = i + readIntArg(byteCodes, i);
    1.15 -                    out.append("if (!stack.pop()) { gt = " + indx);
    1.16 +                    out.append("if (stack.pop() === null) { gt = " + indx);
    1.17                      out.append("; continue; }");
    1.18                      i += 2;
    1.19                      break;
     2.1 --- a/vm/src/test/java/org/apidesign/vm4brwsr/StringSample.java	Sat Nov 17 11:21:17 2012 +0100
     2.2 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/StringSample.java	Sat Nov 17 16:15:10 2012 +0100
     2.3 @@ -43,6 +43,10 @@
     2.4          char[] arr = { a, b, c };
     2.5          return new String(arr).toString();
     2.6      }
     2.7 +
     2.8 +    public static String chars(char a, char b, char c) {
     2.9 +        return ("" + a + b +c).toString();
    2.10 +    }
    2.11      
    2.12      public static String toStringTest(int howMuch) {
    2.13          counter = 0;
     3.1 --- a/vm/src/test/java/org/apidesign/vm4brwsr/StringTest.java	Sat Nov 17 11:21:17 2012 +0100
     3.2 +++ b/vm/src/test/java/org/apidesign/vm4brwsr/StringTest.java	Sat Nov 17 16:15:10 2012 +0100
     3.3 @@ -44,6 +44,14 @@
     3.4          );
     3.5      }
     3.6  
     3.7 +    @Test public void concatChars() throws Exception {
     3.8 +        assertExec(
     3.9 +            "Composing yields ABC",
    3.10 +            "org_apidesign_vm4brwsr_StringSample_charsLjava_lang_StringCCC",
    3.11 +            "ABC", 'A', 'B', 'C'
    3.12 +        );
    3.13 +    }
    3.14 +
    3.15      @Test(timeOut=10000) public void toStringConcatenation() throws Exception {
    3.16          assertExec(
    3.17              "Five executions should generate 5Hello World!",