Перезапуск типизации метода
От: VladD2 Российская Империя www.nemerle.org
Дата: 01.12.14 15:59
Оценка: 1 (1)
Возникло желание сгенерировать тело метода по его типизированному представлению.

Проблема только в том, что типизированное представление появляется в процессе типизации же. Получается проблема курицы и яйца.

В недавнем прошлом ionoy придела в типизатор события позволяющие подключиться между стадиями и получить доступ к типизированному AST тела метода (TExpr) перед началом 2+ стадии компиляции. Проблема только в том, что из этого метода уже крайне трудно остановить типизацию и нельзя запустить ее вручную.

Я придумал простое решение этой задачи. Добавил исключение Nemerle.Compiler.RestartRunBodyTyperException. Если подключиться к событиям typeBuilder.MethodBeforeStageX, изменить в нем тело метода и сгенерировать это исключение, то типизация метода перезапустится и будет скомпилировано новое тело. При этом можно частично переиспользовать TExpr из старого тела.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.