The GenerationContext
keeps generated classes around so that multiple processors (or multiple round of the same processor) get a chance to contribute to the same file if necessary.
The Default implementation has a writeGeneratedContent
that must be called at the end. We thought that it might be more obvious to make the context extend from Closeable
so that a method that does this must be implemented.
The problem is withName
that creates copies of the context with specialized naming convention. We don't really want those to be closed as the "main" context is still being processed. It's also unclear if we want to prevent users to use the context once it has been closed.
Comment From: snicoll
I've experimented with this and this is more noise than I thought it would be. The withName
that gives you another instance isn't really Closeable
as we expect the root would be closed at the end and flush all resources. That said, it is an interesting exercise as things are a bit undocumented at the moment and anyone could call writeGeneratedContext
on a child (with a cast though) and that would write everything.
I think we'd be better off with some additional documentation.
Comment From: snicoll
This has been superseded by #28877