Я знаю, что могу вызвать ошибку времени компиляции, вызвав fail
из монтажа, но возможно ли только сгенерировать предупреждение? В частности, я хотел бы, чтобы это предупреждение можно было превратить в ошибку при компиляции с помощью -Werror
.
По сути, я пытаюсь сделать следующее:
todo :: Q Exp
todo = do
-- emit warning somehow
loc <- location
let message = ... -- generate message based on loc
[| error $(litE (stringL message)) |]
Идея состоит в том, чтобы использовать это вместо undefined
при кодировании, но убедитесь, что он не проникает в производственный код путем компиляции с -Werror
.
myFunc x | isSimpleCase x = 42
| otherwise = $todo