Closed
Description
Reproducible by showing the following ns with clerk. Note: it won't reproduce if the defprotocol
form (or the whole ns) is evaluated in the REPL before calling clerk/show!
. Analysis also won't crash if the protocol is required from another ns.
(ns scratch.meta-analyzer-issues-vii)
(defprotocol Foo
(-foo [this]))
(reify Foo
(-foo [this] :baz))
{:via [{:type java.lang.NullPointerException,
:message "Cannot invoke \"java.lang.Class.getName()\" because \"p1__5034_SHARP_\" is null",
:at [clojure.tools.analyzer.jvm$_deftype$fn__5039 invoke "jvm.clj" 319]}],
:trace [[clojure.tools.analyzer.jvm$_deftype$fn__5039 invoke "jvm.clj" 319]
[clojure.core$mapv$fn__8535 invoke "core.clj" 6979]
[clojure.core.protocols$iter_reduce invokeStatic "protocols.clj" 49]
[clojure.core.protocols$fn__8230 invokeStatic "protocols.clj" 75]
[clojure.core.protocols$fn__8230 invoke "protocols.clj" 75]
[clojure.core.protocols$fn__8178$G__8173__8191 invoke "protocols.clj" 13]
[clojure.core$reduce invokeStatic "core.clj" 6886]
[clojure.core$mapv invokeStatic "core.clj" 6970]
[clojure.core$mapv invoke "core.clj" 6970]
[clojure.tools.analyzer.jvm$_deftype invokeStatic "jvm.clj" 319]
[clojure.tools.analyzer.jvm$_deftype invoke "jvm.clj" 313]
[nextjournal.clerk.analyzer$analyze_form$_deftype__56360 invoke "analyzer.clj" 140]
[clojure.tools.analyzer.jvm$parse_reify_STAR_ invokeStatic "jvm.clj" 334]
[clojure.tools.analyzer.jvm$parse_reify_STAR_ invoke "jvm.clj" 324]
[clojure.tools.analyzer.jvm$parse invokeStatic "jvm.clj" 427]
[clojure.tools.analyzer.jvm$parse invoke "jvm.clj" 424]
[clojure.tools.analyzer$analyze_seq invokeStatic "analyzer.clj" 271]
[clojure.tools.analyzer$analyze_seq invoke "analyzer.clj" 262]
[clojure.tools.analyzer$eval1933$fn__1934 invoke "analyzer.clj" 63]
[clojure.lang.MultiFn invoke "MultiFn.java" 234]
[clojure.tools.analyzer$analyze_seq invokeStatic "analyzer.clj" 272]
[clojure.tools.analyzer$analyze_seq invoke "analyzer.clj" 262]
[clojure.tools.analyzer$eval1933$fn__1934 invoke "analyzer.clj" 63]
[clojure.lang.MultiFn invoke "MultiFn.java" 234]
[clojure.tools.analyzer$analyze invokeStatic "analyzer.clj" 115]
[clojure.tools.analyzer$analyze invoke "analyzer.clj" 88]
[clojure.tools.analyzer.jvm$analyze$fn__5099$fn__5104 invoke "jvm.clj" 513]
[clojure.tools.analyzer.jvm$analyze$fn__5099 invoke "jvm.clj" 511]
[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.tools.analyzer.jvm$analyze invokeStatic "jvm.clj" 500]
[clojure.tools.analyzer.jvm$analyze invoke "jvm.clj" 480]
[nextjournal.clerk.analyzer$analyze_form$fn__56362 invoke "analyzer.clj" 141]
[clojure.core$with_redefs_fn invokeStatic "core.clj" 7582]
[clojure.core$with_redefs_fn invoke "core.clj" 7566]
[nextjournal.clerk.analyzer$analyze_form invokeStatic "analyzer.clj" 138]