Skip to content

Remove HsVersions.h

Sylvain Henry requested to merge hsyl20/ghc:hsyl20/uncpp into master

Replace unnecessary CPP macros with function calls. As a result, HsVersions.h file becomes useless and is removed by this patch.

The most interesting commit is:

Replace CPP assertions with Haskell functions

There is no reason to use CPP. __LINE__ and __FILE__ macros are now
better replaced with GHC's CallStack. As a bonus, assert error messages
now contain more information (function name, column).

Here is the mapping table (HasCallStack omitted):

  * ASSERT:   assert     :: Bool -> a -> a
  * MASSERT:  massert    :: Bool -> m ()
  * ASSERTM:  assertM    :: m Bool -> m ()
  * ASSERT2:  assertPpr  :: Bool -> SDoc -> a -> a
  * MASSERT2: massertPpr :: Bool -> SDoc -> m ()
  * ASSERTM2: assertPprM :: m Bool -> SDoc -> m ()

Then:

Fully remove HsVersions.h

Replace uses of WARN macro with calls to:

  warnPprTrace :: Bool -> SDoc -> a -> a

Remove the now unused HsVersions.h

Bump haddock submodule

Merge request reports