Also keep in mind, that in (.something obj), the compiler doesn't see a call to .method, but the whole thing is desugared into a call to the dot form: (. obj something). Since . is a special form, it is always defined.
So when trying to analyze a call to the dot special form, keep in mind that the exact semantics depend on two things: - Whether the type inferencer was able to infer a static type for 'obj' (reflective call vs type cast) - Whether 'something' is a field or a method In your use case that means: You could filter out method calls and field accesses only in the non-reflective case, because if the compiler doesn't know the static type, chances are your tool won't either. And if you don't know the static type, you can't tell whether a method call would succeed. Unfortunately getting the inferred type out of the compiler is not currently supported either. There have been some ideas to expose the result of the compiler analysis to the user, but nothing official yet. kind regards -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en