File tree 2 files changed +16
-1
lines changed
2 files changed +16
-1
lines changed Original file line number Diff line number Diff line change 350
350
(gen-eval-node (do (doseq [x butlast-body] (evalme x &b))
351
351
(evalme last-body &b))))))))
352
352
353
+
354
+ ; ; resolve class by name. put it in namespace. return class object
355
+ (defmethod seq->eval-node 'clojure.core /import* [_ _ [_ classname]]
356
+ (assert (string? classname))
357
+ (gen-eval-node
358
+ (if-let [cls (symbol->class (symbol classname))]
359
+ (doto cls (->> (.importClass *ns*))) ; ; nincs hozzaadva :scream:
360
+ (throw (new RuntimeException " Cannot import class." )))))
361
+
353
362
(defmethod seq->eval-node 'letfn* seq-eval-letfn [iden->idx recur-indices [_ bindings & bodies :as form]]
354
363
(let [promises (for [[k f] (partition 2 bindings)
355
364
:let [v (volatile! nil )]]
615
624
(if (class? parent)
616
625
(gen-eval-node (clojure.lang.Reflector/getStaticField ^Class parent (name expr)))
617
626
(throw (ex-info (str " Cannot access symbol! " expr) {:symbol expr})))
618
- (throw (ex-info (str " Cannot resolve symbol! " expr) {:symbol expr}))))))
627
+ (if (class? (resolve expr))
628
+ (let [cls (resolve expr)] (gen-eval-node cls))
629
+ (throw (ex-info (str " Cannot resolve symbol! " expr) {:symbol expr})))))))
619
630
620
631
(defn- coll->eval-node [fmap sym->iden expr]
621
632
(let [elem-nodes (into [] (fmap (partial ->eval-node sym->iden nil )) expr)
Original file line number Diff line number Diff line change 1
1
(ns clojure-core-test
2
+ (:import clojure.lang.Var)
2
3
(:require [clojure.data.xml]
3
4
[clojure.test :refer :all ]))
4
5
6
+ (deftest test-imported
7
+ (is (= Var clojure.lang.Var)))
8
+
5
9
(deftest test-numbers
6
10
(clojure.test/is (= 2 (inc 1 )))
7
11
(clojure.test/is (= 0 (dec 1 ))))
You can’t perform that action at this time.
0 commit comments