Hi,
I ran into an IllegalAccessError while playing around with latest
"new" jar from
build.clojure.org.
Here an example:
(defprotocol IFoo
(bar [p x]))
(deftype Foo [x])
(def foo-prototype (Foo nil))
(extend ::Foo
IFoo
{:bar #(Foo %2)})
How to reproduce:
user=> (bar foo-prototype 5)
#:Foo{:x 5}
user=> (def x (bar foo-prototype 5))
java.lang.IllegalAccessError (NO_SOURCE_FILE:3)
user=> (.printStackTrace *e)
java.lang.IllegalAccessError (NO_SOURCE_FILE:3)
at clojure.lang.Compiler.analyzeSeq(Compiler.java:4892)
at clojure.lang.Compiler.analyze(Compiler.java:4707)
at clojure.lang.Compiler.access$100(Compiler.java:35)
at clojure.lang.Compiler$DefExpr$Parser.parse(Compiler.java:
399)
at clojure.lang.Compiler.analyzeSeq(Compiler.java:4885)
at clojure.lang.Compiler.analyze(Compiler.java:4707)
at clojure.lang.Compiler.analyze(Compiler.java:4668)
at clojure.lang.Compiler.eval(Compiler.java:4943)
at clojure.lang.Compiler.eval(Compiler.java:4907)
at clojure.core$eval__5561.invoke(core.clj:1975)
at clojure.main$repl__7993$read_eval_print__8005.invoke
(main.clj:180)
at clojure.main$repl__7993.doInvoke(main.clj:197)
at clojure.lang.RestFn.invoke(RestFn.java:422)
at clojure.main$repl_opt__8039.invoke(main.clj:251)
at clojure.main$main__8074.doInvoke(main.clj:337)
at clojure.lang.RestFn.invoke(RestFn.java:409)
at clojure.lang.Var.invoke(Var.java:365)
at clojure.lang.AFn.applyToHelper(AFn.java:173)
at clojure.lang.Var.applyTo(Var.java:482)
at clojure.main.main(main.java:37)
Caused by: java.lang.IllegalAccessError
at clojure.lang.Compiler.registerProtocolCallsite
(Compiler.java:5004)
at clojure.lang.Compiler.access$1000(Compiler.java:35)
at clojure.lang.Compiler$InvokeExpr.<init>(Compiler.java:2705)
at clojure.lang.Compiler$InvokeExpr.parse(Compiler.java:2872)
at clojure.lang.Compiler.analyzeSeq(Compiler.java:4887)
... 19 more
nil
Sincerely
Meikel