1.3 master commit for lazy defn loading

22 views
Skip to first unread message

Feng

unread,
Mar 31, 2011, 7:06:22 PM3/31/11
to Clojure
Hello,

Is this code valid?

Clojure 1.3.0-master-SNAPSHOT
user=>
(let []
(defn foo [] :foo))
#'user/foo
user=> (foo)
ClassNotFoundException user$eval1450$foo__1451
java.lang.Class.forName0 (Class.java:-2)

It was valid before this commit.

https://github.com/clojure/clojure/commit/71930b6b6537a796cdf13c4ffa7cf93eb53b6235

Regards,
- Feng

Mikhail Kryshen

unread,
Apr 7, 2011, 8:54:48 AM4/7/11
to Clojure
Looks like it is a bug in Clojure.

Create foo.clj:

(ns foo)
(let []
(defn foo [] :foo))

Then call foo from REPL:

$ java -cp .:clojure-1.3.0-alpha6.jar clojure.main
Clojure 1.3.0-alpha6
user=> (use 'foo)
nil
user=> (foo)
ClassNotFoundException foo$eval9$foo__10 java.lang.Class.forName0
(Class.java:-2)

But it works if foo.clj is AOT-compiled before starting REPL:

$ java -cp .:clojure-1.3.0-alpha6.jar -Dclojure.compile.path=.
clojure.lang.Compile foo
Compiling foo to .
$ java -cp .:clojure-1.3.0-alpha6.jar clojure.main
Clojure 1.3.0-alpha6
user=> (use 'foo)
nil
user=> (foo)
:foo

This bug also seems to prevent swank-clojure from working with
clojure-1.3.0-alpha6 unless swank-clojure is AOT-compiled.
> https://github.com/clojure/clojure/commit/71930b6b6537a796cdf13c4ffa7...
>
> Regards,
> - Feng
Reply all
Reply to author
Forward
0 new messages