File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 66 [sci.impl.deftype]
77 [sci.impl.interop :as interop]
88 [sci.impl.macros :as macros]
9- [sci.impl.records]
9+ [sci.impl.records :as records ]
1010 [sci.impl.types :as types]
1111 [sci.impl.utils :as utils :refer [#?(:cljs kw-identical?)
1212 rethrow-with-location-of-node
203203 (reduce (fn [_ class]
204204 (let [fq-class-name (symbol (if package (str package " ." class)
205205 class))]
206- (if-let [clazz (interop/resolve-class ctx fq-class-name)]
206+ (if-let [clazz (or (interop/resolve-class ctx fq-class-name)
207+ (records/resolve-record-or-protocol-class ctx fq-class-name))]
207208 (let [cnn (utils/current-ns-name )]
208209 (swap! env assoc-in [:namespaces cnn :imports class] fq-class-name)
209210 clazz)
Original file line number Diff line number Diff line change 349349 A protocol is represented by a map with :ns, :methods and optionally :class. This is also an implementation detail."
350350 ; ; TODO: we should probably use munging here for namespaces with hyphens in them.
351351 ([ctx sym]
352- (or (some-> ctx :env deref :types (get sym))
353- (let [sym-str (str sym)
352+ (let [env @(:env ctx)]
353+ (or (some-> env :types (get sym))
354+ (let [ns (utils/current-ns-name )
355+ imports (get-in env [:namespaces ns :imports ])]
356+ (some-> env :types (get (get imports sym))))
357+ (let [sym-str (str sym)
354358 last-dot (str/last-index-of sym-str " ." )
355359 class-name (if last-dot
356360 (subs sym-str (inc last-dot) (count sym-str))
357361 sym-str)
358362 namespace (if last-dot
359363 (symbol (subs sym-str 0 last-dot))
360364 (utils/current-ns-name ))]
361- (resolve-record-or-protocol-class ctx namespace (symbol class-name)))))
365+ (resolve-record-or-protocol-class ctx namespace (symbol class-name))))))
362366 ([ctx package class]
363367 (let [namespace (-> package str (str/replace " _" " -" ) symbol)]
364368 (when-let [sci-var (let [ns (get-in @(:env ctx) [:namespaces namespace])]
You can’t perform that action at this time.
0 commit comments