Вывод предупреждений из Template Haskell splices

Я знаю, что могу вызвать ошибку времени компиляции, вызвав 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
6
задан hammar 25 April 2011 в 00:12
поделиться