File tree Expand file tree Collapse file tree
src/main/clojure/clojure/tools/analyzer Expand file tree Collapse file tree Original file line number Diff line number Diff line change 412412(defn resolve-hinted-method
413413 " Given a class, method name and param-tags, resolves to the unique matching method.
414414 Returns nil if no match or if ambiguous."
415- [class method-name param-tags]
415+ [methods param-tags]
416416 (let [param-classes (tags-to-maybe-classes param-tags)
417- methods (members class method-name)
418417 matching (filter #(signature-matches? param-classes %) methods)]
419418 (when (= 1 (count matching))
420419 (first matching))))
Original file line number Diff line number Diff line change 5353 :form form}
5454 (source-info env))))))))
5555
56+ (defmethod -validate :method-value
57+ [{:keys [class method kind param-tags methods env] :as ast}]
58+ (let [class (u/maybe-class class)]
59+ (if param-tags
60+ (if-let [m (resolve-hinted-method methods param-tags)]
61+ (assoc ast
62+ :class class
63+ :methods [m]
64+ :validated? true )
65+ (throw (ex-info (str " param-tags " (pr-str param-tags)
66+ " insufficient to resolve " (name kind) " method "
67+ method " in class " (.getName ^Class class))
68+ (merge {:class class
69+ :method method
70+ :param-tags param-tags}
71+ (source-info env)))))
72+ (assoc ast
73+ :class class
74+ :validated? true ))))
5675
5776(defmethod -validate :set!
5877 [{:keys [target form env] :as ast}]
You can’t perform that action at this time.
0 commit comments