Skip to content

Commit 7ce8da3

Browse files
committed
now clj-reload works but not sci tests, IDeref for example
1 parent c96655a commit 7ce8da3

2 files changed

Lines changed: 10 additions & 5 deletions

File tree

src/sci/impl/evaluator.cljc

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
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
@@ -203,7 +203,8 @@
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)

src/sci/impl/records.cljc

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -349,16 +349,20 @@
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])]

0 commit comments

Comments
 (0)