
clojure - issue #98
proxy emits bytecode improperly referring to 21- & 22-arg overloads of IFn.invoke (Regression?)
Attempting to obfuscate a jar that includes clojure.jar's contents using proguard results in two errors:
[proguard] Warning: clojure.proxy.clojure.lang.APersistentMap: can't find referenced method 'java.lang.Object invoke(java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object)' in class clojure.lang.IFn [proguard] Warning: clojure.proxy.clojure.lang.APersistentMap: can't find referenced method 'java.lang.Object invoke(java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object,java.lang.Object)' in class clojure.lang.IFn
This is almost identical to a previously reported (and fixed) problem with gen-class, where it used to emit 21- and 22-argument overloads of IFn.invoke that delegated to the gen-class' superclass' implementation (which obviously doesn't provide IFn.invoke overloads with greater than 20 arguments). This issue was reported and fixed last August:
http://groups.google.com/group/clojure/browse_thread/thread/b3698314084d8f54
Looks like the problem has cropped up again, only this time in conjunction with AOT compiled proxies.
Comment #1
Posted on Mar 16, 2009 by Happy MonkeyFixed in r1330 -- thanks, Rich!
Comment #2
Posted on Mar 16, 2009 by Massive Dog(No comment was entered for this change.)
Status: Fixed
Labels:
Type-Defect
Priority-Low