Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Quote compiler options to allow raw symbols #172

Merged
merged 1 commit into from
Mar 12, 2018
Merged

Conversation

volrath
Copy link
Contributor

@volrath volrath commented Mar 11, 2018

Related to #133

Using ClojureScript :global-exports breaks doo.

Example:

(defproject some-project "0.1.0-SNAPSHOT"
  ...
  :plugins [[lein-doo "0.1.8"]]
  :cljs-builds
  [{:id "dev"
    ...
    :foreign-libs [:file "src/js/react.js"
                    :provides ["react"]
                    :global-exports {react React}]}])

Throws something like

Exception in thread "main" java.lang.RuntimeException: Unable to resolve symbol: react in this context, compiling:(/tmp/form-init3178254444106062114.clj:1:227)
	at clojure.lang.Compiler.analyze(Compiler.java:6792)
	at clojure.lang.Compiler.analyze(Compiler.java:6729)
	at clojure.lang.Compiler$MapExpr.parse(Compiler.java:3096)
	at clojure.lang.Compiler.analyze(Compiler.java:6781)
	at clojure.lang.Compiler.analyze(Compiler.java:6729)
	at clojure.lang.Compiler$MapExpr.parse(Compiler.java:3097)
	at clojure.lang.Compiler.analyze(Compiler.java:6781)
	at clojure.lang.Compiler.analyze(Compiler.java:6729)
	at clojure.lang.Compiler$VectorExpr.parse(Compiler.java:3253)
	at clojure.lang.Compiler.analyze(Compiler.java:6775)
	at clojure.lang.Compiler.analyze(Compiler.java:6729)
	at clojure.lang.Compiler$MapExpr.parse(Compiler.java:3097)
	at clojure.lang.Compiler.analyze(Compiler.java:6781)
	at clojure.lang.Compiler.analyze(Compiler.java:6729)
	at clojure.lang.Compiler$InvokeExpr.parse(Compiler.java:3881)
	at clojure.lang.Compiler.analyzeSeq(Compiler.java:7005)
	at clojure.lang.Compiler.analyze(Compiler.java:6773)
	at clojure.lang.Compiler.access$300(Compiler.java:38)
	at clojure.lang.Compiler$LetExpr$Parser.parse(Compiler.java:6368)
	at clojure.lang.Compiler.analyzeSeq(Compiler.java:7003)
	at clojure.lang.Compiler.analyze(Compiler.java:6773)
	at clojure.lang.Compiler.analyzeSeq(Compiler.java:6991)
	at clojure.lang.Compiler.analyze(Compiler.java:6773)
	at clojure.lang.Compiler.analyze(Compiler.java:6729)
	at clojure.lang.Compiler$BodyExpr$Parser.parse(Compiler.java:6100)
	at clojure.lang.Compiler.analyzeSeq(Compiler.java:7003)
	at clojure.lang.Compiler.analyze(Compiler.java:6773)
	at clojure.lang.Compiler.analyze(Compiler.java:6729)
	at clojure.lang.Compiler$BodyExpr$Parser.parse(Compiler.java:6100)
	at clojure.lang.Compiler$TryExpr$Parser.parse(Compiler.java:2307)
	at clojure.lang.Compiler.analyzeSeq(Compiler.java:7003)
	at clojure.lang.Compiler.analyze(Compiler.java:6773)
	at clojure.lang.Compiler.analyze(Compiler.java:6729)
	at clojure.lang.Compiler$BodyExpr$Parser.parse(Compiler.java:6100)
	at clojure.lang.Compiler$FnMethod.parse(Compiler.java:5460)
	at clojure.lang.Compiler$FnExpr.parse(Compiler.java:4022)
	at clojure.lang.Compiler.analyzeSeq(Compiler.java:7001)
	at clojure.lang.Compiler.analyze(Compiler.java:6773)
	at clojure.lang.Compiler.eval(Compiler.java:7059)
	at clojure.lang.Compiler.eval(Compiler.java:7052)
	at clojure.lang.Compiler.load(Compiler.java:7514)
	at clojure.lang.Compiler.loadFile(Compiler.java:7452)
	at clojure.main$load_script.invokeStatic(main.clj:278)
	at clojure.main$init_opt.invokeStatic(main.clj:280)
	at clojure.main$init_opt.invoke(main.clj:280)
	at clojure.main$initialize.invokeStatic(main.clj:311)
	at clojure.main$null_opt.invokeStatic(main.clj:345)
	at clojure.main$null_opt.invoke(main.clj:342)
	at clojure.main$main.invokeStatic(main.clj:424)
	at clojure.main$main.doInvoke(main.clj:387)
	at clojure.lang.RestFn.applyTo(RestFn.java:137)
	at clojure.lang.Var.applyTo(Var.java:702)
	at clojure.main.main(main.java:37)
Caused by: java.lang.RuntimeException: Unable to resolve symbol: react in this context
	at clojure.lang.Util.runtimeException(Util.java:221)
	at clojure.lang.Compiler.resolveIn(Compiler.java:7299)
	at clojure.lang.Compiler.resolve(Compiler.java:7243)
	at clojure.lang.Compiler.analyzeSymbol(Compiler.java:7204)
	at clojure.lang.Compiler.analyze(Compiler.java:6752)
	... 52 more

This is due to: bhauman/lein-figwheel#544 (comment)
lein-doo should quote the compiler configuration to allow raw symbols.

I ran tests on this commit and it went OK. I also tested it in my local project (the one using :global-exports) and it worked.

@volrath
Copy link
Contributor Author

volrath commented Mar 11, 2018

@bensu @miikka not sure what's this build's error about. any help?

@miikka
Copy link
Collaborator

miikka commented Mar 12, 2018

Hi, and thanks for the patch. The build issue is a bug/feature brought in light by your patch: doo has allowed you to have a quoted :main value like 'example.runner. ClojureScript compiler does not like this.

I think I'll add some code that fixes this for the existing users but also issues a warning.

@miikka miikka merged commit e815524 into bensu:master Mar 12, 2018
@miikka miikka mentioned this pull request Mar 12, 2018
6 tasks
@volrath
Copy link
Contributor Author

volrath commented Mar 12, 2018

@miikka thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants