У меня есть простой процессор аннотаций, который применяется следующим образом:
@DiffElement(diffReceiver = Renderer.class)
class ViewState {
String getHello();
int getWorld();
}
class Renderer {
void renderHello(String hello);
void renderWorld(int world);
}
Чтобы этот процессор работал, имена get
-функций и аргументы функции Renderer
-интерфейса должны совпадать. Он проверяет это и использует аргумент аннотации для просмотра предоставленного класса и генерации кода на его основе.
Создает один файл.
Я прочитал документы по добавочной обработке аннотаций и могу Пока не решаю, в какую категорию отнести этот процессор. Вот мои соображения:
- он не может быть
isolating
, потому что он не выводит все из AST аннотированного элемента, так как он также проверяет класс из аргумента аннотации - это не может быть
aggregating
, потому что у него нет аннотации к классуRenderer
, поэтому, согласно приведенной выше документации, процессор не будет вызываться при изменении классаRenderer
, потому что процессор не зарегистрирован для обработки этого файла, поэтому это приведет к ошибкам в сгенерированном результате.
Вопросов:
- Я правильно понимаю документацию? Или может еще какая-то категория применима к этому процессору
- Если он не попадает ни в одну из категорий, как я могу сказать Gradle, что он не является инкрементным, чтобы такие инструменты, как «kotlin kapt», не жаловались пользователю, что мой процессор не инкрементальный