Skip to content

Analyzer crashes on deftype / reify in same ns #497

Closed
@zampino

Description

@zampino

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]

Metadata

Metadata

Assignees

No one assigned

    Labels

    analyzerbugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions