Skip to content

Instantly share code, notes, and snippets.

@thheller
Last active December 14, 2015 14:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save thheller/5103320 to your computer and use it in GitHub Desktop.
Save thheller/5103320 to your computer and use it in GitHub Desktop.
unhelpful cljs compiler exception
clojure.lang.ExceptionInfo: failed compiling file:src/cljs-admin/cms/admin/app.cljs
core.clj:4327 clojure.core/ex-info
compiler.clj:848 cljs.compiler/compile-file
compiler.clj:908 cljs.compiler/compile-root
closure.clj:374 cljs.closure/compile-dir
closure.clj:406 cljs.closure/eval1542[fn]
closure.clj:276 cljs.closure/eval1467[fn]
closure.clj:420 cljs.closure/eval1529[fn]
closure.clj:276 cljs.closure/eval1467[fn]
compiler.clj:43 cljsbuild.compiler.SourcePaths/fn
core.clj:2485 clojure.core/map[fn]
LazySeq.java:42 clojure.lang.LazySeq.sval
LazySeq.java:60 clojure.lang.LazySeq.seq
RT.java:484 clojure.lang.RT.seq
core.clj:133 clojure.core/seq
core.clj:617 clojure.core/apply
core.clj:2514 clojure.core/mapcat
RestFn.java:423 clojure.lang.RestFn.invoke
compiler.clj:43 cljsbuild.compiler/cljsbuild.compiler.SourcePaths
closure.clj:900 cljs.closure/build
compiler.clj:57 cljsbuild.compiler/compile-cljs[fn]
compiler.clj:56 cljsbuild.compiler/compile-cljs
compiler.clj:140 cljsbuild.compiler/run-compiler
NO_SOURCE_FILE:1 user/eval2029[fn]
LazySeq.java:42 clojure.lang.LazySeq.sval
LazySeq.java:60 clojure.lang.LazySeq.seq
RT.java:484 clojure.lang.RT.seq
core.clj:133 clojure.core/seq
core.clj:2780 clojure.core/dorun
core.clj:2796 clojure.core/doall
NO_SOURCE_FILE:1 user/eval2029[fn]
NO_SOURCE_FILE:1 user/eval2029
Compiler.java:6619 clojure.lang.Compiler.eval
Compiler.java:6609 clojure.lang.Compiler.eval
Compiler.java:6582 clojure.lang.Compiler.eval
core.clj:2852 clojure.core/eval
main.clj:308 clojure.main/eval-opt
main.clj:327 clojure.main/initialize
main.clj:362 clojure.main/null-opt
main.clj:440 clojure.main/main[fn]
main.clj:437 clojure.main/main
RestFn.java:421 clojure.lang.RestFn.invoke
Var.java:419 clojure.lang.Var.invoke
AFn.java:163 clojure.lang.AFn.applyToHelper
Var.java:532 clojure.lang.Var.applyTo
main.java:37 clojure.main.main
Caused by: clojure.lang.LispReader$ReaderException: java.lang.RuntimeException: Unmatched delimiter: ]
LispReader.java:220 clojure.lang.LispReader.read
core.clj:3407 clojure.core/read
core.clj:3405 clojure.core/read
compiler.clj:752 cljs.compiler/forms-seq[fn]
compiler.clj:752 cljs.compiler/forms-seq
compiler.clj:753 cljs.compiler/forms-seq[fn]
LazySeq.java:42 clojure.lang.LazySeq.sval
LazySeq.java:60 clojure.lang.LazySeq.seq
RT.java:484 clojure.lang.RT.seq
core.clj:133 clojure.core/seq
compiler.clj:808 cljs.compiler/parse-ns[fn]
compiler.clj:807 cljs.compiler/parse-ns
compiler.clj:846 cljs.compiler/compile-file
Caused by: java.lang.RuntimeException: Unmatched delimiter: ]
Util.java:219 clojure.lang.Util.runtimeException
LispReader.java:1109 clojure.lang.LispReader$UnmatchedDelimiterReader.invoke
LispReader.java:1148 clojure.lang.LispReader.readDelimitedList
LispReader.java:982 clojure.lang.LispReader$ListReader.invoke
LispReader.java:1148 clojure.lang.LispReader.readDelimitedList
LispReader.java:982 clojure.lang.LispReader$ListReader.invoke
LispReader.java:1148 clojure.lang.LispReader.readDelimitedList
LispReader.java:982 clojure.lang.LispReader$ListReader.invoke
LispReader.java:1148 clojure.lang.LispReader.readDelimitedList
LispReader.java:982 clojure.lang.LispReader$ListReader.invoke
LispReader.java:185 clojure.lang.LispReader.read
From ef146d4a7351fb676d84005cc1138e9368002b11 Mon Sep 17 00:00:00 2001
From: Thomas Heller <info@zilence.net>
Date: Wed, 6 Mar 2013 22:39:39 +0100
Subject: [PATCH] wrap compile-file in try/catch
when compiling a directory via compile-dir and one
file fails to compile, it can be kinda hard to track
down which file actually failed to compile.
---
src/clj/cljs/compiler.clj | 11 +++++++----
1 files changed, 7 insertions(+), 4 deletions(-)
diff --git a/src/clj/cljs/compiler.clj b/src/clj/cljs/compiler.clj
index 0ae2495..0d2138b 100644
--- a/src/clj/cljs/compiler.clj
+++ b/src/clj/cljs/compiler.clj
@@ -839,10 +839,13 @@
(let [src-file (io/file src)
dest-file (io/file dest)]
(if (.exists src-file)
- (if (requires-compilation? src-file dest-file)
- (do (mkdirs dest-file)
- (compile-file* src-file dest-file))
- (parse-ns src-file dest-file))
+ (try
+ (if (requires-compilation? src-file dest-file)
+ (do (mkdirs dest-file)
+ (compile-file* src-file dest-file))
+ (parse-ns src-file dest-file))
+ (catch Exception e
+ (throw (ex-info (str "failed compiling file:" src) {:file src} e))))
(throw (java.io.FileNotFoundException. (str "The file " src " does not exist.")))))))
(comment
--
1.7.6
clojure.lang.LispReader$ReaderException: java.lang.RuntimeException: Unmatched delimiter: ]
LispReader.java:220 clojure.lang.LispReader.read
core.clj:3407 clojure.core/read
core.clj:3405 clojure.core/read
compiler.clj:752 cljs.compiler/forms-seq[fn]
compiler.clj:752 cljs.compiler/forms-seq
compiler.clj:753 cljs.compiler/forms-seq[fn]
LazySeq.java:42 clojure.lang.LazySeq.sval
LazySeq.java:60 clojure.lang.LazySeq.seq
RT.java:484 clojure.lang.RT.seq
core.clj:133 clojure.core/seq
compiler.clj:808 cljs.compiler/parse-ns[fn]
compiler.clj:807 cljs.compiler/parse-ns
compiler.clj:845 cljs.compiler/compile-file
compiler.clj:905 cljs.compiler/compile-root
closure.clj:374 cljs.closure/compile-dir
closure.clj:406 cljs.closure/eval1542[fn]
closure.clj:276 cljs.closure/eval1467[fn]
closure.clj:420 cljs.closure/eval1529[fn]
closure.clj:276 cljs.closure/eval1467[fn]
compiler.clj:43 cljsbuild.compiler.SourcePaths/fn
core.clj:2485 clojure.core/map[fn]
LazySeq.java:42 clojure.lang.LazySeq.sval
LazySeq.java:60 clojure.lang.LazySeq.seq
RT.java:484 clojure.lang.RT.seq
core.clj:133 clojure.core/seq
core.clj:617 clojure.core/apply
core.clj:2514 clojure.core/mapcat
RestFn.java:423 clojure.lang.RestFn.invoke
compiler.clj:43 cljsbuild.compiler/cljsbuild.compiler.SourcePaths
closure.clj:900 cljs.closure/build
compiler.clj:57 cljsbuild.compiler/compile-cljs[fn]
compiler.clj:56 cljsbuild.compiler/compile-cljs
compiler.clj:140 cljsbuild.compiler/run-compiler
NO_SOURCE_FILE:1 user/eval2029[fn]
LazySeq.java:42 clojure.lang.LazySeq.sval
LazySeq.java:60 clojure.lang.LazySeq.seq
RT.java:484 clojure.lang.RT.seq
core.clj:133 clojure.core/seq
core.clj:2780 clojure.core/dorun
core.clj:2796 clojure.core/doall
NO_SOURCE_FILE:1 user/eval2029[fn]
NO_SOURCE_FILE:1 user/eval2029
Compiler.java:6619 clojure.lang.Compiler.eval
Compiler.java:6609 clojure.lang.Compiler.eval
Compiler.java:6582 clojure.lang.Compiler.eval
core.clj:2852 clojure.core/eval
main.clj:308 clojure.main/eval-opt
main.clj:327 clojure.main/initialize
main.clj:362 clojure.main/null-opt
main.clj:440 clojure.main/main[fn]
main.clj:437 clojure.main/main
RestFn.java:421 clojure.lang.RestFn.invoke
Var.java:419 clojure.lang.Var.invoke
AFn.java:163 clojure.lang.AFn.applyToHelper
Var.java:532 clojure.lang.Var.applyTo
main.java:37 clojure.main.main
Caused by: java.lang.RuntimeException: Unmatched delimiter: ]
Util.java:219 clojure.lang.Util.runtimeException
LispReader.java:1109 clojure.lang.LispReader$UnmatchedDelimiterReader.invoke
LispReader.java:1148 clojure.lang.LispReader.readDelimitedList
LispReader.java:982 clojure.lang.LispReader$ListReader.invoke
LispReader.java:1148 clojure.lang.LispReader.readDelimitedList
LispReader.java:982 clojure.lang.LispReader$ListReader.invoke
LispReader.java:1148 clojure.lang.LispReader.readDelimitedList
LispReader.java:982 clojure.lang.LispReader$ListReader.invoke
LispReader.java:1148 clojure.lang.LispReader.readDelimitedList
LispReader.java:982 clojure.lang.LispReader$ListReader.invoke
LispReader.java:185 clojure.lang.LispReader.read
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment