After introducing clojure to co-workers on Friday, one of them tried the ClojureScript quick start.
He got this far: $ bin/cljsc hello.cljs '{:optimizations :advanced}' > hello.js Exception in thread "main" java.lang.NullPointerException at clojure.java.io$as_relative_path.invoke(io.clj:391) at clojure.java.io$file.invoke(io.clj:403) at cljs.closure$compile_file.invoke(closure.clj:279) at cljs.closure$eval1164$fn__1165.invoke(closure.clj:322) at cljs.closure$eval1095$fn__1096$G__1086__1103.invoke(closure.clj:202) at cljs.closure$eval1151$fn__1152.invoke(closure.clj:335) at cljs.closure$eval1095$fn__1096$G__1086__1103.invoke(closure.clj:202) at cljs.closure$build.invoke(closure.clj:725) at user$eval1293.invoke(cljsc.clj:21) at clojure.lang.Compiler.eval(Compiler.java:6406) at clojure.lang.Compiler.load(Compiler.java:6843) at clojure.lang.Compiler.loadFile(Compiler.java:6804) at clojure.main$load_script.invoke(main.clj:282) at clojure.main$script_opt.invoke(main.clj:342) at clojure.main$main.doInvoke(main.clj:426) at clojure.lang.RestFn.invoke(RestFn.java:457) at clojure.lang.Var.invoke(Var.java:413) at clojure.lang.AFn.applyToHelper(AFn.java:172) at clojure.lang.Var.applyTo(Var.java:518) at clojure.main.main(main.java:37) That was embarrassing. Looks like a null check was dropped in this commit be81580202ba2347ba1fea1535118b8131cfab15<https://github.com/clojure/clojurescript/commit/be81580202ba2347ba1fea1535118b8131cfab15#L0L222> . So, I step back one revision to 7f70ce1e07fd36b3dbf1696807e5b7a83f7283cf and try again... $ bin/cljsc hello.cljs '{:optimizations :advanced}' > hello.js Exception in thread "main" java.lang.RuntimeException: No such var: comp/dependency-order-visit, compiling:(cljs/closure.clj:373) at clojure.lang.Compiler.analyze(Compiler.java:6176) at clojure.lang.Compiler.analyze(Compiler.java:6118) at clojure.lang.Compiler$InvokeExpr.parse(Compiler.java:3444) at clojure.lang.Compiler.analyzeSeq(Compiler.java:6352) at clojure.lang.Compiler.analyze(Compiler.java:6157) at clojure.lang.Compiler.analyze(Compiler.java:6118) at clojure.lang.Compiler$InvokeExpr.parse(Compiler.java:3437) at clojure.lang.Compiler.analyzeSeq(Compiler.java:6352) at clojure.lang.Compiler.analyze(Compiler.java:6157) at clojure.lang.Compiler.analyze(Compiler.java:6118) at clojure.lang.Compiler$InvokeExpr.parse(Compiler.java:3444) at clojure.lang.Compiler.analyzeSeq(Compiler.java:6352) at clojure.lang.Compiler.analyze(Compiler.java:6157) at clojure.lang.Compiler.analyze(Compiler.java:6118) at clojure.lang.Compiler$BodyExpr$Parser.parse(Compiler.java:5513) at clojure.lang.Compiler$LetExpr$Parser.parse(Compiler.java:5814) at clojure.lang.Compiler.analyzeSeq(Compiler.java:6350) at clojure.lang.Compiler.analyze(Compiler.java:6157) at clojure.lang.Compiler.analyzeSeq(Compiler.java:6338) at clojure.lang.Compiler.analyze(Compiler.java:6157) at clojure.lang.Compiler.analyze(Compiler.java:6118) at clojure.lang.Compiler$BodyExpr$Parser.parse(Compiler.java:5513) at clojure.lang.Compiler$FnMethod.parse(Compiler.java:4949) at clojure.lang.Compiler$FnExpr.parse(Compiler.java:3570) at clojure.lang.Compiler.analyzeSeq(Compiler.java:6348) at clojure.lang.Compiler.analyze(Compiler.java:6157) at clojure.lang.Compiler.analyzeSeq(Compiler.java:6338) at clojure.lang.Compiler.analyze(Compiler.java:6157) 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:6350) at clojure.lang.Compiler.analyze(Compiler.java:6157) at clojure.lang.Compiler.analyze(Compiler.java:6118) at clojure.lang.Compiler.eval(Compiler.java:6410) at clojure.lang.Compiler.load(Compiler.java:6843) 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__4636.invoke(core.clj:5377) at clojure.core$load.doInvoke(core.clj:5376) at clojure.lang.RestFn.invoke(RestFn.java:408) at clojure.core$load_one.invoke(core.clj:5191) at clojure.core$load_lib.doInvoke(core.clj:5228) at clojure.lang.RestFn.applyTo(RestFn.java:142) at clojure.core$apply.invoke(core.clj:602) at clojure.core$load_libs.doInvoke(core.clj:5262) at clojure.lang.RestFn.applyTo(RestFn.java:137) at clojure.core$apply.invoke(core.clj:602) at clojure.core$require.doInvoke(core.clj:5343) at clojure.lang.RestFn.invoke(RestFn.java:408) at user$eval1.invoke(cljsc.clj:9) at clojure.lang.Compiler.eval(Compiler.java:6406) at clojure.lang.Compiler.load(Compiler.java:6843) at clojure.lang.Compiler.loadFile(Compiler.java:6804) at clojure.main$load_script.invoke(main.clj:282) at clojure.main$script_opt.invoke(main.clj:342) at clojure.main$main.doInvoke(main.clj:426) at clojure.lang.RestFn.invoke(RestFn.java:457) at clojure.lang.Var.invoke(Var.java:413) at clojure.lang.AFn.applyToHelper(AFn.java:172) at clojure.lang.Var.applyTo(Var.java:518) at clojure.main.main(main.java:37) Caused by: java.lang.RuntimeException: No such var: comp/dependency-order-visit at clojure.lang.Util.runtimeException(Util.java:144) at clojure.lang.Compiler.resolveIn(Compiler.java:6635) at clojure.lang.Compiler.resolve(Compiler.java:6605) at clojure.lang.Compiler.analyzeSymbol(Compiler.java:6566) at clojure.lang.Compiler.analyze(Compiler.java:6139) ... 62 more Determined, I carry on and step back to 7a179189f6114b0620875d3d521789472ec04aa3: $ bin/cljsc hello.cljs '{:optimizations :advanced}' > hello.js Aug 7, 2011 12:45:34 AM com.google.javascript.jscomp.LoggerErrorManager println WARNING: /Users/ataggart/projects/clojurescript/out/cljs/core.js:3564: WARNING - dangerous use of the global this object {return this.call(null,(args[0])); ^ Aug 7, 2011 12:45:34 AM com.google.javascript.jscomp.LoggerErrorManager println WARNING: /Users/ataggart/projects/clojurescript/out/cljs/core.js:3566: WARNING - dangerous use of the global this object {return this.call(null,(args[0]),(args[1])); ^ Aug 7, 2011 12:45:34 AM com.google.javascript.jscomp.LoggerErrorManager printSummary WARNING: 0 error(s), 2 warning(s) Well, at least it sort of worked. I know ClojureScript is very new and in active development, but it'd be better PR if one could at least get through the quick start. -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en