Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Keyword invoke works on IPersistentMaps

  • Loading branch information...
commit a1b0abcb28e12c81f3f2ba62ce25bcbc65d5eed8 1 parent 83e913b
@frenchy64 frenchy64 authored
View
14 src/main/clojure/clojure/core/typed/check.clj
@@ -1049,10 +1049,16 @@
(Union? t) (apply Un
(for [t* (:types t)]
(find-val-type t* k default)))
- :else (throw (Exception. (str (when *current-env*
- (str (:line *current-env*) ":"))
- "Can't get key " (unparse-type k)
- " from type " (unparse-type t)))))))
+ (RClass? t)
+ (->
+ (check-funapp nil nil (ret (parse-type '(All [x y] [(clojure.lang.IPersistentMap Any x) y -> (U x y)])))
+ [(ret t) (ret (or default -nil))] nil)
+ ret-t)
+ :else -any)))
+; :else (throw (Exception. (str (when *current-env*
+; (str (:line *current-env*) ":"))
+; "Can't get key " (unparse-type k)
+; " from type " (unparse-type t))))
;[TCResult TCResult (Option TCResult) (Option TCResult) -> TCResult]
(defn invoke-keyword [kw-ret target-ret default-ret expected-ret]
View
6 src/test/clojure/clojure/core/typed/test/core.clj
@@ -1187,11 +1187,13 @@
(defn kw-arg-test [& args])
(ann kw-arg-test [& {:a Number} -> Number])
-(deftest kw-args-test
+;TODO keyword args
+#_(deftest kw-args-test
(is (cf (clojure.core.typed.test.core/kw-arg-test :a 1))))
(deftest get-APersistentMap-test
- (is (cf (get (clojure.core.typed/ann-form {} (clojure.lang.APersistentMap Number Number)) :a))))
+ (is (cf (get (clojure.core.typed/ann-form {} (clojure.lang.APersistentMap Number Number)) :a)
+ (U nil Number))))
(deftest enum-field-non-nilable-test
(is (cf (java.util.concurrent.TimeUnit/NANOSECONDS)
Please sign in to comment.
Something went wrong with that request. Please try again.