Support stage 1 Template Haskell (non-quasi) quotes, fixes #10382.
authorEdward Z. Yang <ezyang@cs.stanford.edu>
Mon, 4 May 2015 23:10:05 +0000 (16:10 -0700)
committerEdward Z. Yang <ezyang@cs.stanford.edu>
Sat, 9 May 2015 07:39:31 +0000 (00:39 -0700)
commit28257cae77023f2ccc4cc1c0cd1fbbd329947a00
treeb33cb09a17cd5fd476e0123740a0aeee200a5fbb
parent2601a436b3a52f52cec08599041b665b9887baa2
Support stage 1 Template Haskell (non-quasi) quotes, fixes #10382.

Summary:
This commit adds stage 1 support for Template Haskell
quoting, e.g. [| ... expr ... |], which is useful
for authors of quasiquoter libraries that do not actually
need splices.  The TemplateHaskell extension now does not
unconditionally fail; it only fails if the renamer encounters
a splice that it can't run.

In order to make sure the referenced data structures
are consistent, template-haskell is now a boot library.

In the following patches, there are:

    - A few extra safety checks which should be enabled
      in stage1
    - Separation of the th/ testsuite into quotes/ which
      can be run on stage1

Note for reviewer: big diff changes are simply code
being moved out of an ifdef; there was no other substantive
change to that code.

Signed-off-by: Edward Z. Yang <ezyang@cs.stanford.edu>
Test Plan: validate

Reviewers: simonpj, austin, goldfire

Subscribers: bgamari, thomie

Differential Revision: https://phabricator.haskell.org/D876

GHC Trac Issues: #10382
compiler/deSugar/DsExpr.hs
compiler/ghc.cabal.in
compiler/main/DynFlags.hs
compiler/main/HscMain.hs
compiler/rename/RnSplice.hs
compiler/typecheck/TcSplice.hs
docs/users_guide/7.12.1-notes.xml
docs/users_guide/glasgow_exts.xml
ghc.mk
mk/warnings.mk