Skip to content

Instantly share code, notes, and snippets.

@edbond
Created August 16, 2013 19:57
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 edbond/6253042 to your computer and use it in GitHub Desktop.
Save edbond/6253042 to your computer and use it in GitHub Desktop.
clojurescript macros error
(ns platezhki.core
(:require [goog.events :as ev]
[goog.dom :as dom])
(:use-macros [platezhki.macros :only (inside)]))
;; Electricity
(defn log [& args]
(.log js/console args))
(inside ".electro" (log "OK")
#_(ev/listen ($ ".previous")
ev/EventType$KEYDOWN
#(log "KEY PRESS!" %)))
Compiling "public/main.js" from ["src-cljs"]...
Compiling "public/main.js" failed.
clojure.lang.ExceptionInfo: failed compiling file:src-cljs/platezhki/core.cljs
core.clj:4327 clojure.core/ex-info
compiler.clj:891 cljs.compiler/compile-file
compiler.clj:953 cljs.compiler/compile-root
closure.clj:398 cljs.closure/compile-dir
closure.clj:430 cljs.closure/eval1956[fn]
closure.clj:299 cljs.closure/eval1883[fn]
closure.clj:444 cljs.closure/eval1943[fn]
closure.clj:299 cljs.closure/eval1883[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:955 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/eval2273[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/eval2273
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
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.ExceptionInfo: Assert failed: Invalid local name: platezhki.macros/inside-sel
(not (or (namespace name) (.contains (str name) "."))) at line 10 src-cljs/platezhki/core.cljs
core.clj:4327 clojure.core/ex-info
analyzer.clj:128 cljs.analyzer/error
analyzer.clj:933 cljs.analyzer/analyze-seq
analyzer.clj:989 cljs.analyzer/analyze
analyzer.clj:937 cljs.analyzer/analyze-seq
analyzer.clj:989 cljs.analyzer/analyze
analyzer.clj:937 cljs.analyzer/analyze-seq
analyzer.clj:989 cljs.analyzer/analyze
analyzer.clj:980 cljs.analyzer/analyze
compiler.clj:822 cljs.compiler/compile-file*
compiler.clj:888 cljs.compiler/compile-file
Caused by: java.lang.AssertionError: Assert failed: Invalid local name: platezhki.macros/inside-sel
(not (or (namespace name) (.contains (str name) ".")))
analyzer.clj:492 cljs.analyzer/analyze-let[fn]
analyzer.clj:486 cljs.analyzer/analyze-let
analyzer.clj:528 cljs.analyzer/eval338[fn]
MultiFn.java:241 clojure.lang.MultiFn.invoke
analyzer.clj:935 cljs.analyzer/analyze-seq
(ns platezhki.macros
(:require [goog.dom :as dom]))
(def ^:dynamic inside-sel nil)
(defn $ [sel]
(dom/query
(if inside-sel
(str inside-sel " " sel)
sel)))
(defmacro inside
[sel & body]
`(let [inside-sel (dom/query sel)]
~@body))
@kn0ll
Copy link

kn0ll commented Jan 30, 2014

were you able to get around this? defining anything inside the let arguments fails this way for me

@kn0ll
Copy link

kn0ll commented Jan 30, 2014

got it thanks to the comment in http://clojuredocs.org/clojure_core/clojure.core/defmacro#comment_134, needed to append #

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment