Skip to content

Commit 9d55d9f

Browse files
committed
Tightening code
1 parent 7bfb0bc commit 9d55d9f

File tree

3 files changed

+16
-8
lines changed

3 files changed

+16
-8
lines changed

src/clj/clojure/genclass.clj

+5-7
Original file line numberDiff line numberDiff line change
@@ -107,14 +107,12 @@
107107
(clojure.lang.Util/isPosDigit (name x))
108108
(-> x name (.charAt 0) int (- (int \0))))]
109109
(let [cn (namespace x)
110-
^Class pc (prim->class (symbol cn))
111-
classname (cond (some #{\.} cn) cn
112-
pc (-> pc Type/getType Type/.getDescriptor)
113-
:default (str "java.lang." cn))
114110
^Iterable dim-descr (repeat dim "[")]
115-
(if pc
116-
(str (String/join "" dim-descr) classname)
117-
(str (String/join "" dim-descr) "L" classname ";")))
111+
(if-let [^Class pc (clojure.lang.Compiler/primClass (symbol cn))]
112+
(str (String/join "" dim-descr) (-> pc Type/getType Type/.getDescriptor))
113+
(str (String/join "" dim-descr) "L"
114+
(if (some #{\.} cn) cn (str "java.lang." cn))
115+
";")))
118116
(str x)))
119117

120118
(defn- ^Class the-class [x]

src/jvm/clojure/lang/Compiler.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -9184,7 +9184,7 @@ static Class retType(Class tc, Class ret){
91849184
return tc;
91859185
}
91869186

9187-
static Class primClass(Symbol sym){
9187+
public static Class primClass(Symbol sym){
91889188
if(sym == null)
91899189
return null;
91909190
Class c = null;

test/clojure/test_clojure/genclass.clj

+10
Original file line numberDiff line numberDiff line change
@@ -149,3 +149,13 @@
149149
(visitSource [source debug] (.append sourceFile source)))]
150150
(.accept classReader sourceVisitor 0)
151151
(is (= "examples.clj" (str sourceFile)))))
152+
153+
(deftest array-descriptors->class
154+
(are [descr c] (= (#'clojure.core/the-class descr) c)
155+
"[Ljava.util.UUID;" java.util.UUID/1
156+
'String java.lang.String
157+
'String/1 java.lang.String/1
158+
'java.util.UUID java.util.UUID
159+
'java.util.UUID/2 java.util.UUID/2
160+
'int/1 int/1
161+
'boolean/9 boolean/9))

0 commit comments

Comments
 (0)