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

Reply via email to