emul/mini/src/main/java/org/apidesign/bck2brwsr/emul/reflect/MethodImpl.java
branchreflection
changeset 654 26a86cc00224
parent 650 2569d9dd4b28
child 666 8338ab1991e6
     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              }