I'm not just talking about class hierarchy dependencies, but also reference dependencies.
For example: Foo.java class Foo { public Bar getBar() {...} } Bar.java class Bar{ public Foo getFoo() {...} } This is pretty common in the Java world. What I'd like to do is have Foo be written in Java, and Bar in Clojure (for example). Right now, I'm not aware of any way to make this work. The two-pass compilation does sound like the right track... interesting idea. On Aug 28, 1:09 pm, Michał Marczyk <michal.marc...@gmail.com> wrote: > Providing we're happy with disallowing circular dependencies (which is > what javac and clojure.lang.Compiler do anyway), I wonder if it might > be possible to have a build tool invoke the appropriate compilers on a > file-by-file basis, so that if foo.java depends on a class generated > by bar.clj, which in turn depends on the class defined in quux.java, > the compilation order is quux.java => bar.clj (at this stage > target/classes/quux.class already exists) => foo.java (at this stage > all the .class files generated by the compilation of bar.clj are there > in target/classes)...? > > Alternatively, I suppose a "two-pass" compilation of Clojure sources > might be possible: (1) compile all Clojure code in a way heavily > reliant on reflection for all method calls on classes outside the base > library, disregarding all type hints and such; (2) compile the Java > code; (3) compile the Clojure code again, hopefully producing more > performant, less reflection-heavy bytecode. > > I'm sure I'm missing lots of things, but I'd love to know which, so -- > please let me know. :-) > > Sincerely, > Michał -- 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