Как выдать ошибку (во время генерации) в ветке по умолчанию переключателя шаблона?
Я хочу убедиться, что мой переключатель шаблона вызывается только с тех узлов, с которыми он может работать. Если он используется с нераспознанной концепцией, я бы хотел, чтобы при генерации кода произошла ошибка. Есть ли способ выбросить ошибки времени генерации из шаблонов?
Примечание. Обходное решение, которое я использовал, - это генерирование неверного вывода, что приведет к ошибке в конце строки, например:
default: <T "unknown command: " + $COPY_SRC$[null] T>
который будет генерировать ошибку как
textgen error: 'No textgen for Draw.structure.Fill' in [rightExpression] Fill null[847086916112855242] in Draw.sandbox@0
когда Fill
это понятие не распознается коммутатором.
1 ответ
Вместо значения по умолчанию, которое имеет следствие, вы можете определить "DISMISS TOP RULE" и сообщить об ошибке там:
template switch operationsSwitch extends <none>
parameters
<< ... >>
null-input message: <none>
cases:
...
default: DISMISS TOP RULE error : operation not supported by generator
Это приведет к появлению ошибки в окне сообщений, и пользователь / разработчик может щелкнуть сообщение, чтобы перейти к узлу ввода и коммутатору, который не смог найти соответствие оттуда.