We're updating the issue view to help you get more done. 

Report line,column, and source in defmacro errors

Description

Summary This patch grew out of a desire to have defn report filename and line numbers for parameter declaration errors, but the approach chosen does something more broad, and likely very useful: Anytime defmacro is throwing a non-CompilerException, wrap it in a CompilerException that captures LINE, COLUMN, and SOURCE. Presumably this would improve reporting for many other macros as well. The patch also tweaks errors messages to add quotes, e.g. "problem" instead of problem, which seems useful.

Screened By Stu
Patch CLJ-1169-code-and-test-1.patch, which aggregates the work in other patches to a single patch that works on current master.

When mistyping parameter list in defn declaration, e.g.

1 2 (defn test (some-error))

error message shows name of parameter (without quotes), but not function name, filename or line number:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 Exception in thread "main" java.lang.IllegalArgumentException: Parameter declaration some-error should be a vector at clojure.core$assert_valid_fdecl.invoke(core.clj:6567) at clojure.core$sigs.invoke(core.clj:220) at clojure.core$defn.doInvoke(core.clj:294) at clojure.lang.RestFn.invoke(RestFn.java:467) at clojure.lang.Var.invoke(Var.java:427) at clojure.lang.AFn.applyToHelper(AFn.java:172) at clojure.lang.Var.applyTo(Var.java:532) at clojure.lang.Compiler.macroexpand1(Compiler.java:6366) at clojure.lang.Compiler.macroexpand(Compiler.java:6427) at clojure.lang.Compiler.eval(Compiler.java:6495) at clojure.lang.Compiler.load(Compiler.java:6952) at clojure.lang.Compiler.loadFile(Compiler.java:6912) at clojure.main$load_script.invoke(main.clj:283) at clojure.main$init_opt.invoke(main.clj:288) at clojure.main$initialize.invoke(main.clj:316) at clojure.main$null_opt.invoke(main.clj:349) at clojure.main$main.doInvoke(main.clj:427) at clojure.lang.RestFn.invoke(RestFn.java:421) at clojure.lang.Var.invoke(Var.java:419) at clojure.lang.AFn.applyToHelper(AFn.java:163) at clojure.lang.Var.applyTo(Var.java:532) at clojure.main.main(main.java:37)

Environment

Windows

Status

Assignee

Unassigned

Reporter

Yury Matylitski

Labels

Approval

Ok

Patch

Code

Fix versions

Affects versions

Release 1.5
Release 1.4

Priority

Major