如何在模板开关的默认分支中抛出错误(在生成时)?

How to throw an error (at generation-time) in the default branch of a template switch?

我想确保我的模板开关只用它可以处理的节点调用。如果它与无法识别的概念一起使用,我希望代码生成因错误而失败。有没有办法从模板中抛出生成时错误?


注意:我一直在使用的解决方法是生成无效输出,这将导致错误,例如:

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 是开关无法识别的概念时。

您可以定义一个 "DISMISS TOP RULE",然后在那里报告错误,而不是有后果的默认值:

template switch operationsSwitch extends <none>                              

parameters                                                                   
<< ... >>                                                                    

  null-input message: <none>                                                 

  cases:                                                                     

        ...                                                     


  default: DISMISS TOP RULE error : operation  not supported by generator

这将在消息 window 中显示错误,user/developer 可以单击该消息以从那里到达输入节点和未能匹配的开关。