Skip to content

Commit a1b2780

Browse files
committed
encapsulate fns returning unforced types + reformat
1 parent 6ce7009 commit a1b2780

File tree

2 files changed

+45
-42
lines changed

2 files changed

+45
-42
lines changed

typed/clj.checker/src/typed/cljc/checker/name_env.clj

Lines changed: 38 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242
symbol?)
4343
(some-fn r/Type? #(isa? % temp-binding))))
4444

45-
(t/ann ^:no-check name-env [-> NameEnv])
45+
(t/ann ^:no-check name-env [t/Any -> NameEnv])
4646
(defn name-env [checker]
4747
(get (env/deref-checker checker) impl/current-name-env-kw {}))
4848

@@ -51,38 +51,42 @@
5151
(env/swap-checker! checker assoc impl/current-name-env-kw nme-env)
5252
nil)
5353

54-
(t/ann ^:no-check find-type-name-entry [t/Sym t/Any -> (t/Nilable (t/MapEntry t/Sym (t/U t/Kw (t/Delay r/Type) [:-> r/Type])))])
54+
(t/ann ^:no-check find-type-name-entry [t/Sym t/Any -> (t/Nilable (t/MapEntry t/Sym (t/U t/Kw r/Type)))])
5555
(defn find-type-name-entry [sym opts]
56-
(or (find (name-env (env/checker opts)) sym)
57-
(when-some [sym-nsym ((requiring-resolve (impl/impl-case opts
58-
:clojure 'typed.clj.checker.parse-unparse/ns-rewrites-clj
59-
:cljs 'typed.clj.checker.parse-unparse/ns-rewrites-cljs))
60-
(some-> sym namespace symbol))]
61-
(find (name-env (env/checker opts))
62-
(symbol (name sym-nsym) (name sym))))))
63-
64-
(t/ann ^:no-check find-type-name [t/Sym t/Any -> (t/Nilable (t/U t/Kw (t/Delay r/Type) [:-> r/Type]))])
65-
(defn find-type-name [sym opts]
66-
(or ((name-env (env/checker opts)) sym)
67-
(when-some [sym-nsym ((requiring-resolve (impl/impl-case opts
68-
:clojure 'typed.clj.checker.parse-unparse/ns-rewrites-clj
69-
:cljs 'typed.clj.checker.parse-unparse/ns-rewrites-cljs))
70-
(some-> sym namespace symbol))]
71-
((name-env (env/checker opts))
72-
(symbol (name sym-nsym) (name sym))))))
56+
(let [env (name-env (env/checker opts))]
57+
(some->
58+
(or (find env sym)
59+
(when-some [sym-nsym (some-> (namespace sym) symbol
60+
((requiring-resolve
61+
(impl/impl-case opts
62+
:clojure 'typed.clj.checker.parse-unparse/ns-rewrites-clj
63+
:cljs 'typed.clj.checker.parse-unparse/ns-rewrites-cljs))))]
64+
(find env (symbol (name sym-nsym) (name sym)))))
65+
(update 1 #(force-type % opts)))))
66+
67+
(t/ann ^:no-check get-type-name* [t/Sym t/Any -> (t/Nilable (t/U t/Kw (t/Delay r/Type) [:-> r/Type]))])
68+
(defn- get-type-name*
69+
"Does not resolve type."
70+
[sym opts]
71+
(let [env (name-env (env/checker opts))]
72+
(or (env sym)
73+
(when-some [sym-nsym (some-> (namespace sym) symbol
74+
((requiring-resolve
75+
(impl/impl-case opts
76+
:clojure 'typed.clj.checker.parse-unparse/ns-rewrites-clj
77+
:cljs 'typed.clj.checker.parse-unparse/ns-rewrites-cljs))))]
78+
(env (symbol (name sym-nsym) (name sym)))))))
7379

7480
(t/ann ^:no-check get-type-name [t/Sym t/Any -> (t/U nil t/Kw r/Type)])
7581
(defn get-type-name
76-
"Return the name with var symbol sym.
82+
"Return the (forced) type mapped to var with symbol sym.
7783
Returns nil if not found."
7884
[sym opts]
7985
{:pre [(symbol? sym)]
80-
:post [(or (assert (or (nil? %)
81-
(keyword? %)
82-
(r/Type? %))
83-
(pr-str %))
84-
true)]}
85-
(some-> (find-type-name sym opts) (force-type opts)))
86+
:post [(or (nil? %)
87+
(keyword? %)
88+
(r/Type? %))]}
89+
(some-> (get-type-name* sym opts) (force-type opts)))
8690

8791
(t/ann ^:no-check add-type-name [t/Any t/Sym (t/U t/Kw r/Type) -> nil])
8892
(def add-type-name impl/add-tc-type-name)
@@ -117,14 +121,14 @@
117121
(or (dtenv/get-datatype checker sym opts)
118122
(prenv/get-protocol checker sym opts)
119123
(impl/impl-case opts
120-
:clojure (or (rcls/get-rclass checker sym opts)
121-
(when (class? (resolve sym))
122-
(c/RClass-of-with-unknown-params sym opts)))
123-
:cljs ((requiring-resolve 'typed.cljs.checker.jsnominal-env/get-jsnominal) sym opts))
124-
; during the definition of RClass's that reference
125-
; themselves in their definition, a temporary TFn is
126-
; added to the declared kind env which is enough to determine
127-
; type rank and variance.
124+
:clojure (or (rcls/get-rclass checker sym opts)
125+
(when (class? (resolve sym))
126+
(c/RClass-of-with-unknown-params sym opts)))
127+
:cljs ((requiring-resolve 'typed.cljs.checker.jsnominal-env/get-jsnominal) sym opts))
128+
; during the definition of RClass's that reference
129+
; themselves in their definition, a temporary TFn is
130+
; added to the declared kind env which is enough to determine
131+
; type rank and variance.
128132
(kinds/declared-kind-or-nil checker sym opts)
129133
(cond
130134
(= impl/protocol-name-type t) (prenv/resolve-protocol checker sym opts)

typed/clj.checker/src/typed/cljc/doc.clj

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -299,14 +299,13 @@
299299
(println doc)
300300
(println "Forms:" forms))
301301
(if-some [[alias-k alias-ty] (name-env/find-type-name-entry rsym opts)]
302-
(let [alias-ty (force-type alias-ty opts)]
303-
(with-out-str
304-
(println "Type alias" alias-k)
305-
(pp/pprint (if (keyword? alias-ty)
306-
alias-ty
307-
(prs/unparse-type alias-ty opts)))
308-
(println "Metadata:")
309-
(pp/pprint (meta alias-k))))
302+
(with-out-str
303+
(println "Type alias" alias-k)
304+
(pp/pprint (if (keyword? alias-ty)
305+
alias-ty
306+
(prs/unparse-type alias-ty opts)))
307+
(println "Metadata:")
308+
(pp/pprint (meta alias-k)))
310309
(if-some [ty (impl/impl-case opts
311310
:clojure (rcls/get-rclass checker rsym opts)
312311
:cljs nil)]

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy