1.1 --- a/boot/src/main/java/org/netbeans/html/boot/impl/FnUtils.java Wed Jan 08 17:46:35 2014 +0100
1.2 +++ b/boot/src/main/java/org/netbeans/html/boot/impl/FnUtils.java Thu Jan 09 11:14:27 2014 +0100
1.3 @@ -388,7 +388,12 @@
1.4 @Override
1.5 public SignatureVisitor visitArrayType() {
1.6 if (nowReturn) {
1.7 - throw new IllegalStateException("Not supported yet");
1.8 + return new SignatureVisitor(Opcodes.ASM4) {
1.9 + @Override
1.10 + public void visitClassType(String name) {
1.11 + returnType = Type.getType("[" + Type.getObjectType(name).getDescriptor());
1.12 + }
1.13 + };
1.14 }
1.15 loadObject();
1.16 return new SignatureWriter();
2.1 --- a/boot/src/test/java/org/netbeans/html/boot/impl/JsClassLoaderBase.java Wed Jan 08 17:46:35 2014 +0100
2.2 +++ b/boot/src/test/java/org/netbeans/html/boot/impl/JsClassLoaderBase.java Thu Jan 09 11:14:27 2014 +0100
2.3 @@ -198,4 +198,14 @@
2.4 Method st = methodClass.getMethod("recordError", Object.class);
2.5 assertEquals(st.invoke(methodClass.newInstance(), "Hello"), "Hello", "The same parameter returned");
2.6 }
2.7 +
2.8 + @Test public void arrayInOut() throws Throwable {
2.9 + String[] arr = { "Ahoj" };
2.10 + Method st = methodClass.getMethod("arr", Object[].class);
2.11 + Object ret = st.invoke(null, (Object) arr);
2.12 + assertTrue(ret instanceof Object[], "Expecting array: " + ret);
2.13 + Object[] res = (Object[]) ret;
2.14 + assertEquals(res.length, 1, "One element");
2.15 + assertEquals(res[0], "Ahoj", "The right string");
2.16 + }
2.17 }
2.18 \ No newline at end of file
3.1 --- a/boot/src/test/java/org/netbeans/html/boot/impl/JsMethods.java Wed Jan 08 17:46:35 2014 +0100
3.2 +++ b/boot/src/test/java/org/netbeans/html/boot/impl/JsMethods.java Thu Jan 09 11:14:27 2014 +0100
3.3 @@ -106,6 +106,9 @@
3.4 @JavaScriptBody(args = { "v" }, javacall = true, body = "return @java.lang.Integer::parseInt(Ljava/lang/String;)(v);")
3.5 public static native int parseInt(String v);
3.6
3.7 + @JavaScriptBody(args = "arr", body = "return arr;")
3.8 + public static native Object[] arr(Object[] arr);
3.9 +
3.10 @JavaScriptBody(args = { "useA", "useB", "a", "b" }, body = "var l = 0;"
3.11 + "if (useA) l += a;\n"
3.12 + "if (useB) l += b;\n"