Fork me on GitHub
#figwheel-main
<
2020-04-26
>
bhauman15:04:36

@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.

bhauman15:04:04

Looking to see if there is an obvious reason in the requires

dnolen15:04:08

we didn't change anything around loading or preloads that I'm aware of

dnolen15:04:44

I mean I didn't myself

dnolen15:04:59

it's possible there's another patch or something - but I really don't remember seeing anything along those lines

bhauman15:04:11

I’ll take a look.

dnolen15:04:48

this would at least tell you where in the compiler it's stuck

bhauman15:04:09

@dnolen thanks I’ll give it a try

bhauman15:04:35

@dnolen yeah it looks like its in the analyzer

bhauman15:04:51

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

bhauman16:04:54

yeah and its still running

bhauman16:04:59

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)

bhauman16:04:15

thats from the process thats still running

dnolen16:04:21

there's was always a bug with dotted symbols

dnolen16:04:23

foo.bar.baz

bhauman16:04:28

OK dotted symbols

dnolen16:04:42

what the new logic does now, it checks that foo isn't itself a var

bhauman16:04:59

goog.debug.Console

dnolen16:04:00

@bhauman but it shouldn't non-terminate - that's definitely a bug

bhauman16:04:58

does that incude js/asdf.asdfa.asdf?

dnolen16:04:29

no, js/... is the top branch

dnolen16:04:43

or rather I don't believe it should

dnolen16:04:28

though it's a bit strange

dnolen16:04:33

since the stack should blow

dnolen16:04:35

this is not a recur

dnolen16:04:49

not in resolve-var anyway

bhauman16:04:52

hmmm checking if its goog

dnolen16:04:35

fwiw, we have that in core.cljs so somewhat skeptical

dnolen16:04:44

goog.math.Integer etc.

bhauman16:04:51

OK is was (:import [goog])

bhauman16:04:03

combined with some usage

dnolen16:04:04

hrm why do you need that?

bhauman16:04:11

I probably don’t

dnolen16:04:26

not saying it's not a bug - just (:import [goog]) seems odd

dnolen16:04:41

going to try that here on hello-world

bhauman16:04:43

I have goog/global.document

bhauman16:04:23

goog/require

bhauman16:04:52

and goog.global

bhauman16:04:11

but there is no complaint when I remove it from imports

bhauman16:04:08

but removing that fixed everything so far

dnolen16:04:18

(ns hello-world.core
  (:import [goog]))

(println goog/global.document)

dnolen16:04:20

couldn't repro w/ just this

bhauman16:04:56

well I could drill further to see which reference caused the ana loop

bhauman16:04:07

there aren’t to many

dnolen16:04:27

that would be great - I'm sure there are other projects that might do something like this

bhauman16:04:20

hmm now could it be that having an import statement like

bhauman16:04:23

[goog
                      [goog.debug Console]
                      [goog.async Deferred]
                      [goog Promise]
                      [goog.events EventTarget Event]]

bhauman16:04:33

is causing the problem

dnolen16:04:46

hrm what is that?

dnolen16:04:54

pretty sure that isn't supported

dnolen16:04:03

:import doesn't let you do that nesting

dnolen16:04:11

(not in CLJS)

bhauman16:04:15

its not nesting

bhauman16:04:23

its just a single ns

bhauman16:04:34

(:import [goog
                      [goog.debug Console]
                      [goog.async Deferred]
                      [goog Promise]
                      [goog.events EventTarget Event]])

dnolen16:04:04

(ns hello-world.core
  (:import [goog]))

(println goog/global.document)

dnolen16:04:11

I did the same thing over here, completes

dnolen16:04:16

and it works even if it's in a preload

dnolen16:04:24

I'll add [goog Promise]

dnolen16:04:22

oh but maybe

dnolen16:04:34

goog + goog.debug

bhauman16:04:43

I changed it to

(:import [[goog]
                      [goog.debug Console]
                      [goog.async Deferred]
                      [goog Promise]
                      [goog.events EventTarget Event]]

bhauman16:04:48

and its working

dnolen16:04:09

sorry I missed that

bhauman16:04:20

OK I’ll stop thrashing and look more specifically

dnolen16:04:01

don't worry about it

dnolen16:04:08

hopefully you're unblocked on that problem for now

dnolen18:04:41

@bhauman fixed that one, (:import goog) and (:import [goog]) are now equivalent