MathematicalOrchid
MathematicalOrchid

Reputation: 62808

How does Langage.Haskell.TH.report work?

Unfortunately, many Template Haskell functions have absolutely no documentation at all. One such function is report. It takes a Bool and a String, and produces a compilation error with the specified string as the error message. Does anybody have any clue what the hell the Bool is for? As best as I can tell, either value does exactly the same thing...

Upvotes: 6

Views: 91

Answers (2)

MathematicalOrchid
MathematicalOrchid

Reputation: 62808

Looking at the source code, report calls qReport, which is a method of some class called Quasi. This method actually has some damned documentation - though only a tiny snippet. I quote:

Report an error (True) or warning (False) ...but carry on; use fail to stop

So it seems to make my TH splice crash with an appropriate error message, I just need to call fail instead. Hopefully this information will be useful to anyone else trying to figure that out...

Upvotes: 2

dflemstr
dflemstr

Reputation: 26147

If the Bool is True, an error is reported; if it is False, a "warning" is reported, meaning that the template code will continue to run to collect more "warnings."

Upvotes: 9

Related Questions