diff options
author | Steve Gilardi <scgilardi@gmail.com> | 2009-07-13 11:35:12 -0400 |
---|---|---|
committer | Chouser <chouser@n01se.net> | 2009-07-26 21:22:54 -0400 |
commit | a1b4a33bb8ccf739c481754fc563117ed3604c75 (patch) | |
tree | 261f460e7dbb559dbc74ae0de798fb3344df1f34 | |
parent | 994f118c56bb3139f87093a6ec44eb8c04acbdaf (diff) |
fixed keyword ctor, added tests, fix #154
Signed-off-by: Chouser <chouser@n01se.net>
-rw-r--r-- | src/clj/clojure/core.clj | 8 | ||||
-rw-r--r-- | src/jvm/clojure/lang/Keyword.java | 4 | ||||
-rw-r--r-- | test/clojure/test_clojure/reader.clj | 13 |
3 files changed, 20 insertions, 5 deletions
diff --git a/src/clj/clojure/core.clj b/src/clj/clojure/core.clj index 7b4bb4f5..50e4d584 100644 --- a/src/clj/clojure/core.clj +++ b/src/clj/clojure/core.clj @@ -355,14 +355,14 @@ (defn symbol "Returns a Symbol with the given namespace and name." - ([name] (if (symbol? name) name (. clojure.lang.Symbol (intern name)))) - ([ns name] (. clojure.lang.Symbol (intern ns name)))) + ([name] (if (symbol? name) name (clojure.lang.Symbol/intern name))) + ([ns name] (clojure.lang.Symbol/intern ns name))) (defn keyword "Returns a Keyword with the given namespace and name. Do not use : in the keyword strings, it will be added automatically." - ([name] (if (keyword? name) name (. clojure.lang.Keyword (intern nil name)))) - ([ns name] (. clojure.lang.Keyword (intern ns name)))) + ([name] (if (keyword? name) name (clojure.lang.Keyword/intern name))) + ([ns name] (clojure.lang.Keyword/intern ns name))) (defn gensym "Returns a new symbol with a unique name. If a prefix string is diff --git a/src/jvm/clojure/lang/Keyword.java b/src/jvm/clojure/lang/Keyword.java index fcb814f6..9b5aea9a 100644 --- a/src/jvm/clojure/lang/Keyword.java +++ b/src/jvm/clojure/lang/Keyword.java @@ -30,6 +30,10 @@ public static Keyword intern(String ns, String name){ return intern(Symbol.intern(ns, name)); } +public static Keyword intern(String nsname){ + return intern(Symbol.intern(nsname)); +} + private Keyword(Symbol sym){ this.sym = sym; } diff --git a/test/clojure/test_clojure/reader.clj b/test/clojure/test_clojure/reader.clj index b04543a9..20b1bfac 100644 --- a/test/clojure/test_clojure/reader.clj +++ b/test/clojure/test_clojure/reader.clj @@ -222,7 +222,18 @@ ;; Keywords -(deftest t-Keywords) +(deftest t-Keywords + (is (= :abc (keyword "abc"))) + (is (= :abc (keyword 'abc))) + (is (= :*+!-_? (keyword "*+!-_?"))) + (is (= :abc:def:ghi (keyword "abc:def:ghi"))) + (is (= :abc/def (keyword "abc" "def"))) + (is (= :abc/def (keyword 'abc/def))) + (is (= :abc.def/ghi (keyword "abc.def" "ghi"))) + (is (= :abc/def.ghi (keyword "abc" "def.ghi"))) + (is (= :abc:def/ghi:jkl.mno (keyword "abc:def" "ghi:jkl.mno"))) + (is (instance? clojure.lang.Keyword :alphabet)) + ) ;; Lists |