Всем привет. Пишу плагин для компилятора. На этапе...
# russian
c
Всем привет. Пишу плагин для компилятора. На этапе сборки компилятор дёргает мой плагин. Компилятор передаёт в него только те классы, которые поменялись. Как я могу из своего плагина поменять классы, который не менялись и не передавались в мой плагин? Вот мой кейс
Copy code
// объект конфигурации
object Config

// класс правила
@Configuration(Configuration::class)
class Rule
Мой плагин ищет классы с аннотации
Configuration
интерпритируя их как "правила" и добавляет в указанную конфигурацию. Добавление происходит путём создания
init
блока в классе-конфигурации, а также вызовом спец. функции в созданном
init
блоке. Теперь представьте, что я закоментировал
@Configuration(Configuration::class)
у класса
Rule
. Менялся только класс
Rule
.
Config
ко мне в плагин не попадёт. Я честно меняю IR класса
Config
, но это ни как не действует - в собранном приложении
Config
работает без моих последних изменений. Есть способ явно указать компилятору, что IR такого-то класса менялся? При выключении инкрементальной сборки все начинает работать. Подскажите пожалуйста.
d
На данный момент никак Единственный способ -- это отключать инкрементальную компиляцию
c
@dmitriy.novozhilov Жаль ((
А что-то планируется? ))
Я что-то капался в исходниках kotlin.
org.jetbrains.kotlin.incremental.components.LookupTracker
мне ни как не поможет?
d
Если получится откуда-нибудь его добыть в плагине, можно попробовать пописать туда имена классов/функций, которые ты трогал
Но я не помню, поддерживается ли дописывание lookup'ов из бекенда
А что-то планируется?
KT-55982