-
Notifications
You must be signed in to change notification settings - Fork 35
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Глобальная оптимизация не вызывает функции INIT и FINAL #298
Comments
Приемлемое решение. Вызываемые функции переименовать в Обоснование: в классическом Рефале-5 запрещены имена, начинающиеся на прочерк. В текущей разрабатываемой версии можно поддерживать оба варианта написания, в следующей поддержку |
В текущей версии можно поддерживать только единственный, новый стиль именования функций. Инициализация и финализация используются только в А предупреждение легко превращается в ошибку. |
Старые имена больше не поддерживаются.
Проблема
Если исходная программа содержала функции
INIT
иFINAL
, то после глобальной оптимизации (#255) они перестанут вызываться. Они переименуются в функции с суффиксами и рантайм их не увидит.Решение
При склейке единиц трансляции находить в них функции с именами
INIT
иFINAL
и строить новые функцииINIT
иFINAL
объединённой единицы трансляции, которые вызывают имеющиеся.Засада
Тонкость: что делать, если пользователь объявит entry-функцию именем
INIT
? Я пока не придумал приемлемого решения.The text was updated successfully, but these errors were encountered: