How does compiling circular dependencies work?

Posted by Fabio F. on Stack Overflow See other posts from Stack Overflow or by Fabio F.
Published on 2010-06-13T16:02:29Z Indexed on 2010/06/13 16:22 UTC
Read the original article Hit count: 179

I've made the example in Java but I think (not tested) that it works in other (all?) languages.

You have 2 files. First, M.java:

public class MType {
    XType x;
    MType() {x = null;}
}

Second, another file (in the same directory), XType.java:

public class XType {
   MType m;
   public XType(MType m) {this.m = m;}
}

Ok it's bad programming, but if you run javac XType it compiles: compiles even MType because XType needs it. But ... MType needs XType ... how does that work? How does the compiler know what is happening?

Probably this is a stupid question, but I would like to know how the compiler (javac or any other compilers you know) manages that situation, not how to avoid it.

I'm asking because i'm writing a precompiler and I would like to manage that situation.

© Stack Overflow or respective owner

Related posts about compiler

Related posts about circular-dependency