Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 9d55d9f

Browse filesBrowse files
committed
Tightening code
1 parent 7bfb0bc commit 9d55d9f
Copy full SHA for 9d55d9f

File tree

Expand file treeCollapse file tree

3 files changed

+16
-8
lines changed
Filter options
Expand file treeCollapse file tree

3 files changed

+16
-8
lines changed

‎src/clj/clojure/genclass.clj

Copy file name to clipboardExpand all lines: src/clj/clojure/genclass.clj
+5-7Lines changed: 5 additions & 7 deletions
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

Copy file name to clipboardExpand all lines: src/jvm/clojure/lang/Compiler.java
+1-1Lines changed: 1 addition & 1 deletion
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

Copy file name to clipboardExpand all lines: test/clojure/test_clojure/genclass.clj
+10Lines changed: 10 additions & 0 deletions
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 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.