Skip to content

Commit 45d77e3

Browse files
committed
feat: handle validation of unresolveable method values
1 parent 596544e commit 45d77e3

1 file changed

Lines changed: 15 additions & 7 deletions

File tree

  • src/main/clojure/clojure/tools/analyzer/passes/jvm

src/main/clojure/clojure/tools/analyzer/passes/jvm/validate.clj

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -37,14 +37,22 @@
3737
[{:keys [class field form env] :as ast}]
3838
(if-let [handle (-> (env/deref-env) :passes-opts :validate/unresolvable-symbol-handler)]
3939
(handle class field ast)
40-
(if (resolve-ns class env)
41-
(throw (ex-info (str "No such var: " class)
42-
(merge {:form form}
40+
(if-let [resolved-class (maybe-class-literal class)]
41+
(throw (ex-info (str "Cannot find method or field " field " for class "
42+
(.getName ^Class resolved-class))
43+
(merge {:class resolved-class
44+
:field field
45+
:form form}
4346
(source-info env))))
44-
(throw (ex-info (str "No such namespace: " class)
45-
(merge {:ns class
46-
:form form}
47-
(source-info env)))))))
47+
(if (resolve-ns class env)
48+
(throw (ex-info (str "No such var: " class)
49+
(merge {:form form}
50+
(source-info env))))
51+
(throw (ex-info (str "No such namespace: " class)
52+
(merge {:ns class
53+
:form form}
54+
(source-info env))))))))
55+
4856

4957
(defmethod -validate :set!
5058
[{:keys [target form env] :as ast}]

0 commit comments

Comments
 (0)