Incremental java compile AKA javac print compile dependencies
Jonathan Gibbons
jonathan.gibbons at oracle.com
Thu May 27 11:33:54 PDT 2010
On 05/27/2010 12:20 AM, Joshua Maurice wrote:
>
>
> Thank you again, but do you know any good examples of those APIs? I am
> unable to quickly find some good documentation or examples on Types,
> type mirrors, and such.
For docs, start with
http://java.sun.com/javase/6/docs/technotes/guides/javac/index.html
Roughly speaking, once you get to the point of being able to call
parse() and analyze() ...
-- walk the trees with a TreeScanner
-- you're looking for nodes which reference other classes; this
mostly means you need to look for declarations and expressions
-- expressions have a type (TypeMirror), from a type you want to get to
its element.
-- a type is an "instance", like List<String>, an element is an
entity in the source and is like a decl of a family of types, like List<T>
-- move between types and elements using the Types and Elements
utility APIs
-- from an element, use getEnclosingElement to get to the element that
you wish to record a dependency on
-- e.g. your class might use X.foo, but you might want to record a
dependency on class X, not field foo.
-- from an element, if you need to you can get to its tree (via
Trees.getTree) or its compilation unit (via Trees.getPath)
-- from a compilation unit, you can get the source file
And Robert's your father's brother.
More information about the compiler-dev
mailing list