Libs are blindly added into loaded-libs even if an error occurs during loading
Suppose you have a lib that causes some errors during loading, like the following:
(ns broken-lib) (} ; this line will cause a reader error
And then, if you
require the lib, it would be added into
loaded-libs in spite of the reader error,
require succeed silently after that.
user=> (contains? (loaded-libs) 'broken-lib) false user=> (require 'broken-lib) CompilerException java.lang.RuntimeException: Unmatched delimiter: }, compiling: (broken_lib.clj:4:3) user=> (contains? (loaded-libs) 'broken-lib) true user=> (require 'broken-lib) nil user=>
The patch for CLJ-1116 made the
ns macro blindly add the lib being defined
loaded-libs even if an error occurs during loading.
clojure.core/load-lib so that it removes the lib from