
Юрий
30.08.2017
10:23:10
Вдруг будет в скале рассвет всяких линтеров, как в жс

Oleksandr
30.08.2017
10:29:06
в смысле, что дофига проверок делается на уровне типов

Юрий
30.08.2017
10:29:38
Но не все

Google

Юрий
30.08.2017
10:30:07
Можно кастомные штуки какие-нибудь делать

Oleg
30.08.2017
10:31:14

Oleksandr
30.08.2017
10:37:42
если в скале будет "рассвет линтеров", то это невероятный фейл так называемой "сильной" системы типов
ведь если линтеры (отделенные от компилятора) все равно есть везде, то зачем эти понты с типами?

Юрий
30.08.2017
10:39:36
плагином к компилятору
Можно и плагином. Но тогда ты будешь завязан на кишки компилятора (а их ещё и изучить надо, что в целом нетривиальная задача). С semanticdb можно сделать тулзу, которая не зависит от внутренней реализации компилятора, и может работать как со скалой, так и с дотти. В этом собственно одна из ее целей
Но вообще, я думаю реальных кейсов будет очень мало. Scalafix, scalafmt, и больше даже придумать не могу с ходу

Daniel
30.08.2017
10:41:48
транспайлеры на этом не сделать?

Юрий
30.08.2017
10:42:10

Daniel
30.08.2017
10:42:24
из скалки в нечто прочее

Mikhail
30.08.2017
10:42:36

Юрий
30.08.2017
10:43:21
из скалки в нечто прочее
Можно, но не факт, что это будет проще, чем использовать какое-то более низкоуровневое представление

Mikhail
30.08.2017
10:43:25
статические анализаторы могут выполнять много всяких задач, которые с сильной или слабой системой типов могут быть вобще не связаны)

Oleksandr
30.08.2017
10:43:30

Google

Daniel
30.08.2017
10:44:43

Mikhail
30.08.2017
10:45:33

Oleksandr
30.08.2017
10:45:39
но вообще поинт валидный, ряд доменно-специфичных проверок никак не всунуть в компилятор
с другой стороны, они же вряд ли будут использоваться всеми подряд

Mikhail
30.08.2017
10:47:41

Юрий
30.08.2017
10:48:25

Oleksandr
30.08.2017
10:48:34
или я не понял, о каком именно уровне мозговитости линтеров идет речь :)

Mikhail
30.08.2017
10:51:31

Daniel
30.08.2017
10:56:53
Нада Амин вроде пилила транспайлер в си
но подозреваю сейчас заброшено

Mikhail
30.08.2017
11:27:46
@odomontois ты там в скаламете вопрос задал, можешь пояснить какую строчку ты в итоге хочешь получить? может тебе и не нужен стор.кол)

Oleg
30.08.2017
11:28:48

Mikhail
30.08.2017
11:29:27

Oleg
30.08.2017
11:29:44
Type.Apply
мне нужно к уже имеющимся парентам добавить Enum[XXX]
ты там что-то копаешь, или можно не ждать ответа?

Mikhail
30.08.2017
11:31:59

Oleg
30.08.2017
11:36:10
Term.ApplyType(Ctor.Ref.Name("Enum"), Seq(Type.Name("A"))
говорит парс

Mikhail
30.08.2017
11:38:35

Oleg
30.08.2017
11:39:00
ну копаюсь пока, но возможно

Google

Mikhail
30.08.2017
11:40:45
ну копаюсь пока, но возможно
не забывай про https://astexplorer.net/ неплохо помогает. просто пишешь конечный вариант который хочешь получить и потом по кирпичикам у себя собираешь

Oleg
30.08.2017
11:41:24
Пока сложно понять, как он может быть полезен
Проще квазиквотами

Mikhail
30.08.2017
11:42:36
оно как раз и показывает все что должно в конце получится по аст
а аст уже строишь как хочешь - хочешь эксплисит, хочешь квазиквотами

Oleg
30.08.2017
11:47:00
так вроде же можно и без этого распарсить
q"object xxxx extends enumeratum.Enum[A]".structure

Mikhail
30.08.2017
11:48:58

Alexander
30.08.2017
12:12:29

Юрий
30.08.2017
12:13:17

Alexander
30.08.2017
12:13:30
это которому уже несколько месяцев?

Юрий
30.08.2017
12:13:39
Да

Alexander
30.08.2017
12:13:41
в двух словах можешь резюмировать?

Юрий
30.08.2017
12:14:13

Alexander
30.08.2017
12:14:51
почему? :)

Oleksandr
30.08.2017
12:15:33
Судьба tasty туманна
вроде как не особо туманна — tasty как таковой все, а наследником является semanticdb

Юрий
30.08.2017
12:16:35

Alexander
30.08.2017
12:17:22
ясно спасибо

Oleg
30.08.2017
12:26:39
А как вы дебагаете вашу мету?

Google

Mikhail
30.08.2017
12:30:14

Oleg
30.08.2017
12:31:25

Mikhail
30.08.2017
12:33:50
println где?
внутри meta {}. если оно не скомпилируется - ты и так узнаешь. а если скомпилируется то во время раскрытия мета аннотации все принтлн внутри мета{} уйдут в messages

Oleg
30.08.2017
12:34:10
если оно не компилится, и я хочу увидеть результат

Mikhail
30.08.2017
12:34:37

Oleg
30.08.2017
12:35:42

Mikhail
30.08.2017
12:36:07
в интеллиджи есть слева кнопкулька для раскрытия. можно итог посмотреть - она сработает, если раскрытие норм и ты сам все увидишь. и все также можно в мете перед возвратом сделать println результата - увидишь сгенерированный код

Oleg
30.08.2017
12:37:12
Страшные ошибки пишет

Mikhail
30.08.2017
12:38:27
в идее есть нюанс, что надо ручками ребилд макроса сделать. но не всегда идея и так подхватывает изменения, поэтому потом желательно запустить ребилд сорца в котором аннотация используется ( в интеллиджи можно один файл ребилдить).

Oleg
30.08.2017
12:38:27
Какими ручками?
У меня sbt всё компилит
Это считается ручками?

Mikhail
30.08.2017
12:39:57
Это считается ручками?
нет. но в сбт тоже бывает подклинивает и надо явно клин для макроса сделать. ну и напомню на всякий, что мета макрос должен быть в отдельном (под-)-проекте

Юрий
30.08.2017
12:40:01
В идее это всё ещё так себе работает

Oleg
30.08.2017
12:40:07
тогда что такое ручками?

Юрий
30.08.2017
12:40:12
TDD реально спасает

Mikhail
30.08.2017
12:40:37
ручками - значит вручную запустить ребилд проекта в котором определен макрос, прежде чем запускать билд проекта в котором макрос используется

Oleg
30.08.2017
12:40:53
всё билдится в sbt

Google

Mikhail
30.08.2017
12:40:58
не ждать, что сбт или идея подхватят изменения для инкрементальной компиляции

Oleg
30.08.2017
12:41:05
clean compile сделать?

Юрий
30.08.2017
12:41:10

Mikhail
30.08.2017
12:41:49
lazy val macro-project = project
lazy val target-project = project
macro-project/clean
target-project/compile

Oleg
30.08.2017
12:41:52
Или нужно обязательно, чтобы мета компилировалась идеевским компилятором?

Mikhail
30.08.2017
12:42:42

Oleg
30.08.2017
12:43:22
В общем, пока что отлажиываю только через ручное применение

Mikhail
30.08.2017
12:43:50

Oleg
30.08.2017
12:44:09
для чего?
для того, чтобы идея не писала ошибку при попытке раскрыть макрос визуально

Mikhail
30.08.2017
12:45:56
принтлн - наше все

Oleg
30.08.2017
12:46:49

Mikhail
30.08.2017
12:47:15
где же оно успешно, если экспаншн фейлд?

Oleg
30.08.2017
12:47:25
Оно на самом деле успешно
sbt даже скомпилил уже
а до этого выдавал ошибки в сгенерированном коде
Это ошибка возникает не при компиляции, а при нажатии на кнопку "раскрыть" в идее

Mikhail
30.08.2017
12:48:12
как я писал чуть выше - у меня тоже есть проект, в котором раскрытие ломается - несмотря на то, что в консоли собирает норм
с этим уже ничего не сделать

Oleg
30.08.2017
12:49:04
Ну т.е. отлаживать только запуская эту трансформацию на распарсенном вручную коде