Details
-
Type:
Enhancement
-
Status:
Open
-
Priority:
Minor
-
Resolution: Unresolved
-
Affects Version/s: None
-
Fix Version/s: None
-
Component/s: None
-
Labels:None
-
Patch:Code and Test
Description
The implementation of clojure.core/get returns null if its argument is not a valid associative collection. However, calling 'get' on something which is neither nil nor an Associative collection is almost certainly a bug, and should be indicated by an exception.
This behavior can obscure common programmer errors such as:
(def a (atom {:a 1 :b 2})
(:foo a) ; forgot to deref a
;;=> nil
CLJ-932 was accepted as a similar enhancement to 'clojure.core/contains?'
Attached patch 0001 throws an IllegalArgumentException as the fall-through case of RT.getFrom.
Patch clj-1107-throw-on-get-for-unsupported-types-patch-v2.txt dated May 24 2013 is identical to 0001-CLJ-1107-Throw-exception-for-get-called-on-unsupport.patch dated Nov 13 2012, except it applies cleanly to latest master. A recent commit for
CLJ-1099changed many IllegalArgumentException occurrences to Throwable in the tests, which is the only thing changed in this updated patch.CLJ-1099changed many IllegalArgumentException occurrences to Throwable in the tests, which is the only thing changed in this updated patch.