|
167 | 167 | "Load a namespace and all of its dependencies into the evaluation environment. |
168 | 168 | The environment is responsible for ensuring that each namespace is loaded once and |
169 | 169 | only once." |
170 | | - ([repl-env sym] (load-namespace repl-env sym nil)) |
171 | | - ([repl-env sym opts] |
172 | | - (let [sym (if (and (seq? sym) |
173 | | - (= (first sym) 'quote)) |
174 | | - (second sym) |
175 | | - sym) |
| 170 | + ([repl-env ns] (load-namespace repl-env ns nil)) |
| 171 | + ([repl-env ns opts] |
| 172 | + (let [ns (if (and (seq? ns) |
| 173 | + (= (first ns) 'quote)) |
| 174 | + (second ns) |
| 175 | + ns) |
176 | 176 | ;; TODO: add pre-condition to source-on-disk, the |
177 | 177 | ;; source must supply at least :url - David |
178 | | - sources (cljsc/add-dependencies |
179 | | - (merge (env->opts repl-env) opts) |
180 | | - {:requires [(name sym)] :type :seed |
181 | | - :url (:uri (cljsc/source-for-namespace |
182 | | - sym env/*compiler*))}) |
183 | | - deps (->> sources |
184 | | - (remove (comp #{["goog"]} :provides)) |
185 | | - (remove (comp #{:seed} :type)) |
186 | | - (map #(select-keys % [:provides :url])))] |
| 178 | + sources (cljsc/add-dependencies |
| 179 | + (merge (env->opts repl-env) opts) |
| 180 | + {:requires [(name ns)] :type :seed |
| 181 | + :url (:uri (cljsc/source-for-namespace |
| 182 | + ns env/*compiler*))}) |
| 183 | + deps (->> sources |
| 184 | + (remove (comp #{["goog"]} :provides)) |
| 185 | + (remove (comp #{:seed} :type)) |
| 186 | + (map #(select-keys % [:provides :url])))] |
187 | 187 | (if (:output-dir opts) |
188 | 188 | ;; REPLs that read from :output-dir just need to add deps, |
189 | 189 | ;; environment will handle actual loading - David |
|
478 | 478 | (let [env (assoc env :ns (ana/get-namespace ana/*cljs-ns*))] |
479 | 479 | (evaluate-form repl-env env filename form)))))) |
480 | 480 |
|
481 | | -;; TODO: this should probably compile dependencies - David |
482 | | - |
483 | 481 | (defn load-file |
484 | 482 | ([repl-env f] (load-file repl-env f *repl-opts*)) |
485 | 483 | ([repl-env f opts] |
|
492 | 490 | (assoc opts |
493 | 491 | :output-file |
494 | 492 | (cljsc/src-file->target-file src)))] |
| 493 | + ;; need to load dependencies first |
| 494 | + (load-dependencies repl-env (:requires compiled) opts) |
495 | 495 | ;; make sure it's been analyzed, this is because if it's already compiled |
496 | 496 | ;; cljs.compiler/compile-file won't do anything, good for builds, |
497 | 497 | ;; but a bit annoying here |
|
0 commit comments