Skip to content

Instantly share code, notes, and snippets.

@athos

athos/description.md

Last active Aug 29, 2015
Embed
What would you like to do?
下書き

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, which makes 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=>

Cause:

The patch for CLJ-1116 made the ns macro blindly add the lib being defined into loaded-libs even if an error occurs during loading.

Approach:

modify clojure.core/load-lib so that it removes the lib from loaded-libs on error.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.