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 hidden or 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 hidden or 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 hidden or 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) |
Author
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.