[Haskell-cafe] getting haddock to cooperate with cpp

Evan Laforge qdunkan at gmail.com
Fri Jul 12 20:25:00 CEST 2013


So haddock ignores {-# LANGUAGE CPP #-}, which makes it crash on any
file that uses it.  But if you pass --optghc=-cpp, it runs CPP on
everything, which makes it crash on any file that uses string gaps, or
happens to contain a /*.  /* is rare and easily fixed, but not string
gaps.

It looks like a workaround would be to manually inspect the files for
LANGUAGE CPP and run two haddock passes, but then I would have to get
the two passes to cooperate creating a single TOC and index.

Isn't there some way to run haddock on files that use CPP?

In the broader scheme, it seems perverse to be using CPP in the first
place.  I use it to configure imports and exports, e.g. to swap out a
driver backend on different OSes, and to export more symbols when
testing.  Would it make sense to have a haskell version of CPP that
provides only these features (e.g. just #ifdef, #else, #endif, and
#define) and leaves out the problematic C comments and backslash
expectations?



More information about the Haskell-Cafe mailing list