1.1 --- a/emul/mini/src/main/java/org/apidesign/bck2brwsr/emul/reflect/MethodImpl.java Sun Feb 03 11:01:08 2013 +0100
1.2 +++ b/emul/mini/src/main/java/org/apidesign/bck2brwsr/emul/reflect/MethodImpl.java Sun Feb 03 22:58:42 2013 +0100
1.3 @@ -56,8 +56,10 @@
1.4 + "var arr = new Array();\n"
1.5 + "for (m in c) {\n"
1.6 + " if (m.indexOf(prefix) === 0) {\n"
1.7 + + " if (!c[m].cls) continue;\n"
1.8 + " arr.push(m);\n"
1.9 + " arr.push(c[m]);\n"
1.10 + + " arr.push(c[m].cls.$class);\n"
1.11 + " }"
1.12 + "}\n"
1.13 + "return arr;")
1.14 @@ -67,9 +69,10 @@
1.15 public static Method findMethod(
1.16 Class<?> clazz, String name, Class<?>... parameterTypes) {
1.17 Object[] data = findMethodData(clazz, name + "__");
1.18 - BIG: for (int i = 0; i < data.length; i += 2) {
1.19 - String sig = ((String) data[0]).substring(name.length() + 2);
1.20 - Method tmp = INSTANCE.create(clazz, name, data[1], sig);
1.21 + BIG: for (int i = 0; i < data.length; i += 3) {
1.22 + String sig = ((String) data[i]).substring(name.length() + 2);
1.23 + Class<?> cls = (Class<?>) data[i + 2];
1.24 + Method tmp = INSTANCE.create(cls, name, data[i + 1], sig);
1.25 Class<?>[] tmpParms = tmp.getParameterTypes();
1.26 if (parameterTypes.length != tmpParms.length) {
1.27 continue;
1.28 @@ -87,7 +90,7 @@
1.29 public static Method[] findMethods(Class<?> clazz, int mask) {
1.30 Object[] namesAndData = findMethodData(clazz, "");
1.31 int cnt = 0;
1.32 - for (int i = 0; i < namesAndData.length; i += 2) {
1.33 + for (int i = 0; i < namesAndData.length; i += 3) {
1.34 String sig = (String) namesAndData[i];
1.35 Object data = namesAndData[i + 1];
1.36 int middle = sig.indexOf("__");
1.37 @@ -96,7 +99,8 @@
1.38 }
1.39 String name = sig.substring(0, middle);
1.40 sig = sig.substring(middle + 2);
1.41 - final Method m = INSTANCE.create(clazz, name, data, sig);
1.42 + Class<?> cls = (Class<?>) namesAndData[i + 2];
1.43 + final Method m = INSTANCE.create(cls, name, data, sig);
1.44 if ((m.getModifiers() & mask) == 0) {
1.45 continue;
1.46 }