diff options
author | Herbert Valerio Riedel <hvr@gnu.org> | 2015-12-31 21:02:50 +0100 |
---|---|---|
committer | Herbert Valerio Riedel <hvr@gnu.org> | 2015-12-31 21:08:25 +0100 |
commit | eae40e16a0933fe3b6cb0ee4dc9cdbe3d21e44ce (patch) | |
tree | c6f7fe97e9b22fbed51da5da0ba22d08f116efeb | |
parent | 351dea4a7c07f4e845eac6c2e895f6f41524b40c (diff) | |
download | haskell-eae40e16a0933fe3b6cb0ee4dc9cdbe3d21e44ce.tar.gz |
Use 0/1 instead of YES/NO as `__GLASGOW_HASKELL_TH__` macro value
Using `YES`/`NO` causes all sorts of problems as CPP doesn't work on
symbolic tokens but rather on scalar values.
A use like
#if __GLASGOW_HASKELL_TH__==YES
{-# LANGUAGE TemplateHaskell #-}
#endif
doesn't do what one may naively expect, and neither does
#if __GLASGOW_HASKELL_TH__
{-# LANGUAGE TemplateHaskell #-}
#endif
*unless* `YES` happens to evaluate to a non-zero scalar.
`__GLASGOW_HASKELL_TH__ was originally introduced via D396 / #9734.
Fixes #11322
Reviewed By: austin
Differential Revision: https://phabricator.haskell.org/D1723
-rw-r--r-- | compiler/main/DriverPipeline.hs | 4 | ||||
-rw-r--r-- | docs/users_guide/8.0.1-notes.rst | 5 | ||||
-rw-r--r-- | docs/users_guide/phases.rst | 4 |
3 files changed, 9 insertions, 4 deletions
diff --git a/compiler/main/DriverPipeline.hs b/compiler/main/DriverPipeline.hs index d3038bcf7d..a6a5e1de0b 100644 --- a/compiler/main/DriverPipeline.hs +++ b/compiler/main/DriverPipeline.hs @@ -2024,9 +2024,9 @@ doCpp dflags raw input_fn output_fn = do backend_defs <- getBackendDefs dflags #ifdef GHCI - let th_defs = [ "-D__GLASGOW_HASKELL_TH__=YES" ] + let th_defs = [ "-D__GLASGOW_HASKELL_TH__=1" ] #else - let th_defs = [ "-D__GLASGOW_HASKELL_TH__=NO" ] + let th_defs = [ "-D__GLASGOW_HASKELL_TH__=0" ] #endif -- Default CPP defines in Haskell source ghcVersionH <- getGhcVersionPathName dflags diff --git a/docs/users_guide/8.0.1-notes.rst b/docs/users_guide/8.0.1-notes.rst index 0aa221d066..013b7b8efa 100644 --- a/docs/users_guide/8.0.1-notes.rst +++ b/docs/users_guide/8.0.1-notes.rst @@ -288,6 +288,11 @@ Template Haskell without interpreter support). Also, ``-XTemplateHaskellQuotes`` is considered safe under Safe Haskell. +- The ``__GLASGOW_HASKELL_TH__`` CPP constant denoting support for + ``-XTemplateHaskell`` introduced in GHC 7.10.1 has been changed to + use the values ``1``/``0`` instead of the previous ``YES``/``NO`` + values. + - Partial type signatures can now be used in splices, see :ref:`pts-where`. diff --git a/docs/users_guide/phases.rst b/docs/users_guide/phases.rst index 1c48cfceb6..cc4244eff3 100644 --- a/docs/users_guide/phases.rst +++ b/docs/users_guide/phases.rst @@ -328,8 +328,8 @@ defined by your local GHC installation, the following trick is useful: .. index:: single: __GLASGOW_HASKELL_TH__ - This is set to ``YES`` when the compiler supports Template Haskell, - and to ``NO`` when not. The latter is the case for a stage-1 + This is set to ``1`` when the compiler supports Template Haskell, + and to ``0`` when not. The latter is the case for a stage-1 compiler during bootstrapping, or on architectures where the interpreter is not available. |