A few ground rules:
- Values in the
InternPool
are immutable. The meaning of a givenIndex
never changes. - The only kind of "exception" to this is that the namespace of types may change. The namespace index
is constant, but the contents of that namespace can change while the type lives at the same
Index
. - Incremental compilation works at the level of single units of semantic analysis (
AnalUnit
). During semantic analysis, everyAnalUnit
registers "dependencies" on various things ("dependees"). On each incremental update, these dependencies are used to figure out what to re-analyze. - An incremental update may analyze more
AnalUnit
s than are necessary, but it will never analyze the