Повідомлення про відкладені можливості
Коректний код Erlang, якому потрібна нереалізована можливість, завершується одним явним повідомленням, відмінним від звичайних помилок недійсних вхідних даних. Підтримуваний загальний запасний шлях (наприклад, пропущена спеціалізація) відбувається мовчки і не вважається помилкою.
[pattern matching] notimpl: src/example.erl:12:5 [module="example"] [target="native"] [operation="match argument"]
Каталог
features.hpp призначає стабільні ідентифікатори, які ніколи не використовуються повторно, і діагностичні назви, з власником і статусом для кожного запису. Коли можливість з'являється, запис вилучають або уточнюють; його ідентифікатор лишається зарезервованим.
| Власник | Де повідомляє |
|---|---|
| Семантичний аналіз компілятора | Перевірки можливостей для кожної функції, зокрема невикористаного коду |
| Пониження (lowering) у компіляторі | Захисне відхилення на досягнутих операціях; очищає проміжні артефакти |
| Драйвер | -o/--output компонує позиційні вхідні файли або одну ціль проєкту; збирання проєкту компонують кожну виконувану ціль у її output з маніфесту |
| Сервіси runtime | Див. відкладені сервіси runtime |
Правила повідомлень
- Спільний форматувальник
пропускає невідомий контекст, екранує керувальні байти як
\xHHта екранує лапки й зворотні скісні риски, щоб контекст не міг вставити рядки. UTF-8 зберігається. - Рівно одне повідомлення на кожну невдалу операцію, незалежно від
--verbose. - Компілятор: reject_feature повідомляє
про першу невдачу пакета, фіксує стан невдачі, відкидає проміжний вивід і
позначає діагностику як
reported, щоб драйвери не друкували її повторно. - Runtime: FeatureFailure
повідомляє один раз на операцію через позичений приймач (null → stderr).
Подальші виклики повертають зафіксований статус. Невдачі приймача або
форматування стають
diagnostic_failure; винятки локалізуються. - Викликачі передають невдачу далі, не повідомляючи про неї повторно; хост має завершитися з ненульовим кодом і звільнити ресурси звичайним чином.
Clause