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

debux mishandles letfn + try + loop #9

Closed
jeaye opened this issue Aug 1, 2018 · 2 comments
Closed

debux mishandles letfn + try + loop #9

jeaye opened this issue Aug 1, 2018 · 2 comments

Comments

@jeaye
Copy link

jeaye commented Aug 1, 2018

Version [philoskim/debux "0.4.10"]

Oddly, it appears to be this particular combination which really upsets debux. The fn doesn't need to be called at all; an exception is thrown when compiling it:

(dbgn
  (defn bar []
    (letfn [(foo []
              (try
                nil
                (catch Exception e
                  nil)))]
      (loop [i 0]
        (recur (inc i))))))

The exception:

Exception in thread "main" java.lang.NullPointerException, compiling:(debux_meta/core.clj:5:1)
	at clojure.lang.Compiler.analyzeSeq(Compiler.java:7010)
	at clojure.lang.Compiler.analyze(Compiler.java:6773)
	at clojure.lang.Compiler.analyze(Compiler.java:6729)
	at clojure.lang.Compiler$IfExpr$Parser.parse(Compiler.java:2822)
	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.load(Compiler.java:7514)
	at clojure.lang.RT.loadResourceScript(RT.java:379)
	at clojure.lang.RT.loadResourceScript(RT.java:370)
	at clojure.lang.RT.load(RT.java:460)
	at clojure.lang.RT.load(RT.java:426)
	at clojure.core$load$fn__6548.invoke(core.clj:6046)
	at clojure.core$load.invokeStatic(core.clj:6045)
	at clojure.core$load.doInvoke(core.clj:6029)
	at clojure.lang.RestFn.invoke(RestFn.java:408)
	at clojure.core$load_one.invokeStatic(core.clj:5848)
	at clojure.core$load_one.invoke(core.clj:5843)
	at clojure.core$load_lib$fn__6493.invoke(core.clj:5888)
	at clojure.core$load_lib.invokeStatic(core.clj:5887)
	at clojure.core$load_lib.doInvoke(core.clj:5868)
	at clojure.lang.RestFn.applyTo(RestFn.java:142)
	at clojure.core$apply.invokeStatic(core.clj:659)
	at clojure.core$load_libs.invokeStatic(core.clj:5925)
	at clojure.core$load_libs.doInvoke(core.clj:5909)
	at clojure.lang.RestFn.applyTo(RestFn.java:137)
	at clojure.core$apply.invokeStatic(core.clj:659)
	at clojure.core$require.invokeStatic(core.clj:5947)
	at clojure.core$require.doInvoke(core.clj:5947)
	at clojure.lang.RestFn.invoke(RestFn.java:408)
	at user$eval3111$fn__3115.invoke(form-init8000152408779894085.clj:1)
	at user$eval3111.invokeStatic(form-init8000152408779894085.clj:1)
	at user$eval3111.invoke(form-init8000152408779894085.clj:1)
	at clojure.lang.Compiler.eval(Compiler.java:7062)
	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.NullPointerException
	at java.util.concurrent.ConcurrentHashMap.get(ConcurrentHashMap.java:936)
	at clojure.lang.Namespace.find(Namespace.java:188)
	at clojure.core$find_ns.invokeStatic(core.clj:4096)
	at clojure.core$the_ns.invokeStatic(core.clj:4126)
	at clojure.core$ns_name.invokeStatic(core.clj:4130)
	at clojure.core$ns_name.invoke(core.clj:4130)
	at debux.common.util$var__GT_symbol.invokeStatic(util.cljc:112)
	at debux.common.util$var__GT_symbol.invoke(util.cljc:110)
	at debux.common.util$ns_symbol_for_clj.invokeStatic(util.cljc:119)
	at debux.common.util$ns_symbol_for_clj.invoke(util.cljc:117)
	at debux.common.util$ns_symbol.invokeStatic(util.cljc:140)
	at debux.common.util$ns_symbol.doInvoke(util.cljc:136)
	at clojure.lang.RestFn.invoke(RestFn.java:423)
	at debux.common.skip$insert_o_skip_for_recur.invokeStatic(skip.cljc:190)
	at debux.common.skip$insert_o_skip_for_recur.doInvoke(skip.cljc:180)
	at clojure.lang.RestFn.invoke(RestFn.java:423)
	at debux.dbgn$dbgn.invokeStatic(dbgn.clj:298)
	at debux.dbgn$dbgn.doInvoke(dbgn.clj:286)
	at clojure.lang.RestFn.applyTo(RestFn.java:146)
	at clojure.lang.Var.applyTo(Var.java:702)
	at clojure.lang.Compiler.macroexpand1(Compiler.java:6912)
	at clojure.lang.Compiler.analyzeSeq(Compiler.java:6989)
	... 53 more
@philoskim
Copy link
Owner

This error was caused when the form including recur has a java.lang.Class type of symbol (Exception in the above example) as well. It’s now fixed.

Many Thanks!

@jeaye
Copy link
Author

jeaye commented Aug 2, 2018

Thank you!

@jeaye jeaye closed this as completed Aug 2, 2018
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

No branches or pull requests

2 participants