@dnolen so the compiler is hanging when I have figwheel.core
in the :preloads
. figwheel.core
is a cljc file. I am thinking that there is a recursive loading problem of some sort happening.
Looking to see if there is an obvious reason in the requires
we didn't change anything around loading or preloads that I'm aware of
I mean I didn't myself
it's possible there's another patch or something - but I really don't remember seeing anything along those lines
I’ll take a look.
this would at least tell you where in the compiler it's stuck
@dnolen thanks I’ll give it a try
@dnolen yeah it looks like its in the analyzer
java.lang.Thread.State: RUNNABLE
at clojure.core$deref.invokeStatic(core.clj:2312)
at clojure.core$deref.invoke(core.clj:2298)
at cljs.analyzer$resolve_var.invokeStatic(analyzer.cljc:1260)
at cljs.analyzer$resolve_var.invoke(analyzer.cljc:1181)
at cljs.analyzer$resolve_var.invokeStatic(analyzer.cljc:1241)
at cljs.analyzer$resolve_var.invoke(analyzer.cljc:1181)
at cljs.analyzer$resolve_var.invokeStatic(analyzer.cljc:1187)
at cljs.analyzer$resolve_var.invoke(analyzer.cljc:1181)
at cljs.analyzer$resolve_existing_var.invokeStatic(analyzer.cljc:1298)
at cljs.analyzer$resolve_existing_var.invoke(analyzer.cljc:1293)
at cljs.analyzer$analyze_symbol.invokeStatic(analyzer.cljc:3788)
at cljs.analyzer$analyze_symbol.invoke(analyzer.cljc:3752)
at cljs.analyzer$analyze_form.invokeStatic(analyzer.cljc:4182)
at cljs.analyzer$analyze_form.invoke(analyzer.cljc:4180)
at cljs.analyzer$analyze_STAR_.invokeStatic(analyzer.cljc:4236)
at cljs.analyzer$analyze_STAR_.invoke(analyzer.cljc:4228)
at cljs.analyzer$analyze.invokeStatic(analyzer.cljc:4256)
at cljs.analyzer$analyze.invoke(analyzer.cljc:4239)
at cljs.analyzer$analyze.invokeStatic(analyzer.cljc:4249)
at cljs.analyzer$analyze.invoke(analyzer.cljc:4239)
at cljs.analyzer$analyze.invokeStatic(analyzer.cljc:4247)
at cljs.analyzer$analyze.invoke(analyzer.cljc:4239)
at cljs.analyzer$parse_invoke_STAR_$ana_expr__2577.invoke(analyzer.cljc:3710)
at clojure.core$mapv$fn__8088.invoke(core.clj:6832)
at clojure.lang.PersistentList.reduce(PersistentList.java:141)
at clojure.core$reduce.invokeStatic(core.clj:6747)
at clojure.core$mapv.invokeStatic(core.clj:6823)
at clojure.core$mapv.invoke(core.clj:6823)
at cljs.analyzer$parse_invoke_STAR_.invokeStatic(analyzer.cljc:3711)
at cljs.analyzer$parse_invoke_STAR_.invoke(analyzer.cljc:3657)
at cljs.analyzer$parse_invoke.invokeStatic(analyzer.cljc:3723)
at cljs.analyzer$parse_invoke.invoke(analyzer.cljc:3721)
at cljs.analyzer$analyze_seq_STAR_.invokeStatic(analyzer.cljc:3968)
at cljs.analyzer$analyze_seq_STAR_.invoke(analyzer.cljc:3965)
at cljs.analyzer$analyze_seq_STAR__wrap.invokeStatic(analyzer.cljc:3972)
at cljs.analyzer$analyze_seq_STAR__wrap.invoke(analyzer.cljc:3970)
at cljs.analyzer$analyze_seq.invokeStatic(analyzer.cljc:3996)
at cljs.analyzer$analyze_seq.invoke(analyzer.cljc:3974)
at cljs.analyzer$analyze_form.invokeStatic(analyzer.cljc:4183)
at cljs.analyzer$analyze_form.invoke(analyzer.cljc:4180)
at cljs.analyzer$analyze_STAR_.invokeStatic(analyzer.cljc:4236)
at cljs.analyzer$analyze_STAR_.invoke(analyzer.cljc:4228)
at cljs.analyzer$analyze.invokeStatic(analyzer.cljc:4256)
at cljs.analyzer$analyze.invoke(analyzer.cljc:4239)
at cljs.analyzer$analyze.invokeStatic(analyzer.cljc:4249)
at cljs.analyzer$analyze.invoke(analyzer.cljc:4239)
at cljs.analyzer$analyze.invokeStatic(analyzer.cljc:4247)
at cljs.analyzer$analyze.invoke(analyzer.cljc:4239)
at cljs.analyzer$fn__1832$fn__1834.invoke(analyzer.cljc:1676)
at cljs.analyzer$fn__1832.invokeStatic(analyzer.cljc:1676)
at cljs.analyzer$fn__1832.invoke(analyzer.cljc:1670)
at clojure.lang.MultiFn.invoke(MultiFn.java:251)
at cljs.analyzer$analyze_seq_STAR_.invokeStatic(analyzer.cljc:3967)
at cljs.analyzer$analyze_seq_STAR_.invoke(analyzer.cljc:3965)
at cljs.analyzer$analyze_seq_STAR__wrap.invokeStatic(analyzer.cljc:3972)
at cljs.analyzer$analyze_seq_STAR__wrap.invoke(analyzer.cljc:3970)
at cljs.analyzer$analyze_seq.invokeStatic(analyzer.cljc:3996)
at cljs.analyzer$analyze_seq.invoke(analyzer.cljc:3974)
at cljs.analyzer$analyze_form.invokeStatic(analyzer.cljc:4183)
at cljs.analyzer$analyze_form.invoke(analyzer.cljc:4180)
at cljs.analyzer$analyze_STAR_.invokeStatic(analyzer.cljc:4236)
at cljs.analyzer$analyze_STAR_.invoke(analyzer.cljc:4228)
at cljs.analyzer$analyze.invokeStatic(analyzer.cljc:4256)
at cljs.analyzer$analyze.invoke(analyzer.cljc:4239)
at cljs.analyzer$analyze_seq.invokeStatic(analyzer.cljc:3997)
at cljs.analyzer$analyze_seq.invoke(analyzer.cljc:3974)
at cljs.analyzer$analyze_form.invokeStatic(analyzer.cljc:4183)
at cljs.analyzer$analyze_form.invoke(analyzer.cljc:4180)
at cljs.analyzer$analyze_STAR_.invokeStatic(analyzer.cljc:4236)
at cljs.analyzer$analyze_STAR_.invoke(analyzer.cljc:4228)
at cljs.analyzer$analyze.invokeStatic(analyzer.cljc:4256)
at cljs.analyzer$analyze.invoke(analyzer.cljc:4239)
at cljs.analyzer$analyze.invokeStatic(analyzer.cljc:4249)
at cljs.analyzer$analyze.invoke(analyzer.cljc:4239)
at cljs.analyzer$analyze.invokeStatic(analyzer.cljc:4247)
at cljs.analyzer$analyze.invoke(analyzer.cljc:4239)
at cljs.analyzer$analyze_do_statements_STAR_$fn__2020.invoke(analyzer.cljc:2267)
at clojure.core$mapv$fn__8088.invoke(core.clj:6832)
at clojure.lang.ArrayChunk.reduce(ArrayChunk.java:58)
at clojure.core.protocols$fn__7847.invokeStatic(protocols.clj:136)
at clojure.core.protocols$fn__7847.invoke(protocols.clj:124)
at clojure.core.protocols$fn__7807$G__7802__7816.invoke(protocols.clj:19)
at clojure.core.protocols$seq_reduce.invokeStatic(protocols.clj:31)
at clojure.core.protocols$fn__7833.invokeStatic(protocols.clj:75)
at clojure.core.protocols$fn__7833.invoke(protocols.clj:75)
at clojure.core.protocols$fn__7781$G__7776__7794.invoke(protocols.clj:13)
at clojure.core$reduce.invokeStatic(core.clj:6748)
at clojure.core$mapv.invokeStatic(core.clj:6823)
at clojure.core$mapv.invoke(core.clj:6823)
at cljs.analyzer$analyze_do_statements_STAR_.invokeStatic(analyzer.cljc:2267)
at cljs.analyzer$analyze_do_statements_STAR_.invoke(analyzer.cljc:2266)
at cljs.analyzer$analyze_do_statements.invokeStatic(analyzer.cljc:2270)
at cljs.analyzer$analyze_do_statements.invoke(analyzer.cljc:2269)
at cljs.analyzer$fn__2025.invokeStatic(analyzer.cljc:2274)
at cljs.analyzer$fn__2025.invoke(analyzer.cljc:2272)
at clojure.lang.MultiFn.invoke(MultiFn.java:251)
at cljs.analyzer$analyze_seq_STAR_.invokeStatic(analyzer.cljc:3967)
at cljs.analyzer$analyze_seq_STAR_.invoke(analyzer.cljc:3965)
at cljs.analyzer$analyze_seq_STAR__wrap.invokeStatic(analyzer.cljc:3972)
at cljs.analyzer$analyze_seq_STAR__wrap.invoke(analyzer.cljc:3970)
at cljs.analyzer$analyze_seq.invokeStatic(analyzer.cljc:3996)
at cljs.analyzer$analyze_seq.invoke(analyzer.cljc:3974)
at cljs.analyzer$analyze_form.invokeStatic(analyzer.cljc:4183)
at cljs.analyzer$analyze_form.invoke(analyzer.cljc:4180)
at cljs.analyzer$analyze_STAR_.invokeStatic(analyzer.cljc:4236)
at cljs.analyzer$analyze_STAR_.invoke(analyzer.cljc:4228)
at cljs.analyzer$analyze.invokeStatic(analyzer.cljc:4256)
at cljs.analyzer$analyze.invoke(analyzer.cljc:4239)
at cljs.analyzer$analyze.invokeStatic(analyzer.cljc:4249)
at cljs.analyzer$analyze.invoke(analyzer.cljc:4239)
at cljs.analyzer$analyze.invokeStatic(analyzer.cljc:4247)
at cljs.analyzer$analyze.invo
yeah and its still running
at clojure.lang.PersistentHashMap.valAt(PersistentHashMap.java:152)
at clojure.lang.RT.get(RT.java:784)
at cljs.analyzer$gets.invokeStatic(analyzer.cljc:215)
at cljs.analyzer$gets.invoke(analyzer.cljc:203)
at cljs.analyzer$resolve_var.invokeStatic(analyzer.cljc:1250)
at cljs.analyzer$resolve_var.invoke(analyzer.cljc:1181)
at cljs.analyzer$resolve_var.invokeStatic(analyzer.cljc:1241)
at cljs.analyzer$resolve_var.invoke(analyzer.cljc:1181)
at cljs.analyzer$resolve_var.invokeStatic(analyzer.cljc:1187)
at cljs.analyzer$resolve_var.invoke(analyzer.cljc:1181)
at cljs.analyzer$resolve_existing_var.invokeStatic(analyzer.cljc:1298)
at cljs.analyzer$resolve_existing_var.invoke(analyzer.cljc:1293)
at cljs.analyzer$analyze_symbol.invokeStatic(analyzer.cljc:3788)
at cljs.analyzer$analyze_symbol.invoke(analyzer.cljc:3752)
at cljs.analyzer$analyze_form.invokeStatic(analyzer.cljc:4182)
at cljs.analyzer$analyze_form.invoke(analyzer.cljc:4180)
at cljs.analyzer$analyze_STAR_.invokeStatic(analyzer.cljc:4236)
thats from the process thats still running
@bhauman the one thing I changed was how dotted symbols are resolved, so its possible I made a mistake or there's a strange symbol
there's was always a bug with dotted symbols
foo.bar.baz
OK dotted symbols
what the new logic does now, it checks that foo
isn't itself a var
goog.debug.Console
@bhauman but it shouldn't non-terminate - that's definitely a bug
does that incude js/asdf.asdfa.asdf?
no, js/...
is the top branch
or rather I don't believe it should
though it's a bit strange
since the stack should blow
this is not a recur
not in resolve-var anyway
hmmm checking if its goog
fwiw, we have that in core.cljs so somewhat skeptical
goog.math.Integer
etc.
OK is was (:import [goog])
combined with some usage
hrm why do you need that?
I probably don’t
not saying it's not a bug - just (:import [goog])
seems odd
going to try that here on hello-world
I have goog/global.document
hrm ok
goog/require
and goog.global
but there is no complaint when I remove it from imports
but removing that fixed everything so far
hrm
(ns hello-world.core
(:import [goog]))
(println goog/global.document)
couldn't repro w/ just this
well I could drill further to see which reference caused the ana loop
there aren’t to many
that would be great - I'm sure there are other projects that might do something like this
hmm now could it be that having an import statement like
[goog
[goog.debug Console]
[goog.async Deferred]
[goog Promise]
[goog.events EventTarget Event]]
is causing the problem
hrm what is that?
imports
pretty sure that isn't supported
:import
doesn't let you do that nesting
(not in CLJS)
its not nesting
its just a single ns
(:import [goog
[goog.debug Console]
[goog.async Deferred]
[goog Promise]
[goog.events EventTarget Event]])
(ns hello-world.core
(:import [goog]))
(println goog/global.document)
I did the same thing over here, completes
and it works even if it's in a preload
I'll add [goog Promise]
nope
oh but maybe
goog
+ goog.debug
dang nope
I changed it to
(:import [[goog]
[goog.debug Console]
[goog.async Deferred]
[goog Promise]
[goog.events EventTarget Event]]
and its working
oh
sorry I missed that
OK I’ll stop thrashing and look more specifically
@bhauman I found it
don't worry about it
hopefully you're unblocked on that problem for now
good good
https://clojure.atlassian.net/projects/CLJS/issues/CLJS-3239
@bhauman fixed that one, (:import goog)
and (:import [goog])
are now equivalent