Size: a a a

Чат подкаста «Разбор Полётов»

2020 March 12

SE

Sergei Egorov in Чат подкаста «Разбор Полётов»
в Java компиляторе есть огромный недостаток т.к. нужное API (которое активно используется им же) не публичное, приходится всегда кастовать типы. А так, Lombok ничем не отличается от того же javac, который (сюрприз сюрприз!) делает то же самое для records, pattern matching, switch по строкам, и многих других фичей
источник

SE

Sergei Egorov in Чат подкаста «Разбор Полётов»
Можно посмотреть (и охренеть) в https://github.com/fiji/javac/blob/master/src/main/java/com/sun/tools/javac/comp/Lower.java за этим всем
источник

SE

Sergei Egorov in Чат подкаста «Разбор Полётов»
благодаря Lower http://github.com/bsideup/jabel и работает, кстати. Когда SnowOne выложат видео, можно будет мой доклад на тему посмотреть
источник

SE

Sergei Egorov in Чат подкаста «Разбор Полётов»
и да, Jabel можно хаком называть (я так и делаю, в принципе), потому что я там компилятор совсем не по джентельменски трогаю
источник

SK

Sergey Kapralov in Чат подкаста «Разбор Полётов»
Sergei Egorov
Просто если б ты посмотрел на сорцы Lombok-а, то обнаружил бы, что он регистрирует себя как annotation processor, но на самом деле он работает с деревом AST. Простейший пример:
https://github.com/rzwitserloot/lombok/blob/e95680a76733c22ee5937a586ee50c703d5ba621/src/core/lombok/javac/handlers/HandleToString.java


Никакие сорцы не заменяются, ничего такого.
Смотрел я его сорцы. С другого края правда...
источник

SK

Sergey Kapralov in Чат подкаста «Разбор Полётов»
источник

SK

Sergey Kapralov in Чат подкаста «Разбор Полётов»
И знаю я про то что он AST правит. Выразился просто выше некорректно.
источник

SK

Sergey Kapralov in Чат подкаста «Разбор Полётов»
А хер ли толку?
источник

SK

Sergey Kapralov in Чат подкаста «Разбор Полётов»
Если имплементируя AbstractProcessor, от AST там есть только javax.lang.model, который ридонли
источник

NK

ID:0 in Чат подкаста «Разбор Полётов»
источник

SE

Sergei Egorov in Чат подкаста «Разбор Полётов»
Sergey Kapralov
И знаю я про то что он AST правит. Выразился просто выше некорректно.
> И знаю я про то что он AST правит. Выразился просто выше некорректно

https://t.me/razbor_poletov_chat/90968

https://t.me/razbor_poletov_chat/90979

https://t.me/razbor_poletov_chat/90973

https://t.me/razbor_poletov_chat/90951

ага...
источник

SE

Sergei Egorov in Чат подкаста «Разбор Полётов»
Sergey Kapralov
Если имплементируя AbstractProcessor, от AST там есть только javax.lang.model, который ридонли
ещё раз - Lombok работает путём модификации AST нод. На этом мы хотя бы сошлись?
источник

SK

Sergey Kapralov in Чат подкаста «Разбор Полётов»
Sergei Egorov
ещё раз - Lombok работает путём модификации AST нод. На этом мы хотя бы сошлись?
Об этом я даже изначально не спорил. Я ставлю под сомнение классификацию таких манипуляций как "не-хак".
источник

SE

Sergei Egorov in Чат подкаста «Разбор Полётов»
Sergey Kapralov
Если имплементируя AbstractProcessor, от AST там есть только javax.lang.model, который ридонли
> от AST там есть только javax.lang.model

AFAIK javax.lang.model это не AST, ну да ладно...
источник

AA

Alexey Abashev in Чат подкаста «Разбор Полётов»
Прикольно
источник

SE

Sergei Egorov in Чат подкаста «Разбор Полётов»
Sergey Kapralov
Об этом я даже изначально не спорил. Я ставлю под сомнение классификацию таких манипуляций как "не-хак".
источник

AA

Alexey Abashev in Чат подкаста «Разбор Полётов»
источник

AA

Alexey Abashev in Чат подкаста «Разбор Полётов»
источник

SE

Sergei Egorov in Чат подкаста «Разбор Полётов»
источник

SE

Sergei Egorov in Чат подкаста «Разбор Полётов»
источник