summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTimothy Pratley <timothypratley@gmail.com>2010-01-30 16:20:48 +1100
committerRich Hickey <richhickey@gmail.com>2010-03-11 07:19:00 -0500
commite2cdf7dea9b0a459e781e4da320817be56aa6a8d (patch)
treef0c457b842a3fb62f7bf0c27ec55e6b675d188c3
parentec9b5846dead9bbdf6dc955c7a5e74cc61cd3e4e (diff)
check load arguments and options are valid #253
Signed-off-by: Rich Hickey <richhickey@gmail.com>
-rw-r--r--src/clj/clojure/core.clj8
-rw-r--r--test/clojure/test_clojure/ns_libs.clj8
2 files changed, 16 insertions, 0 deletions
diff --git a/src/clj/clojure/core.clj b/src/clj/clojure/core.clj
index bec3f2af..e2cf386e 100644
--- a/src/clj/clojure/core.clj
+++ b/src/clj/clojure/core.clj
@@ -4206,6 +4206,14 @@
(let [flags (filter keyword? args)
opts (interleave flags (repeat true))
args (filter (complement keyword?) args)]
+ ; check for unsupported options
+ (let [supported #{:as :reload :reload-all :require :use :verbose}
+ unsupported (seq (remove supported flags))]
+ (throw-if unsupported
+ (apply str "Unsupported option(s) supplied: "
+ (interpose \, unsupported))))
+ ; check a load target was specified
+ (throw-if (not (seq args)) "Nothing specified to load")
(doseq [arg args]
(if (libspec? arg)
(apply load-lib nil (prependss arg opts))
diff --git a/test/clojure/test_clojure/ns_libs.clj b/test/clojure/test_clojure/ns_libs.clj
index a9a2145c..c5b9666a 100644
--- a/test/clojure/test_clojure/ns_libs.clj
+++ b/test/clojure/test_clojure/ns_libs.clj
@@ -26,3 +26,11 @@
; require use
; loaded-libs
+(deftest test-require
+ (is (thrown? Exception (require :foo)))
+ (is (thrown? Exception (require))))
+
+(deftest test-use
+ (is (thrown? Exception (use :foo)))
+ (is (thrown? Exception (use))))
+