Как выдать ошибку (во время генерации) в ветке по умолчанию переключателя шаблона?

Я хочу убедиться, что мой переключатель шаблона вызывается только с тех узлов, с которыми он может работать. Если он используется с нераспознанной концепцией, я бы хотел, чтобы при генерации кода произошла ошибка. Есть ли способ выбросить ошибки времени генерации из шаблонов?


Примечание. Обходное решение, которое я использовал, - это генерирование неверного вывода, что приведет к ошибке в конце строки, например:

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

Это приведет к появлению ошибки в окне сообщений, и пользователь / разработчик может щелкнуть сообщение, чтобы перейти к узлу ввода и коммутатору, который не смог найти соответствие оттуда.

Другие вопросы по тегам