diff -r d97770281580 -r 5ab1f0890a42 emul/src/main/java/java/lang/AnnotationImpl.java --- a/emul/src/main/java/java/lang/AnnotationImpl.java Sun Dec 02 12:39:51 2012 +0100 +++ b/emul/src/main/java/java/lang/AnnotationImpl.java Sun Dec 02 15:05:36 2012 +0100 @@ -30,4 +30,29 @@ static T create(Class annoClass, Object values) { return create(new AnnotationImpl(), annoClass.getName().replace('.', '_'), values); } + + static Annotation[] create(Object anno) { + String[] names = findNames(anno); + Annotation[] ret = new Annotation[names.length]; + for (int i = 0; i < names.length; i++) { + String n = names[i].substring(1, names[i].length() - 1).replace('/', '_'); + ret[i] = create(new AnnotationImpl(), n, findData(anno, names[i])); + } + return ret; + } + @JavaScriptBody(args = "anno", body = + "var arr = new Array();" + + "for (p in anno) {" + + " arr.push(p);" + + "}" + + "return arr;" + ) + private static String[] findNames(Object anno) { + throw new UnsupportedOperationException(); + } + + @JavaScriptBody(args={ "anno", "p"}, body="return anno[p];") + private static Object findData(Object anno, String p) { + throw new UnsupportedOperationException(); + } }