Skip to content

Commit f45746e

Browse files
alexander-yakushevbbatsov
authored andcommitted
[java] Don't delay loading parser-next namespace, move exception handling
1 parent bc61942 commit f45746e

File tree

3 files changed

+17
-41
lines changed

3 files changed

+17
-41
lines changed

src/orchard/java.clj

Lines changed: 8 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -47,40 +47,19 @@
4747
(atom nil))
4848

4949
(def ^:private parser-next-source-info
50-
(delay
51-
(when (>= misc/java-api-version 11)
52-
(try (let [f (requiring-resolve 'orchard.java.parser-next/source-info)]
53-
;; We try parsing LruMap.java as a litmus test for whether the
54-
;; parser works. We can be sure that LruMap.java is on the
55-
;; classpath because we pack it into the final Orchard jar.
56-
(when (f `LruMap)
57-
f))
58-
(catch Throwable e
59-
(reset! parser-exception e)
60-
nil)))))
50+
(when (>= misc/java-api-version 11)
51+
(requiring-resolve 'orchard.java.parser-next/source-info)))
6152

6253
(defn source-info
6354
"Try to return class info from its parsed source if the source is available.
6455
Returns nil in case of any errors."
6556
([class-symbol]
6657
;; Arity for backward compatibility.
67-
(try
68-
(let [klass (resolve class-symbol)
69-
url (some-> klass src-files/class->source-file-url)]
70-
(when url
71-
(source-info klass url)))
72-
(catch Throwable e
73-
(reset! parser-exception e)
74-
(when (= (System/getProperty "orchard.internal.test-suite-running") "true")
75-
(throw e)))))
58+
(when parser-next-source-info
59+
(parser-next-source-info class-symbol)))
7660
([klass source-url]
77-
(try
78-
(when-let [f @parser-next-source-info]
79-
(f klass source-url))
80-
(catch Throwable e
81-
(reset! parser-exception e)
82-
(when (= (System/getProperty "orchard.internal.test-suite-running") "true")
83-
(throw e))))))
61+
(when parser-next-source-info
62+
(parser-next-source-info klass source-url))))
8463

8564
;; As of Java 11, Javadoc URLs begin with the module name.
8665
(defn module-name
@@ -285,7 +264,8 @@
285264
:file-url source-file-url
286265
:resource relative-source-path})
287266
(when (and *analyze-sources* source-file-url)
288-
(source-info c source-file-url))
267+
(try (source-info c source-file-url)
268+
(catch Exception _)))
289269
{:name (-> c .getSimpleName symbol)
290270
:class (-> c .getName symbol)
291271
:package package

src/orchard/java/parser_next.clj

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -97,15 +97,14 @@
9797
(getSupportedOptions [_this]
9898
#{})))
9999
out (StringWriter.) ; discard compiler messages
100-
opts (apply conj ["--show-members" "private"
101-
"--show-types" "private"
102-
"--show-packages" "all"
103-
"--show-module-contents" "all"
104-
"-quiet"]
105-
(when module
106-
["--patch-module" (str module "=" tmpdir)]))
107-
slurped (slurp url)
108-
_ (spit tmpfile slurped)
100+
opts (concat ["--show-members" "private"
101+
"--show-types" "private"
102+
"--show-packages" "all"
103+
"--show-module-contents" "all"
104+
"-quiet"]
105+
(when module
106+
["--patch-module" (str module "=" tmpdir)]))
107+
_ (spit tmpfile (slurp url))
109108
task (.getTask compiler out nil nil doclet opts sources)]
110109
(try
111110
(if (false? (.call ^DocumentationTool$DocumentationTask task))
@@ -428,7 +427,7 @@
428427
([class-sym]
429428
;; This arity is left for backward compatibility.
430429
(let [klass (resolve class-sym)
431-
src-url (src-files/class->source-file-url klass)]
430+
src-url (some-> klass src-files/class->source-file-url)]
432431
(when src-url
433432
(source-info klass src-url))))
434433
([^Class klass, source-url]

test/orchard/info_test.clj

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,10 @@
55
[clojure.string :as string :refer [replace-first]]
66
[clojure.test :refer [are deftest is testing use-fixtures]]
77
[orchard.info :as info]
8-
[orchard.java :as java]
98
[orchard.misc :as misc]
109
[orchard.test-ns]
1110
[orchard.test.util :as util]))
1211

13-
(java/source-info 'mx.cider.orchard.LruMap) ;; make tests more deterministic
14-
1512
(def cljs-available?
1613
(let [sym 'orchard.cljs.test-env
1714
fname (-> sym str (string/replace "." "/") (string/replace "-" "_") (str ".cljc"))]

0 commit comments

Comments
 (0)