rt/emul/mini/src/main/java/org/apidesign/bck2brwsr/emul/reflect/AnnotationImpl.java
1.1 --- a/rt/emul/mini/src/main/java/org/apidesign/bck2brwsr/emul/reflect/AnnotationImpl.java Tue Feb 26 16:54:16 2013 +0100
1.2 +++ b/rt/emul/mini/src/main/java/org/apidesign/bck2brwsr/emul/reflect/AnnotationImpl.java Sat Mar 19 10:31:13 2016 +0100
1.3 @@ -38,11 +38,20 @@
1.4 }
1.5
1.6 @JavaScriptBody(args = { "a", "n", "arr", "values" }, body = ""
1.7 - + "function f(val, prop, clazz) {\n"
1.8 + + "function r(anno, val, prop, m) {\n"
1.9 + + " var v = val[prop];\n"
1.10 + + " if (typeof v === 'undefined') {\n"
1.11 + + " var cls = anno.fld_org_apidesign_bck2brwsr_emul_reflect_AnnotationImpl_type.cnstr;\n"
1.12 + + " try { throw 'x'; } catch (errr) {};\n"
1.13 + + " v = cls.prototype[m]();\n"
1.14 + + " }\n"
1.15 + + " return v;\n"
1.16 + + "}\n"
1.17 + + "function f(val, prop, clazz, m) {\n"
1.18 + " return function() {\n"
1.19 - + " if (clazz == null) return val[prop];\n"
1.20 + + " if (clazz == null) return r(this, val, prop, m);\n"
1.21 + " if (clazz.isArray__Z()) {\n"
1.22 - + " var valarr = val[prop];\n"
1.23 + + " var valarr = r(this, val, prop, m);\n"
1.24 + " var cmp = clazz.getComponentType__Ljava_lang_Class_2();\n"
1.25 + " var retarr = vm.java_lang_reflect_Array(false).newInstance__Ljava_lang_Object_2Ljava_lang_Class_2I(cmp, valarr.length);\n"
1.26 + " for (var i = 0; i < valarr.length; i++) {\n"
1.27 @@ -50,14 +59,14 @@
1.28 + " }\n"
1.29 + " return retarr;\n"
1.30 + " }\n"
1.31 - + " return CLS.prototype.c__Ljava_lang_Object_2Ljava_lang_Class_2Ljava_lang_Object_2(clazz, val[prop]);\n"
1.32 + + " return CLS.prototype.c__Ljava_lang_Object_2Ljava_lang_Class_2Ljava_lang_Object_2(clazz, r(this, val, prop, m));\n"
1.33 + " };\n"
1.34 + "}\n"
1.35 + "for (var i = 0; i < arr.length; i += 3) {\n"
1.36 + " var m = arr[i];\n"
1.37 + " var p = arr[i + 1];\n"
1.38 + " var c = arr[i + 2];\n"
1.39 - + " a[m] = f(values, p, c);\n"
1.40 + + " a[m] = f(values, p, c, m);\n"
1.41 + "}\n"
1.42 + "a['$instOf_' + n] = true;\n"
1.43 + "return a;"