|
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