Created
April 7, 2012 22:49
-
-
Save timmc/2332669 to your computer and use it in GitHub Desktop.
Return type hinting, imports, and namespace boundaries
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(ns clj.core | |
"Relying namespace." | |
(:require [clj.util :as u])) | |
(defn config-dir | |
"Call " | |
[conf] | |
(.getCanonicalFile (u/make-file))) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(ns clj.util | |
"Common utilities." | |
(:import java.io.File)) | |
(defn make-file | |
"Type-hinted to return a File." | |
^File [] | |
(File. "/etc")) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
timmc@thunk:~/tmp/clj$ lein test | |
Exception in thread "main" java.lang.IllegalArgumentException: Unable to resolve classname: File, compiling:(clj/core.clj:8) | |
at clojure.lang.Compiler.analyzeSeq(Compiler.java:6416) | |
at clojure.lang.Compiler.analyze(Compiler.java:6216) | |
at clojure.lang.Compiler.analyzeSeq(Compiler.java:6397) | |
at clojure.lang.Compiler.analyze(Compiler.java:6216) | |
at clojure.lang.Compiler.analyze(Compiler.java:6177) | |
at clojure.lang.Compiler$BodyExpr$Parser.parse(Compiler.java:5572) | |
at clojure.lang.Compiler$FnMethod.parse(Compiler.java:5008) | |
at clojure.lang.Compiler$FnExpr.parse(Compiler.java:3629) | |
at clojure.lang.Compiler.analyzeSeq(Compiler.java:6407) | |
at clojure.lang.Compiler.analyze(Compiler.java:6216) | |
at clojure.lang.Compiler.analyzeSeq(Compiler.java:6397) | |
at clojure.lang.Compiler.analyze(Compiler.java:6216) | |
at clojure.lang.Compiler.access$100(Compiler.java:37) | |
at clojure.lang.Compiler$DefExpr$Parser.parse(Compiler.java:492) | |
at clojure.lang.Compiler.analyzeSeq(Compiler.java:6409) | |
at clojure.lang.Compiler.analyze(Compiler.java:6216) | |
at clojure.lang.Compiler.analyze(Compiler.java:6177) | |
at clojure.lang.Compiler.eval(Compiler.java:6469) | |
at clojure.lang.Compiler.load(Compiler.java:6902) | |
at clojure.lang.RT.loadResourceScript(RT.java:357) | |
at clojure.lang.RT.loadResourceScript(RT.java:348) | |
at clojure.lang.RT.load(RT.java:427) | |
at clojure.lang.RT.load(RT.java:398) | |
at clojure.core$load$fn__4610.invoke(core.clj:5386) | |
at clojure.core$load.doInvoke(core.clj:5385) | |
at clojure.lang.RestFn.invoke(RestFn.java:408) | |
at clojure.core$load_one.invoke(core.clj:5200) | |
at clojure.core$load_lib.doInvoke(core.clj:5237) | |
at clojure.lang.RestFn.applyTo(RestFn.java:142) | |
at clojure.core$apply.invoke(core.clj:602) | |
at clojure.core$load_libs.doInvoke(core.clj:5271) | |
at clojure.lang.RestFn.applyTo(RestFn.java:137) | |
at clojure.core$apply.invoke(core.clj:604) | |
at clojure.core$use.doInvoke(core.clj:5363) | |
at clojure.lang.RestFn.invoke(RestFn.java:408) | |
at clj.test.core$eval72$loading__4505__auto____73.invoke(core.clj:1) | |
at clj.test.core$eval72.invoke(core.clj:1) | |
at clojure.lang.Compiler.eval(Compiler.java:6465) | |
at clojure.lang.Compiler.eval(Compiler.java:6455) | |
at clojure.lang.Compiler.load(Compiler.java:6902) | |
at clojure.lang.RT.loadResourceScript(RT.java:357) | |
at clojure.lang.RT.loadResourceScript(RT.java:348) | |
at clojure.lang.RT.load(RT.java:427) | |
at clojure.lang.RT.load(RT.java:398) | |
at clojure.core$load$fn__4610.invoke(core.clj:5386) | |
at clojure.core$load.doInvoke(core.clj:5385) | |
at clojure.lang.RestFn.invoke(RestFn.java:408) | |
at clojure.core$load_one.invoke(core.clj:5200) | |
at clojure.core$load_lib.doInvoke(core.clj:5237) | |
at clojure.lang.RestFn.applyTo(RestFn.java:142) | |
at clojure.core$apply.invoke(core.clj:602) | |
at clojure.core$load_libs.doInvoke(core.clj:5271) | |
at clojure.lang.RestFn.applyTo(RestFn.java:137) | |
at clojure.core$apply.invoke(core.clj:602) | |
at clojure.core$require.doInvoke(core.clj:5352) | |
at clojure.lang.RestFn.invoke(RestFn.java:421) | |
at user$eval40.invoke(NO_SOURCE_FILE:1) | |
at clojure.lang.Compiler.eval(Compiler.java:6465) | |
at clojure.lang.Compiler.eval(Compiler.java:6455) | |
at clojure.lang.Compiler.eval(Compiler.java:6431) | |
at clojure.core$eval.invoke(core.clj:2795) | |
at clojure.main$eval_opt.invoke(main.clj:296) | |
at clojure.main$initialize.invoke(main.clj:315) | |
at clojure.main$null_opt.invoke(main.clj:348) | |
at clojure.main$main.doInvoke(main.clj:426) | |
at clojure.lang.RestFn.invoke(RestFn.java:421) | |
at clojure.lang.Var.invoke(Var.java:405) | |
at clojure.lang.AFn.applyToHelper(AFn.java:163) | |
at clojure.lang.Var.applyTo(Var.java:518) | |
at clojure.main.main(main.java:37) | |
Caused by: java.lang.IllegalArgumentException: Unable to resolve classname: File | |
at clojure.lang.Compiler$HostExpr.tagToClass(Compiler.java:1003) | |
at clojure.lang.Compiler$InvokeExpr.getJavaClass(Compiler.java:3446) | |
at clojure.lang.Compiler$HostExpr$Parser.parse(Compiler.java:885) | |
at clojure.lang.Compiler.analyzeSeq(Compiler.java:6409) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
OK, this only seems to happen with arglist hinting, not fn name hinting.