figwheel-core icon indicating copy to clipboard operation
figwheel-core copied to clipboard

nil line and column numbers in warnings

Open Hendekagon opened this issue 1 year ago • 0 comments

sometimes warnings from the analyzer have nil line and column numbers in env leading to confusing stacktraces from figwheel, like this one:

cljs.user=> (require '[emmy.env :as e])
Exception in thread "pool-262-thread-1" java.io.IOException: Stream closed
        at java.base/java.io.BufferedWriter.ensureOpen(BufferedWriter.java:132)
        at java.base/java.io.BufferedWriter.implWrite(BufferedWriter.java:325)
        at java.base/java.io.BufferedWriter.write(BufferedWriter.java:313)
        at java.base/java.io.Writer.write(Writer.java:278)
        at cljs.compiler$emits.invokeStatic(compiler.cljc:220)
        at cljs.compiler$emits.invoke(compiler.cljc:207)
        at cljs.compiler$emit_var.invokeStatic(compiler.cljc:497)
        at cljs.compiler$emit_var.invoke(compiler.cljc:455)
        at cljs.compiler$fn__4165.invokeStatic(compiler.cljc:499)
        at cljs.compiler$fn__4165.invoke(compiler.cljc:499)
        at clojure.lang.MultiFn.invoke(MultiFn.java:229)
        at cljs.compiler$emit.invokeStatic(compiler.cljc:205)
        at cljs.compiler$emit.invoke(compiler.cljc:185)
        at cljs.compiler$emits.invokeStatic(compiler.cljc:212)
        at cljs.compiler$emits.invoke(compiler.cljc:207)
        at cljs.compiler$emits.invokeStatic(compiler.cljc:228)
        at cljs.compiler$emits.invoke(compiler.cljc:207)
        at cljs.compiler$fn__4543.invokeStatic(compiler.cljc:1254)
        at cljs.compiler$fn__4543.invoke(compiler.cljc:1140)
        at clojure.lang.MultiFn.invoke(MultiFn.java:229)
        at cljs.compiler$emit.invokeStatic(compiler.cljc:205)
        at cljs.compiler$emit.invoke(compiler.cljc:185)
        at cljs.compiler$emits.invokeStatic(compiler.cljc:212)
        at cljs.compiler$emits.invoke(compiler.cljc:207)
        at cljs.compiler$emitln.invokeStatic(compiler.cljc:253)
        at cljs.compiler$emitln.invoke(compiler.cljc:246)
        at cljs.compiler$emit_let$fn__4506.invoke(compiler.cljc:1101)
        at cljs.compiler$emit_let.invokeStatic(compiler.cljc:1089)
        at cljs.compiler$emit_let.invoke(compiler.cljc:1085)
        at cljs.compiler$fn__4517.invokeStatic(compiler.cljc:1110)
        at cljs.compiler$fn__4517.invoke(compiler.cljc:1109)
        at clojure.lang.MultiFn.invoke(MultiFn.java:229)
        at cljs.compiler$emit.invokeStatic(compiler.cljc:205)
        at cljs.compiler$emit.invoke(compiler.cljc:185)
        at cljs.compiler$fn__4486.invokeStatic(compiler.cljc:1065)
        at cljs.compiler$fn__4486.invoke(compiler.cljc:1060)
        at clojure.lang.MultiFn.invoke(MultiFn.java:229)
        at cljs.compiler$emit.invokeStatic(compiler.cljc:205)
        at cljs.compiler$emit.invoke(compiler.cljc:185)
        at cljs.compiler$emits.invokeStatic(compiler.cljc:212)
        at cljs.compiler$emits.invoke(compiler.cljc:207)
        at cljs.compiler$emit_fn_method.invokeStatic(compiler.cljc:905)
        at cljs.compiler$emit_fn_method.invoke(compiler.cljc:896)
        at cljs.compiler$fn__4432.invokeStatic(compiler.cljc:996)
        at cljs.compiler$fn__4432.invoke(compiler.cljc:975)
        at clojure.lang.MultiFn.invoke(MultiFn.java:229)
        at cljs.compiler$emit.invokeStatic(compiler.cljc:205)
        at cljs.compiler$emit.invoke(compiler.cljc:185)
        at cljs.compiler$emits.invokeStatic(compiler.cljc:212)
        at cljs.compiler$emits.invoke(compiler.cljc:207)
        at cljs.compiler$emits.invokeStatic(compiler.cljc:224)
        at cljs.compiler$emits.invoke(compiler.cljc:207)
        at cljs.compiler$fn__4365.invokeStatic(compiler.cljc:830)
        at cljs.compiler$fn__4365.invoke(compiler.cljc:814)
        at clojure.lang.MultiFn.invoke(MultiFn.java:229)
        at cljs.compiler$emit.invokeStatic(compiler.cljc:205)
        at cljs.compiler$emit.invoke(compiler.cljc:185)
        at cljs.compiler$emit_source$fn__4769$fn__4770.invoke(compiler.cljc:1578)
        at clojure.lang.AFn.applyToHelper(AFn.java:152)
        at clojure.lang.AFn.applyTo(AFn.java:144)
        at clojure.core$apply.invokeStatic(core.clj:667)
        at clojure.core$with_bindings_STAR_.invokeStatic(core.clj:1990)
        at clojure.core$with_bindings_STAR_.doInvoke(core.clj:1990)
        at clojure.lang.RestFn.invoke(RestFn.java:425)
        at clojure.lang.AFn.applyToHelper(AFn.java:156)
        at clojure.lang.RestFn.applyTo(RestFn.java:132)
        at clojure.core$apply.invokeStatic(core.clj:671)
        at clojure.core$bound_fn_STAR_$fn__5818.doInvoke(core.clj:2020)
        at clojure.lang.RestFn.invoke(RestFn.java:397)
        at clojure.lang.AFn.run(AFn.java:22)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
        at java.base/java.lang.Thread.run(Thread.java:1589)
Could not Analyze   /Users/me/libs/emmy/src/emmy/calculus/manifold.cljc   line:328  column:1

  Cannot invoke "Object.getClass()" because "x" is null

  323            (swap! reps assoc coordsys-id rep)
  324            rep))))
  325  
  326  ;; ## Coordinate System Protocol
  327  
  328  (defprotocol ICoordinateSystem
       ^---
  329    (check-coordinates [this coords]
  330      "Returns true if the supplied coordinates `coords` can be converted into a
  331      point by this [[ICoordinateSystem]], false otherwise.")
  332  
  333    (check-point [this point]
[Figwheel:FINE] {:via
 [{:type clojure.lang.ExceptionInfo,
   :message
   "failed compiling file:/Users/me/libs/emmy/src/emmy/calculus/manifold.cljc",
   :data
   {:file
    #object[java.io.File 0x56ce0466 "/Users/me/libs/emmy/src/emmy/calculus/manifold.cljc"],
    :clojure.error/phase :compilation},
   :at
   [cljs.compiler$compile_file$fn__4816 invoke "compiler.cljc" 1769]}
  {:type clojure.lang.ExceptionInfo,
   :data
   #:clojure.error{:source
                   "/Users/me/libs/emmy/src/emmy/calculus/manifold.cljc",
                   :line 328,
                   :column 1,
                   :phase :compilation},
   :at
   [cljs.analyzer$analyze_seq_STAR__wrap
    invokeStatic
    "analyzer.cljc"
    4096]}
  {:type clojure.lang.ExceptionInfo,
   :message
   "Cannot invoke \"Object.getClass()\" because \"x\" is null at line 328 /Users/me/libs/emmy/src/emmy/calculus/manifold.cljc",
   :data
   {:file "/Users/me/libs/emmy/src/emmy/calculus/manifold.cljc",
    :line 328,
    :column 1,
    :tag :cljs/analysis-error},
   :at [cljs.analyzer$error invokeStatic "analyzer.cljc" 782]}
  {:type java.lang.NullPointerException,
   :message
   "Cannot invoke \"Object.getClass()\" because \"x\" is null",
   :at [clojure.lang.Numbers ops "Numbers.java" 1095]}],
 :trace
 [[clojure.lang.Numbers ops "Numbers.java" 1095]
  [clojure.lang.Numbers minus "Numbers.java" 164]
  [clojure.lang.Numbers minus "Numbers.java" 3795]
  [figwheel.core$warning_info invokeStatic "core.cljc" 668]
  [figwheel.core$warning_info invoke "core.cljc" 660]
  [figwheel.main$repl$fn__9429 invoke "main.cljc" 1895]
  [cljs.analyzer$warning invokeStatic "analyzer.cljc" 754]
  [cljs.analyzer$warning invoke "analyzer.cljc" 752]
  [cljs.core$defprotocol$method__5399 invoke "core.cljc" 2159]
  [clojure.core$map$fn__5935 invoke "core.clj" 2770]
  [clojure.lang.LazySeq sval "LazySeq.java" 42]
  [clojure.lang.LazySeq seq "LazySeq.java" 51]
  [clojure.lang.RT seq "RT.java" 535]
  [clojure.core$seq__5467 invokeStatic "core.clj" 139]
  [clojure.core$concat$cat__5560$fn__5561 invoke "core.clj" 736]
  [clojure.lang.LazySeq sval "LazySeq.java" 42]
  [clojure.lang.LazySeq seq "LazySeq.java" 58]
  [clojure.lang.Cons next "Cons.java" 39]
  [clojure.lang.RT next "RT.java" 713]
  [clojure.core$next__5451 invokeStatic "core.clj" 64]
  [clojure.core$butlast__5495 invokeStatic "core.clj" 281]
  [clojure.core$butlast__5495 invoke "core.clj" 279]
  [cljs.analyzer$analyze_do_statements_STAR_
   invokeStatic
   "analyzer.cljc"
   2359]
  [cljs.analyzer$analyze_do_statements_STAR_
   invoke
   "analyzer.cljc"
   2358]
  [cljs.analyzer$analyze_do_statements
   invokeStatic
   "analyzer.cljc"
   2362]
  [cljs.analyzer$analyze_do_statements invoke "analyzer.cljc" 2361]
  [cljs.analyzer$fn__2653 invokeStatic "analyzer.cljc" 2366]
  [cljs.analyzer$fn__2653 invoke "analyzer.cljc" 2364]
  [clojure.lang.MultiFn invoke "MultiFn.java" 252]
  [cljs.analyzer$analyze_seq_STAR_ invokeStatic "analyzer.cljc" 4092]
  [cljs.analyzer$analyze_seq_STAR_ invoke "analyzer.cljc" 4090]
  [cljs.analyzer$analyze_seq_STAR__wrap
   invokeStatic
   "analyzer.cljc"
   4097]
  [cljs.analyzer$analyze_seq_STAR__wrap invoke "analyzer.cljc" 4095]
  [cljs.analyzer$analyze_seq invokeStatic "analyzer.cljc" 4121]
  [cljs.analyzer$analyze_seq invoke "analyzer.cljc" 4099]
  [cljs.analyzer$analyze_form invokeStatic "analyzer.cljc" 4308]
  [cljs.analyzer$analyze_form invoke "analyzer.cljc" 4305]
  [cljs.analyzer$analyze_STAR_ invokeStatic "analyzer.cljc" 4361]
  [cljs.analyzer$analyze_STAR_ invoke "analyzer.cljc" 4353]
  [cljs.analyzer$analyze invokeStatic "analyzer.cljc" 4381]
  [cljs.analyzer$analyze invoke "analyzer.cljc" 4364]
  [cljs.analyzer$analyze_seq invokeStatic "analyzer.cljc" 4122]
  [cljs.analyzer$analyze_seq invoke "analyzer.cljc" 4099]
  [cljs.analyzer$analyze_form invokeStatic "analyzer.cljc" 4308]
  [cljs.analyzer$analyze_form invoke "analyzer.cljc" 4305]
  [cljs.analyzer$analyze_STAR_ invokeStatic "analyzer.cljc" 4361]
  [cljs.analyzer$analyze_STAR_ invoke "analyzer.cljc" 4353]
  [cljs.analyzer$analyze invokeStatic "analyzer.cljc" 4381]
  [cljs.analyzer$analyze invoke "analyzer.cljc" 4364]
  [cljs.compiler$emit_source invokeStatic "compiler.cljc" 1585]
  [cljs.compiler$emit_source invoke "compiler.cljc" 1558]
  [cljs.compiler$compile_file_STAR_$fn__4785
   invoke
   "compiler.cljc"
   1672]
  [cljs.compiler$with_core_cljs invokeStatic "compiler.cljc" 1478]
  [cljs.compiler$with_core_cljs invoke "compiler.cljc" 1467]
  [cljs.compiler$compile_file_STAR_ invokeStatic "compiler.cljc" 1656]
  [cljs.compiler$compile_file_STAR_ invoke "compiler.cljc" 1649]
  [cljs.compiler$compile_file$fn__4816 invoke "compiler.cljc" 1754]
  [cljs.compiler$compile_file invokeStatic "compiler.cljc" 1729]
  [cljs.compiler$compile_file invoke "compiler.cljc" 1705]
  [cljs.closure$compile_file invokeStatic "closure.clj" 663]
  [cljs.closure$compile_file invoke "closure.clj" 641]
  [cljs.closure$fn__6491 invokeStatic "closure.clj" 737]
  [cljs.closure$fn__6491 invoke "closure.clj" 731]
  [cljs.closure$fn__6400$G__6393__6407 invoke "closure.clj" 559]
  [cljs.closure$fn__6495 invokeStatic "closure.clj" 746]
  [cljs.closure$fn__6495 invoke "closure.clj" 731]
  [cljs.closure$fn__6400$G__6393__6407 invoke "closure.clj" 559]
  [cljs.closure$compile_task$fn__6587 invoke "closure.clj" 1057]
  [cljs.closure$compile_task invokeStatic "closure.clj" 1055]
  [cljs.closure$compile_task invoke "closure.clj" 1047]
  [cljs.closure$parallel_compile_sources$fn__6593
   invoke
   "closure.clj"
   1085]
  [clojure.lang.AFn applyToHelper "AFn.java" 152]
  [clojure.lang.AFn applyTo "AFn.java" 144]
  [clojure.core$apply invokeStatic "core.clj" 667]
  [clojure.core$with_bindings_STAR_ invokeStatic "core.clj" 1990]
  [clojure.core$with_bindings_STAR_ doInvoke "core.clj" 1990]
  [clojure.lang.RestFn invoke "RestFn.java" 425]
  [clojure.lang.AFn applyToHelper "AFn.java" 156]
  [clojure.lang.RestFn applyTo "RestFn.java" 132]
  [clojure.core$apply invokeStatic "core.clj" 671]
  [clojure.core$bound_fn_STAR_$fn__5818 doInvoke "core.clj" 2020]
  [clojure.lang.RestFn invoke "RestFn.java" 397]
  [clojure.lang.AFn run "AFn.java" 22]
  [java.util.concurrent.ThreadPoolExecutor
   runWorker
   "ThreadPoolExecutor.java"
   1144]
  [java.util.concurrent.ThreadPoolExecutor$Worker
   run
   "ThreadPoolExecutor.java"
   642]
  [java.lang.Thread run "Thread.java" 1589]],
 :cause "Cannot invoke \"Object.getClass()\" because \"x\" is null",
 :phase :compilation}
cljs.user=> 

(the require worked when I changed figwheel.core to or those line & column numbers with 0 so figwheel didn't throw an exception if they were nil)

Hendekagon avatar Feb 13 '24 09:02 Hendekagon