From 796225fe0aeca73f606d8a5e742b945024d11e69 Mon Sep 17 00:00:00 2001 From: Andy Fingerhut Date: Sun, 28 Oct 2012 20:07:56 -0700 Subject: [PATCH] NREPL-35: Eliminate several uses of reflection in tools.nrepl --- src/main/clojure/clojure/tools/nrepl.clj | 4 ++-- src/main/clojure/clojure/tools/nrepl/cmdline.clj | 2 +- src/main/clojure/clojure/tools/nrepl/helpers.clj | 11 ++++++----- .../clojure/tools/nrepl/middleware/interruptible_eval.clj | 4 ++-- src/main/clojure/clojure/tools/nrepl/middleware/session.clj | 7 ++++--- src/main/clojure/clojure/tools/nrepl/misc.clj | 4 ++-- src/main/clojure/clojure/tools/nrepl/server.clj | 2 +- 7 files changed, 18 insertions(+), 16 deletions(-) diff --git a/src/main/clojure/clojure/tools/nrepl.clj b/src/main/clojure/clojure/tools/nrepl.clj index fed536d..7120f3c 100644 --- a/src/main/clojure/clojure/tools/nrepl.clj +++ b/src/main/clojure/clojure/tools/nrepl.clj @@ -181,13 +181,13 @@ (defn- socket-info [x] - (let [uri (to-uri x) + (let [^java.net.URI uri (to-uri x) port (.getPort uri)] (merge {:host (.getHost uri)} (when (pos? port) {:port port})))) -(def ^{:private false} uri-scheme #(-> (to-uri %) .getScheme .toLowerCase)) +(def ^{:private false} uri-scheme #(-> ^java.net.URI (to-uri %) .getScheme .toLowerCase)) (defmulti url-connect "Connects to an nREPL endpoint identified by the given URL/URI. Valid diff --git a/src/main/clojure/clojure/tools/nrepl/cmdline.clj b/src/main/clojure/clojure/tools/nrepl/cmdline.clj index d5a4109..32d6101 100644 --- a/src/main/clojure/clojure/tools/nrepl/cmdline.clj +++ b/src/main/clojure/clojure/tools/nrepl/cmdline.clj @@ -76,7 +76,7 @@ https://github.com/trptcolin/reply/" [& args] (let [[options args] (split-args args) server (start-server :port (Integer/parseInt (or (options "--port") "0"))) - ssocket (:ss @server)] + ^java.net.ServerSocket ssocket (:ss @server)] (when-let [ack-port (options "--ack")] (binding [*out* *err*] (println (format "ack'ing my port %d to other server running on port %s" diff --git a/src/main/clojure/clojure/tools/nrepl/helpers.clj b/src/main/clojure/clojure/tools/nrepl/helpers.clj index 40c4d18..3060e1e 100644 --- a/src/main/clojure/clojure/tools/nrepl/helpers.clj +++ b/src/main/clojure/clojure/tools/nrepl/helpers.clj @@ -31,13 +31,14 @@ the source-root-relative path of the source file, and the name of the file. e.g.: (load-file-command \"…code here…\" \"some/ns/name/file.clj\" \"file.clj\")" - ([f] (load-file-command f nil)) - ([f source-root] - (let [abspath (if (string? f) f (.getAbsolutePath f)) + ([^File f] (load-file-command f nil)) + ([^File f source-root] + (let [^String abspath (if (string? f) f (.getAbsolutePath f)) + ^String source-root (cond (nil? source-root) "" (string? source-root) source-root - (instance? File source-root) (.getAbsolutePath source-root))] + (instance? File source-root) (.getAbsolutePath ^File source-root))] (load-file-command (slurp abspath :encoding "UTF-8") (if (and (seq source-root) (.startsWith abspath source-root)) @@ -47,4 +48,4 @@ abspath) (-> abspath File. .getName)))) ([code file-path file-name] - (load-file/load-file-code code file-path file-name))) \ No newline at end of file + (load-file/load-file-code code file-path file-name))) diff --git a/src/main/clojure/clojure/tools/nrepl/middleware/interruptible_eval.clj b/src/main/clojure/clojure/tools/nrepl/middleware/interruptible_eval.clj index 7b68cba..a3e75e5 100644 --- a/src/main/clojure/clojure/tools/nrepl/middleware/interruptible_eval.clj +++ b/src/main/clojure/clojure/tools/nrepl/middleware/interruptible_eval.clj @@ -124,7 +124,7 @@ (declare run-next) (defn- run-next* - [session executor] + [session ^ThreadPoolExecutor executor] (let [qa (-> session meta :queue)] (loop [] (let [q @qa @@ -143,7 +143,7 @@ (defn- queue-eval "Queues the function for the given session." - [session executor f] + [session ^ThreadPoolExecutor executor f] (let [qa (-> session prep-session meta :queue)] (loop [] (let [q @qa] diff --git a/src/main/clojure/clojure/tools/nrepl/middleware/session.clj b/src/main/clojure/clojure/tools/nrepl/middleware/session.clj index 5804eb2..a70bf2f 100644 --- a/src/main/clojure/clojure/tools/nrepl/middleware/session.clj +++ b/src/main/clojure/clojure/tools/nrepl/middleware/session.clj @@ -27,7 +27,8 @@ given transport in messages specifying the given session-id. `channel-type` should be :out or :err, as appropriate." [channel-type session-id transport] - (let [buf (clojure.tools.nrepl.StdOutBuffer.)] + (let [^clojure.tools.nrepl.StdOutBuffer + buf (clojure.tools.nrepl.StdOutBuffer.)] (PrintWriter. (proxy [Writer] [] (close [] (.flush ^Writer this)) (write [& [x off len]] @@ -35,8 +36,8 @@ (cond (number? x) (.append buf (char x)) (not off) (.append buf x) - (instance? CharSequence x) (.append buf ^CharSequence x off len) - :else (.append buf ^chars x off len)) + (instance? CharSequence x) (.append buf ^CharSequence x ^int off ^int len) + :else (.append buf ^chars x ^int off ^int len)) (when (<= *out-limit* (.length buf)) (.flush ^Writer this)))) (flush [] diff --git a/src/main/clojure/clojure/tools/nrepl/misc.clj b/src/main/clojure/clojure/tools/nrepl/misc.clj index 0d0e3e3..9c52e84 100644 --- a/src/main/clojure/clojure/tools/nrepl/misc.clj +++ b/src/main/clojure/clojure/tools/nrepl/misc.clj @@ -14,7 +14,7 @@ msgs (if ex msgs (cons ex msgs))] (binding [*out* *err*] (apply println "ERROR:" msgs) - (when ex (.printStackTrace ex))))))) + (when ex (.printStackTrace ^Throwable ex))))))) (defmacro returning "Executes `body`, returning `x`." @@ -52,4 +52,4 @@ (when session {:session (if (instance? clojure.lang.AReference session) (-> session meta :id) session)}))] - (merge basis response))) \ No newline at end of file + (merge basis response))) diff --git a/src/main/clojure/clojure/tools/nrepl/server.clj b/src/main/clojure/clojure/tools/nrepl/server.clj index 87cb03d..c0277ec 100644 --- a/src/main/clojure/clojure/tools/nrepl/server.clj +++ b/src/main/clojure/clojure/tools/nrepl/server.clj @@ -123,7 +123,7 @@ The port that the server is open on is available in the :port slot of the server map (useful if the :port option is 0 or was left unspecified." [& {:keys [port bind transport-fn handler ack-port greeting-fn] :or {port 0}}] - (let [bind-addr (if bind (InetSocketAddress. bind port) (InetSocketAddress. port)) + (let [bind-addr (if bind (InetSocketAddress. bind port) (InetSocketAddress. ^int port)) ss (ServerSocket. port 0 (.getAddress bind-addr)) server (assoc (Server. ss -- 1.8.0