Hello, I'm running into a very strange issue which, having searched the web, no one seems to have reported.
In short, I have a go block similar to the following (simplified for posting purposes, however I can post the full code if required): (go (while true (let [[cmd event-args] (<! mouse-chan)]] ... (cond (= cmd :down) (let [ ... ] ...) (= cmd :in) (let [ ... ] ...) (= cmd :hover) (let [ ... ] ...) (= cmd :handle-down) (let [ ... ] ...) ) )) Essentially I have a number of mouse handlers (mousedown, mouseup, mouseover, mouseout, ...) which put! a [cmd event-args] vector onto mouse-chan, which is subsequently taken in the above block. Generally speaking, the block compiles successfully, however under certain conditions it just "breaks", specifically by producing a: java.lang.StackOverflowError during compilation. At present I have 4 branches within the cond block. Within one of those branches I have a loop/recur which takes (via <!) from the same channel as in the outermost block. This works absolutely fine until I try one of the following, which results in the above compilation error: * adding a fifth branch * with just the 4 branches in place, if I add even something as simple as the following expression: (when major-in (major-in event-args)) where major-in is either a function or nil * and the strangest thing of all, if I simply use *map deconstruction* at one point in one of the cond branches, I also get the same compilation error: (let [{:keys [x y w h]} (rect-ent-layout ghost-rect) ;; Even this doesn't work if I uncomment it and comment out the previous ;; {} () ] ...) but doing the following, which doesn't involve deconstruction, is fine: (let [stuff (rect-ent-layout ghost-rect) x (:x stuff) y (:y stuff) w (:w stuff) h (:h stuff)] ...) In terms of limitations on core.async go blocks, I am only aware of the functional boundary limitation, namely that you cannot create anonymous functions within a go block which perform any puts/takes, asynchronous or otherwise. Beyond that I can't find anything in the documentation which would indicate that there are any other limitations. I am also aware that some macros do create functions, e.g. for, but I am not using anything like that. I'm running a CLJS project with the following dependencies: [org.clojure/clojure "1.9.0-beta4"] [org.clojure/clojurescript "1.9.946"] [org.clojure/core.async "0.3.443"] I'm also using Reagent and developing using Figwheel. The Compilation Error in fact is show in a Figwheel overlay. I have tried to isolate the issue but I can't seem to pinpoint what exactly is causing it. Has anyone every come across something like this before when working with core.async, specifically the java.lang.StackOverflowError compilation error? If not, without posting the full code, can anyone see anything with the above code which might cause such an issue? Thank you, Ali -- Note that posts from new members are moderated - please be patient with your first post. --- You received this message because you are subscribed to the Google Groups "ClojureScript" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojurescript+unsubscr...@googlegroups.com. To post to this group, send email to clojurescript@googlegroups.com. Visit this group at https://groups.google.com/group/clojurescript.