From 80b8a8a2525d4e4c60b7c9439a23ac47d9612802 Mon Sep 17 00:00:00 2001
From: Alec Theriault <alec.theriault@gmail.com>
Date: Mon, 7 Oct 2019 15:13:52 -0400
Subject: Add a regression test for #1091

Previously, this input would crash Haddock.
---
 hypsrc-test/ref/src/Bug1091.html | 34 ++++++++++++++++++++++++++++++++++
 1 file changed, 34 insertions(+)
 create mode 100644 hypsrc-test/ref/src/Bug1091.html

(limited to 'hypsrc-test/ref/src')

diff --git a/hypsrc-test/ref/src/Bug1091.html b/hypsrc-test/ref/src/Bug1091.html
new file mode 100644
index 00000000..730b6e25
--- /dev/null
+++ b/hypsrc-test/ref/src/Bug1091.html
@@ -0,0 +1,34 @@
+<html xmlns="http://www.w3.org/1999/xhtml"
+><head
+  ><link rel="stylesheet" type="text/css" href="style.css"
+     /><script type="text/javascript" src="highlight.js"
+    ></script
+    ></head
+  ><body
+  ><pre
+    ><span class="hs-pragma"
+      >{-# LANGUAGE CPP #-}</span
+      ><span
+      >
+</span
+      ><span id="line-2"
+      ></span
+      ><span class="hs-keyword"
+      >module</span
+      ><span
+      > </span
+      ><span class="hs-identifier"
+      >Bug1091</span
+      ><span
+      > </span
+      ><span class="hs-keyword"
+      >where</span
+      ><span class="hs-cpp"
+      >
+
+#include &quot;Include1For1091.h&quot;
+</span
+      ></pre
+    ></body
+  ></html
+>
\ No newline at end of file
-- 
cgit v1.2.3


From cdf4445a877428f5969f712a95830af38029b9a0 Mon Sep 17 00:00:00 2001
From: Alec Theriault <alec.theriault@gmail.com>
Date: Mon, 7 Oct 2019 20:45:40 -0400
Subject: Add Hyperlinker test cases for TH-related stuff

Hopefully this will guard against regressions around quasiquotes, TH
quotes, and TH splices.
---
 hypsrc-test/ref/src/CallingQuotes.html             | 104 ++++
 hypsrc-test/ref/src/Quasiquoter.html               | 415 +++++++++++++
 .../ref/src/TemplateHaskellQuasiquotes.html        | 659 +++++++++++++++++++++
 hypsrc-test/ref/src/TemplateHaskellSplices.html    | 135 +++++
 hypsrc-test/ref/src/UsingQuasiquotes.html          | 104 ++++
 hypsrc-test/src/Quasiquoter.hs                     |  16 +
 hypsrc-test/src/TemplateHaskellQuasiquotes.hs      |  39 ++
 hypsrc-test/src/TemplateHaskellSplices.hs          |   8 +
 hypsrc-test/src/UsingQuasiquotes.hs                |   9 +
 9 files changed, 1489 insertions(+)
 create mode 100644 hypsrc-test/ref/src/CallingQuotes.html
 create mode 100644 hypsrc-test/ref/src/Quasiquoter.html
 create mode 100644 hypsrc-test/ref/src/TemplateHaskellQuasiquotes.html
 create mode 100644 hypsrc-test/ref/src/TemplateHaskellSplices.html
 create mode 100644 hypsrc-test/ref/src/UsingQuasiquotes.html
 create mode 100644 hypsrc-test/src/Quasiquoter.hs
 create mode 100644 hypsrc-test/src/TemplateHaskellQuasiquotes.hs
 create mode 100644 hypsrc-test/src/TemplateHaskellSplices.hs
 create mode 100644 hypsrc-test/src/UsingQuasiquotes.hs

(limited to 'hypsrc-test/ref/src')

diff --git a/hypsrc-test/ref/src/CallingQuotes.html b/hypsrc-test/ref/src/CallingQuotes.html
new file mode 100644
index 00000000..9b2e3209
--- /dev/null
+++ b/hypsrc-test/ref/src/CallingQuotes.html
@@ -0,0 +1,104 @@
+<html xmlns="http://www.w3.org/1999/xhtml"
+><head
+  ><link rel="stylesheet" type="text/css" href="style.css"
+     /><script type="text/javascript" src="highlight.js"
+    ></script
+    ></head
+  ><body
+  ><pre
+    ><span class="hs-pragma"
+      >{-# LANGUAGE QuasiQuotes #-}</span
+      ><span
+      >
+</span
+      ><span id="line-2"
+      ></span
+      ><span class="hs-keyword"
+      >module</span
+      ><span
+      > </span
+      ><span class="hs-identifier"
+      >CallingQuotes</span
+      ><span
+      > </span
+      ><span class="hs-keyword"
+      >where</span
+      ><span
+      >
+</span
+      ><span id="line-3"
+      ></span
+      ><span
+      >
+</span
+      ><span id="line-4"
+      ></span
+      ><span class="hs-keyword"
+      >import</span
+      ><span
+      > </span
+      ><span class="annot"
+      ><a href="Quasiquoter.html"
+	><span class="hs-identifier"
+	  >Quasiquoter</span
+	  ></a
+	></span
+      ><span
+      >
+</span
+      ><span id="line-5"
+      ></span
+      ><span
+      >
+</span
+      ><span id="line-6"
+      ></span
+      ><span id="baz"
+      ><span class="annot"
+	><span class="annottext"
+	  >baz :: [Char]
+</span
+	  ><a href="CallingQuotes.html#baz"
+	  ><span class="hs-identifier hs-var hs-var"
+	    >baz</span
+	    ></a
+	  ></span
+	></span
+      ><span
+      >  </span
+      ><span class="hs-glyph"
+      >=</span
+      ><span
+      > </span
+      ><span class="annot"
+      ><span class=""
+	>[string| foo bar |]</span
+	></span
+      ><span
+      > </span
+      ><span class="annot"
+      ><span class="annottext"
+	>[Char] -&gt; [Char] -&gt; [Char]
+forall a. [a] -&gt; [a] -&gt; [a]
+</span
+	><span class="hs-operator hs-var"
+	>++</span
+	></span
+      ><span
+      > </span
+      ><span class="annot"
+      ><span class=""
+	>[string| some
+  mulitline
+  quasiquote
+|]</span
+	></span
+      ><span
+      >
+</span
+      ><span id="line-10"
+      ></span
+      ></pre
+    ></body
+  ></html
+>
\ No newline at end of file
diff --git a/hypsrc-test/ref/src/Quasiquoter.html b/hypsrc-test/ref/src/Quasiquoter.html
new file mode 100644
index 00000000..ab631e8c
--- /dev/null
+++ b/hypsrc-test/ref/src/Quasiquoter.html
@@ -0,0 +1,415 @@
+<html xmlns="http://www.w3.org/1999/xhtml"
+><head
+  ><link rel="stylesheet" type="text/css" href="style.css"
+     /><script type="text/javascript" src="highlight.js"
+    ></script
+    ></head
+  ><body
+  ><pre
+    ><span class="hs-keyword"
+      >module</span
+      ><span
+      > </span
+      ><span class="hs-identifier"
+      >Quasiquoter</span
+      ><span
+      > </span
+      ><span class="hs-special"
+      >(</span
+      ><span
+      > </span
+      ><span class="annot"
+      ><a href="Quasiquoter.html#string"
+	><span class="hs-identifier"
+	  >string</span
+	  ></a
+	></span
+      ><span
+      > </span
+      ><span class="hs-special"
+      >)</span
+      ><span
+      > </span
+      ><span class="hs-keyword"
+      >where</span
+      ><span
+      >
+</span
+      ><span id="line-2"
+      ></span
+      ><span
+      >
+</span
+      ><span id="line-3"
+      ></span
+      ><span class="hs-keyword"
+      >import</span
+      ><span
+      > </span
+      ><span class="annot"
+      ><span class="hs-identifier"
+	>Language.Haskell.TH.Quote</span
+	></span
+      ><span
+      >
+</span
+      ><span id="line-4"
+      ></span
+      ><span class="hs-keyword"
+      >import</span
+      ><span
+      > </span
+      ><span class="annot"
+      ><span class="hs-identifier"
+	>Language.Haskell.TH.Syntax</span
+	></span
+      ><span
+      >
+</span
+      ><span id="line-5"
+      ></span
+      ><span
+      >
+</span
+      ><span id="line-6"
+      ></span
+      ><span class="hs-comment"
+      >-- | Quoter for constructing multiline string literals</span
+      ><span
+      >
+</span
+      ><span id="line-7"
+      ></span
+      ><span class="annot"
+      ><a href="Quasiquoter.html#string"
+	><span class="hs-identifier hs-type"
+	  >string</span
+	  ></a
+	></span
+      ><span
+      > </span
+      ><span class="hs-glyph"
+      >::</span
+      ><span
+      > </span
+      ><span class="annot"
+      ><span class="hs-identifier hs-type"
+	>QuasiQuoter</span
+	></span
+      ><span
+      >
+</span
+      ><span id="line-8"
+      ></span
+      ><span id="string"
+      ><span class="annot"
+	><span class="annottext"
+	  >string :: QuasiQuoter
+</span
+	  ><a href="Quasiquoter.html#string"
+	  ><span class="hs-identifier hs-var hs-var"
+	    >string</span
+	    ></a
+	  ></span
+	></span
+      ><span
+      > </span
+      ><span class="hs-glyph"
+      >=</span
+      ><span
+      > </span
+      ><span class="annot"
+      ><span class="annottext"
+	>QuasiQuoter :: (String -&gt; Q Exp)
+-&gt; (String -&gt; Q Pat)
+-&gt; (String -&gt; Q Type)
+-&gt; (String -&gt; Q [Dec])
+-&gt; QuasiQuoter
+</span
+	><span class="hs-identifier hs-type hs-type"
+	>QuasiQuoter</span
+	></span
+      ><span
+      >
+</span
+      ><span id="line-9"
+      ></span
+      ><span
+      >  </span
+      ><span class="hs-special"
+      >{</span
+      ><span
+      > </span
+      ><span class="annot"
+      ><span class="annottext"
+	>quoteExp :: String -&gt; Q Exp
+</span
+	><span class="hs-identifier hs-var"
+	>quoteExp</span
+	></span
+      ><span
+      > </span
+      ><span class="hs-glyph"
+      >=</span
+      ><span
+      > </span
+      ><span class="annot"
+      ><span class="annottext"
+	>Exp -&gt; Q Exp
+forall (f :: * -&gt; *) a. Applicative f =&gt; a -&gt; f a
+</span
+	><span class="hs-identifier hs-var"
+	>pure</span
+	></span
+      ><span
+      > </span
+      ><span class="annot"
+      ><span class="annottext"
+	>(Exp -&gt; Q Exp) -&gt; (String -&gt; Exp) -&gt; String -&gt; Q Exp
+forall b c a. (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
+</span
+	><span class="hs-operator hs-var"
+	>.</span
+	></span
+      ><span
+      > </span
+      ><span class="annot"
+      ><span class="annottext"
+	>Lit -&gt; Exp
+</span
+	><span class="hs-identifier hs-var"
+	>LitE</span
+	></span
+      ><span
+      > </span
+      ><span class="annot"
+      ><span class="annottext"
+	>(Lit -&gt; Exp) -&gt; (String -&gt; Lit) -&gt; String -&gt; Exp
+forall b c a. (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
+</span
+	><span class="hs-operator hs-var"
+	>.</span
+	></span
+      ><span
+      > </span
+      ><span class="annot"
+      ><span class="annottext"
+	>String -&gt; Lit
+</span
+	><span class="hs-identifier hs-var"
+	>StringL</span
+	></span
+      ><span
+      >
+</span
+      ><span id="line-10"
+      ></span
+      ><span
+      >  </span
+      ><span class="hs-special"
+      >,</span
+      ><span
+      > </span
+      ><span class="annot"
+      ><span class="annottext"
+	>quotePat :: String -&gt; Q Pat
+</span
+	><span class="hs-identifier hs-var"
+	>quotePat</span
+	></span
+      ><span
+      > </span
+      ><span class="hs-glyph"
+      >=</span
+      ><span
+      > </span
+      ><span class="annot"
+      ><span class="annottext"
+	>String -&gt; Q Pat
+forall a. String -&gt; Q a
+</span
+	><a href="#"
+	><span class="hs-identifier hs-var"
+	  >invalidDomain</span
+	  ></a
+	></span
+      ><span
+      >
+</span
+      ><span id="line-11"
+      ></span
+      ><span
+      >  </span
+      ><span class="hs-special"
+      >,</span
+      ><span
+      > </span
+      ><span class="annot"
+      ><span class="annottext"
+	>quoteType :: String -&gt; Q Type
+</span
+	><span class="hs-identifier hs-var"
+	>quoteType</span
+	></span
+      ><span
+      > </span
+      ><span class="hs-glyph"
+      >=</span
+      ><span
+      > </span
+      ><span class="annot"
+      ><span class="annottext"
+	>String -&gt; Q Type
+forall a. String -&gt; Q a
+</span
+	><a href="#"
+	><span class="hs-identifier hs-var"
+	  >invalidDomain</span
+	  ></a
+	></span
+      ><span
+      >
+</span
+      ><span id="line-12"
+      ></span
+      ><span
+      >  </span
+      ><span class="hs-special"
+      >,</span
+      ><span
+      > </span
+      ><span class="annot"
+      ><span class="annottext"
+	>quoteDec :: String -&gt; Q [Dec]
+</span
+	><span class="hs-identifier hs-var"
+	>quoteDec</span
+	></span
+      ><span
+      > </span
+      ><span class="hs-glyph"
+      >=</span
+      ><span
+      > </span
+      ><span class="annot"
+      ><span class="annottext"
+	>String -&gt; Q [Dec]
+forall a. String -&gt; Q a
+</span
+	><a href="#"
+	><span class="hs-identifier hs-var"
+	  >invalidDomain</span
+	  ></a
+	></span
+      ><span
+      >
+</span
+      ><span id="line-13"
+      ></span
+      ><span
+      >  </span
+      ><span class="hs-special"
+      >}</span
+      ><span
+      >
+</span
+      ><span id="line-14"
+      ></span
+      ><span
+      >  </span
+      ><span class="hs-keyword"
+      >where</span
+      ><span
+      >
+</span
+      ><span id="line-15"
+      ></span
+      ><span
+      >    </span
+      ><span id=""
+      ><span class="annot"
+	><a href="#"
+	  ><span class="hs-identifier hs-type"
+	    >invalidDomain</span
+	    ></a
+	  ></span
+	><span
+	> </span
+	><span class="hs-glyph"
+	>::</span
+	><span
+	> </span
+	><span class="annot"
+	><span class="hs-identifier hs-type"
+	  >String</span
+	  ></span
+	><span
+	> </span
+	><span class="hs-glyph"
+	>-&gt;</span
+	><span
+	> </span
+	><span class="annot"
+	><span class="hs-identifier hs-type"
+	  >Q</span
+	  ></span
+	><span
+	> </span
+	><span class="annot"
+	><a href="#"
+	  ><span class="hs-identifier hs-type"
+	    >a</span
+	    ></a
+	  ></span
+	></span
+      ><span
+      >
+</span
+      ><span id="line-16"
+      ></span
+      ><span
+      >    </span
+      ><span id=""
+      ><span class="annot"
+	><span class="annottext"
+	  >invalidDomain :: String -&gt; Q a
+</span
+	  ><a href="#"
+	  ><span class="hs-identifier hs-var hs-var"
+	    >invalidDomain</span
+	    ></a
+	  ></span
+	></span
+      ><span
+      > </span
+      ><span class="hs-identifier"
+      >_</span
+      ><span
+      > </span
+      ><span class="hs-glyph"
+      >=</span
+      ><span
+      > </span
+      ><span class="annot"
+      ><span class="annottext"
+	>String -&gt; Q a
+forall (m :: * -&gt; *) a. MonadFail m =&gt; String -&gt; m a
+</span
+	><span class="hs-identifier hs-var"
+	>fail</span
+	></span
+      ><span
+      > </span
+      ><span class="annot"
+      ><span class="hs-string"
+	>&quot;stringQuoter: only valid in expression context&quot;</span
+	></span
+      ><span
+      >
+</span
+      ><span id="line-17"
+      ></span
+      ></pre
+    ></body
+  ></html
+>
\ No newline at end of file
diff --git a/hypsrc-test/ref/src/TemplateHaskellQuasiquotes.html b/hypsrc-test/ref/src/TemplateHaskellQuasiquotes.html
new file mode 100644
index 00000000..6552b676
--- /dev/null
+++ b/hypsrc-test/ref/src/TemplateHaskellQuasiquotes.html
@@ -0,0 +1,659 @@
+<html xmlns="http://www.w3.org/1999/xhtml"
+><head
+  ><link rel="stylesheet" type="text/css" href="style.css"
+     /><script type="text/javascript" src="highlight.js"
+    ></script
+    ></head
+  ><body
+  ><pre
+    ><span class="hs-pragma"
+      >{-# LANGUAGE TemplateHaskell #-}</span
+      ><span
+      >
+</span
+      ><span id="line-2"
+      ></span
+      ><span
+      >
+</span
+      ><span id="line-3"
+      ></span
+      ><span class="hs-keyword"
+      >module</span
+      ><span
+      > </span
+      ><span class="hs-identifier"
+      >TemplateHaskellQuasiquotes</span
+      ><span
+      > </span
+      ><span class="hs-keyword"
+      >where</span
+      ><span
+      >
+</span
+      ><span id="line-4"
+      ></span
+      ><span
+      >
+</span
+      ><span id="line-5"
+      ></span
+      ><span class="hs-keyword"
+      >import</span
+      ><span
+      > </span
+      ><span class="annot"
+      ><span class="hs-identifier"
+	>Language.Haskell.TH</span
+	></span
+      ><span
+      >
+</span
+      ><span id="line-6"
+      ></span
+      ><span
+      >
+</span
+      ><span id="line-7"
+      ></span
+      ><span class="annot"
+      ><a href="TemplateHaskellQuasiquotes.html#aDecl"
+	><span class="hs-identifier hs-type"
+	  >aDecl</span
+	  ></a
+	></span
+      ><span
+      > </span
+      ><span class="hs-glyph"
+      >::</span
+      ><span
+      > </span
+      ><span class="annot"
+      ><span class="hs-identifier hs-type"
+	>DecsQ</span
+	></span
+      ><span
+      >
+</span
+      ><span id="line-8"
+      ></span
+      ><span id="aDecl"
+      ><span class="annot"
+	><span class="annottext"
+	  >aDecl :: DecsQ
+</span
+	  ><a href="TemplateHaskellQuasiquotes.html#aDecl"
+	  ><span class="hs-identifier hs-var hs-var"
+	    >aDecl</span
+	    ></a
+	  ></span
+	></span
+      ><span
+      > </span
+      ><span class="hs-glyph"
+      >=</span
+      ><span
+      > </span
+      ><span class="hs-special"
+      >[d|</span
+      ><span
+      >
+</span
+      ><span id="line-9"
+      ></span
+      ><span
+      >    </span
+      ><span class="hs-identifier"
+      >bar</span
+      ><span
+      > </span
+      ><span class="hs-glyph"
+      >::</span
+      ><span
+      > </span
+      ><span class=""
+      >$aType</span
+      ><span
+      > </span
+      ><span class="hs-glyph"
+      >-&gt;</span
+      ><span
+      > </span
+      ><span class="hs-special"
+      >[</span
+      ><span
+      > </span
+      ><span class="hs-special"
+      >(</span
+      ><span class="hs-identifier"
+      >Int</span
+      ><span class="hs-special"
+      >,</span
+      ><span
+      > </span
+      ><span class="hs-identifier"
+      >String</span
+      ><span class="hs-special"
+      >)</span
+      ><span
+      > </span
+      ><span class="hs-special"
+      >]</span
+      ><span
+      >
+</span
+      ><span id="line-10"
+      ></span
+      ><span
+      >    </span
+      ><span class="hs-identifier"
+      >bar</span
+      ><span
+      > </span
+      ><span class=""
+      >$aPattern</span
+      ><span
+      > </span
+      ><span class="hs-glyph"
+      >=</span
+      ><span
+      > </span
+      ><span class=""
+      >$anExpression</span
+      ><span
+      >
+</span
+      ><span id="line-11"
+      ></span
+      ><span
+      >  </span
+      ><span class="hs-special"
+      >|]</span
+      ><span
+      >
+</span
+      ><span id="line-12"
+      ></span
+      ><span
+      >
+</span
+      ><span id="line-13"
+      ></span
+      ><span class="annot"
+      ><a href="TemplateHaskellQuasiquotes.html#aPattern"
+	><span class="hs-identifier hs-type"
+	  >aPattern</span
+	  ></a
+	></span
+      ><span
+      > </span
+      ><span class="hs-glyph"
+      >::</span
+      ><span
+      > </span
+      ><span class="annot"
+      ><span class="hs-identifier hs-type"
+	>PatQ</span
+	></span
+      ><span
+      >
+</span
+      ><span id="line-14"
+      ></span
+      ><span id="aPattern"
+      ><span class="annot"
+	><span class="annottext"
+	  >aPattern :: PatQ
+</span
+	  ><a href="TemplateHaskellQuasiquotes.html#aPattern"
+	  ><span class="hs-identifier hs-var hs-var"
+	    >aPattern</span
+	    ></a
+	  ></span
+	></span
+      ><span
+      > </span
+      ><span class="hs-glyph"
+      >=</span
+      ><span
+      > </span
+      ><span class="hs-special"
+      >[p|</span
+      ><span
+      >
+</span
+      ><span id="line-15"
+      ></span
+      ><span
+      >    </span
+      ><span class="hs-special"
+      >[</span
+      ><span
+      > </span
+      ><span class="hs-identifier"
+      >aCrazyLongVariableName</span
+      ><span
+      >
+</span
+      ><span id="line-16"
+      ></span
+      ><span
+      >    </span
+      ><span class="hs-special"
+      >,</span
+      ><span
+      > </span
+      ><span class="hs-identifier"
+      >_unused</span
+      ><span
+      >
+</span
+      ><span id="line-17"
+      ></span
+      ><span
+      >    </span
+      ><span class="hs-special"
+      >,</span
+      ><span
+      > </span
+      ><span class="hs-special"
+      >(</span
+      ><span class="hs-identifier"
+      >y</span
+      ><span class="hs-special"
+      >,</span
+      ><span
+      > </span
+      ><span class="hs-identifier"
+      >z</span
+      ><span class="hs-special"
+      >)</span
+      ><span
+      >
+</span
+      ><span id="line-18"
+      ></span
+      ><span
+      >    </span
+      ><span class="hs-special"
+      >,</span
+      ><span
+      > </span
+      ><span class="hs-special"
+      >(</span
+      ><span
+      > </span
+      ><span class=""
+      >$aNumberPattern</span
+      ><span class="hs-special"
+      >,</span
+      ><span
+      > </span
+      ><span class="hs-string"
+      >&quot;hello&quot;</span
+      ><span class="hs-special"
+      >)</span
+      ><span
+      >
+</span
+      ><span id="line-19"
+      ></span
+      ><span
+      >    </span
+      ><span class="hs-special"
+      >]</span
+      ><span
+      >
+</span
+      ><span id="line-20"
+      ></span
+      ><span
+      >  </span
+      ><span class="hs-special"
+      >|]</span
+      ><span
+      >
+</span
+      ><span id="line-21"
+      ></span
+      ><span
+      >
+</span
+      ><span id="line-22"
+      ></span
+      ><span class="annot"
+      ><a href="TemplateHaskellQuasiquotes.html#aNumberPattern"
+	><span class="hs-identifier hs-type"
+	  >aNumberPattern</span
+	  ></a
+	></span
+      ><span
+      > </span
+      ><span class="hs-glyph"
+      >::</span
+      ><span
+      > </span
+      ><span class="annot"
+      ><span class="hs-identifier hs-type"
+	>PatQ</span
+	></span
+      ><span
+      >
+</span
+      ><span id="line-23"
+      ></span
+      ><span id="aNumberPattern"
+      ><span class="annot"
+	><span class="annottext"
+	  >aNumberPattern :: PatQ
+</span
+	  ><a href="TemplateHaskellQuasiquotes.html#aNumberPattern"
+	  ><span class="hs-identifier hs-var hs-var"
+	    >aNumberPattern</span
+	    ></a
+	  ></span
+	></span
+      ><span
+      > </span
+      ><span class="hs-glyph"
+      >=</span
+      ><span
+      > </span
+      ><span class="hs-special"
+      >[p|</span
+      ><span
+      >
+</span
+      ><span id="line-24"
+      ></span
+      ><span
+      >    </span
+      ><span class="hs-identifier"
+      >w</span
+      ><span
+      > </span
+      ><span class="hs-glyph"
+      >@</span
+      ><span
+      > </span
+      ><span class="hs-identifier"
+      >v</span
+      ><span
+      > </span
+      ><span class="hs-glyph"
+      >@</span
+      ><span
+      > </span
+      ><span class="hs-number"
+      >4.5</span
+      ><span
+      >
+</span
+      ><span id="line-25"
+      ></span
+      ><span
+      >  </span
+      ><span class="hs-special"
+      >|]</span
+      ><span
+      >
+</span
+      ><span id="line-26"
+      ></span
+      ><span
+      >
+</span
+      ><span id="line-27"
+      ></span
+      ><span class="annot"
+      ><a href="TemplateHaskellQuasiquotes.html#anExpression"
+	><span class="hs-identifier hs-type"
+	  >anExpression</span
+	  ></a
+	></span
+      ><span class="hs-special"
+      >,</span
+      ><span
+      > </span
+      ><span class="annot"
+      ><a href="TemplateHaskellQuasiquotes.html#anExpression2"
+	><span class="hs-identifier hs-type"
+	  >anExpression2</span
+	  ></a
+	></span
+      ><span
+      > </span
+      ><span class="hs-glyph"
+      >::</span
+      ><span
+      > </span
+      ><span class="annot"
+      ><span class="hs-identifier hs-type"
+	>ExpQ</span
+	></span
+      ><span
+      >
+</span
+      ><span id="line-28"
+      ></span
+      ><span id="anExpression"
+      ><span class="annot"
+	><span class="annottext"
+	  >anExpression :: ExpQ
+</span
+	  ><a href="TemplateHaskellQuasiquotes.html#anExpression"
+	  ><span class="hs-identifier hs-var hs-var"
+	    >anExpression</span
+	    ></a
+	  ></span
+	></span
+      ><span
+      > </span
+      ><span class="hs-glyph"
+      >=</span
+      ><span
+      > </span
+      ><span class="hs-special"
+      >[e|</span
+      ><span
+      >
+</span
+      ><span id="line-29"
+      ></span
+      ><span
+      >    </span
+      ><span class="hs-special"
+      >[</span
+      ><span
+      > </span
+      ><span class="hs-special"
+      >(</span
+      ><span class="hs-number"
+      >1</span
+      ><span
+      > </span
+      ><span class="hs-operator"
+      >+</span
+      ><span
+      > </span
+      ><span class=""
+      >$anExpression2</span
+      ><span class="hs-special"
+      >,</span
+      ><span
+      > </span
+      ><span class="hs-string"
+      >&quot;world&quot;</span
+      ><span class="hs-special"
+      >)</span
+      ><span
+      > </span
+      ><span class="hs-special"
+      >]</span
+      ><span
+      >
+</span
+      ><span id="line-30"
+      ></span
+      ><span
+      >  </span
+      ><span class="hs-special"
+      >|]</span
+      ><span
+      >
+</span
+      ><span id="line-31"
+      ></span
+      ><span id="anExpression2"
+      ><span class="annot"
+	><span class="annottext"
+	  >anExpression2 :: ExpQ
+</span
+	  ><a href="TemplateHaskellQuasiquotes.html#anExpression2"
+	  ><span class="hs-identifier hs-var hs-var"
+	    >anExpression2</span
+	    ></a
+	  ></span
+	></span
+      ><span
+      > </span
+      ><span class="hs-glyph"
+      >=</span
+      ><span
+      > </span
+      ><span class="hs-special"
+      >[|</span
+      ><span
+      > </span
+      ><span class="hs-special"
+      >(</span
+      ><span class="hs-number"
+      >1</span
+      ><span
+      > </span
+      ><span class="hs-operator"
+      >+</span
+      ><span
+      > </span
+      ><span class="hs-identifier"
+      >round</span
+      ><span
+      > </span
+      ><span class="hs-identifier"
+      >pi</span
+      ><span class="hs-special"
+      >)</span
+      ><span
+      > </span
+      ><span class="hs-special"
+      >|]</span
+      ><span
+      >
+</span
+      ><span id="line-32"
+      ></span
+      ><span
+      >
+</span
+      ><span id="line-33"
+      ></span
+      ><span class="annot"
+      ><a href="TemplateHaskellQuasiquotes.html#aType"
+	><span class="hs-identifier hs-type"
+	  >aType</span
+	  ></a
+	></span
+      ><span
+      > </span
+      ><span class="hs-glyph"
+      >::</span
+      ><span
+      > </span
+      ><span class="annot"
+      ><span class="hs-identifier hs-type"
+	>TypeQ</span
+	></span
+      ><span
+      >
+</span
+      ><span id="line-34"
+      ></span
+      ><span id="aType"
+      ><span class="annot"
+	><span class="annottext"
+	  >aType :: TypeQ
+</span
+	  ><a href="TemplateHaskellQuasiquotes.html#aType"
+	  ><span class="hs-identifier hs-var hs-var"
+	    >aType</span
+	    ></a
+	  ></span
+	></span
+      ><span
+      > </span
+      ><span class="hs-glyph"
+      >=</span
+      ><span
+      > </span
+      ><span class="hs-special"
+      >[t|</span
+      ><span
+      >
+</span
+      ><span id="line-35"
+      ></span
+      ><span
+      >    </span
+      ><span class="hs-special"
+      >[</span
+      ><span
+      > </span
+      ><span class="hs-special"
+      >(</span
+      ><span class="hs-identifier"
+      >Double</span
+      ><span class="hs-special"
+      >,</span
+      ><span
+      > </span
+      ><span class="hs-identifier"
+      >String</span
+      ><span class="hs-special"
+      >)</span
+      ><span
+      > </span
+      ><span class="hs-special"
+      >]</span
+      ><span
+      >
+</span
+      ><span id="line-36"
+      ></span
+      ><span
+      >  </span
+      ><span class="hs-special"
+      >|]</span
+      ><span
+      >
+</span
+      ><span id="line-37"
+      ></span
+      ><span
+      >
+</span
+      ><span id="line-38"
+      ></span
+      ><span
+      >
+</span
+      ><span id="line-39"
+      ></span
+      ><span
+      >
+</span
+      ><span id="line-40"
+      ></span
+      ></pre
+    ></body
+  ></html
+>
\ No newline at end of file
diff --git a/hypsrc-test/ref/src/TemplateHaskellSplices.html b/hypsrc-test/ref/src/TemplateHaskellSplices.html
new file mode 100644
index 00000000..85288453
--- /dev/null
+++ b/hypsrc-test/ref/src/TemplateHaskellSplices.html
@@ -0,0 +1,135 @@
+<html xmlns="http://www.w3.org/1999/xhtml"
+><head
+  ><link rel="stylesheet" type="text/css" href="style.css"
+     /><script type="text/javascript" src="highlight.js"
+    ></script
+    ></head
+  ><body
+  ><pre
+    ><span class="hs-pragma"
+      >{-# LANGUAGE TemplateHaskell #-}</span
+      ><span
+      >
+</span
+      ><span id="line-2"
+      ></span
+      ><span class="hs-keyword"
+      >module</span
+      ><span
+      > </span
+      ><span class="hs-identifier"
+      >TemplateHaskellSplices</span
+      ><span
+      > </span
+      ><span class="hs-keyword"
+      >where</span
+      ><span
+      >
+</span
+      ><span id="line-3"
+      ></span
+      ><span
+      >
+</span
+      ><span id="line-4"
+      ></span
+      ><span class="hs-keyword"
+      >import</span
+      ><span
+      > </span
+      ><span class="annot"
+      ><a href="TemplateHaskellQuasiquotes.html"
+	><span class="hs-identifier"
+	  >TemplateHaskellQuasiquotes</span
+	  ></a
+	></span
+      ><span
+      >
+</span
+      ><span id="line-5"
+      ></span
+      ><span
+      >
+</span
+      ><span id="line-6"
+      ></span
+      ><span class="hs-special"
+      >$(</span
+      ><span id="bar"
+      ><span class="annot"
+	><span class="annottext"
+	  >[(Double, String)] -&gt; [(Int, String)]
+</span
+	  ><a href="TemplateHaskellSplices.html#bar"
+	  ><span class="hs-identifier hs-type hs-var"
+	    >aDecl</span
+	    ></a
+	  ></span
+	></span
+      ><span class="hs-special"
+      >)</span
+      ><span
+      >
+</span
+      ><span id="line-7"
+      ></span
+      ><span
+      >
+</span
+      ><span id="line-8"
+      ></span
+      ><span id="foo"
+      ><span class="annot"
+	><span class="annottext"
+	  >foo :: Integer
+</span
+	  ><a href="TemplateHaskellSplices.html#foo"
+	  ><span class="hs-identifier hs-var hs-var"
+	    >foo</span
+	    ></a
+	  ></span
+	></span
+      ><span
+      > </span
+      ><span class="hs-glyph"
+      >=</span
+      ><span
+      > </span
+      ><span class="annot"
+      ><span class="annottext"
+	>Integer -&gt; Integer
+forall a. a -&gt; a
+</span
+	><span class="hs-identifier hs-var"
+	>id</span
+	></span
+      ><span
+      > </span
+      ><span class="hs-special"
+      >$(</span
+      ><span class="annot"
+      ><span class="annottext"
+	>Double
+Double -&gt; Integer
+Integer -&gt; Integer -&gt; Integer
+forall a. Floating a =&gt; a
+forall a. Num a =&gt; a -&gt; a -&gt; a
+forall a b. (RealFrac a, Integral b) =&gt; a -&gt; b
++ :: forall a. Num a =&gt; a -&gt; a -&gt; a
+round :: forall a b. (RealFrac a, Integral b) =&gt; a -&gt; b
+pi :: forall a. Floating a =&gt; a
+</span
+	><span class="hs-identifier hs-var hs-var hs-var"
+	>anExpression2</span
+	></span
+      ><span class="hs-special"
+      >)</span
+      ><span
+      >
+</span
+      ><span id="line-9"
+      ></span
+      ></pre
+    ></body
+  ></html
+>
\ No newline at end of file
diff --git a/hypsrc-test/ref/src/UsingQuasiquotes.html b/hypsrc-test/ref/src/UsingQuasiquotes.html
new file mode 100644
index 00000000..a5c791c4
--- /dev/null
+++ b/hypsrc-test/ref/src/UsingQuasiquotes.html
@@ -0,0 +1,104 @@
+<html xmlns="http://www.w3.org/1999/xhtml"
+><head
+  ><link rel="stylesheet" type="text/css" href="style.css"
+     /><script type="text/javascript" src="highlight.js"
+    ></script
+    ></head
+  ><body
+  ><pre
+    ><span class="hs-pragma"
+      >{-# LANGUAGE QuasiQuotes #-}</span
+      ><span
+      >
+</span
+      ><span id="line-2"
+      ></span
+      ><span class="hs-keyword"
+      >module</span
+      ><span
+      > </span
+      ><span class="hs-identifier"
+      >UsingQuasiquotes</span
+      ><span
+      > </span
+      ><span class="hs-keyword"
+      >where</span
+      ><span
+      >
+</span
+      ><span id="line-3"
+      ></span
+      ><span
+      >
+</span
+      ><span id="line-4"
+      ></span
+      ><span class="hs-keyword"
+      >import</span
+      ><span
+      > </span
+      ><span class="annot"
+      ><a href="Quasiquoter.html"
+	><span class="hs-identifier"
+	  >Quasiquoter</span
+	  ></a
+	></span
+      ><span
+      >
+</span
+      ><span id="line-5"
+      ></span
+      ><span
+      >
+</span
+      ><span id="line-6"
+      ></span
+      ><span id="baz"
+      ><span class="annot"
+	><span class="annottext"
+	  >baz :: [Char]
+</span
+	  ><a href="UsingQuasiquotes.html#baz"
+	  ><span class="hs-identifier hs-var hs-var"
+	    >baz</span
+	    ></a
+	  ></span
+	></span
+      ><span
+      >  </span
+      ><span class="hs-glyph"
+      >=</span
+      ><span
+      > </span
+      ><span class="annot"
+      ><span class=""
+	>[string| foo bar |]</span
+	></span
+      ><span
+      > </span
+      ><span class="annot"
+      ><span class="annottext"
+	>[Char] -&gt; [Char] -&gt; [Char]
+forall a. [a] -&gt; [a] -&gt; [a]
+</span
+	><span class="hs-operator hs-var"
+	>++</span
+	></span
+      ><span
+      > </span
+      ><span class="annot"
+      ><span class=""
+	>[string| some
+  mulitline
+  quasiquote
+|]</span
+	></span
+      ><span
+      >
+</span
+      ><span id="line-10"
+      ></span
+      ></pre
+    ></body
+  ></html
+>
\ No newline at end of file
diff --git a/hypsrc-test/src/Quasiquoter.hs b/hypsrc-test/src/Quasiquoter.hs
new file mode 100644
index 00000000..d0a46c33
--- /dev/null
+++ b/hypsrc-test/src/Quasiquoter.hs
@@ -0,0 +1,16 @@
+module Quasiquoter ( string ) where
+
+import Language.Haskell.TH.Quote
+import Language.Haskell.TH.Syntax
+
+-- | Quoter for constructing multiline string literals
+string :: QuasiQuoter
+string = QuasiQuoter
+  { quoteExp = pure . LitE . StringL
+  , quotePat = invalidDomain
+  , quoteType = invalidDomain
+  , quoteDec = invalidDomain
+  }
+  where
+    invalidDomain :: String -> Q a
+    invalidDomain _ = fail "stringQuoter: only valid in expression context"
diff --git a/hypsrc-test/src/TemplateHaskellQuasiquotes.hs b/hypsrc-test/src/TemplateHaskellQuasiquotes.hs
new file mode 100644
index 00000000..a1661895
--- /dev/null
+++ b/hypsrc-test/src/TemplateHaskellQuasiquotes.hs
@@ -0,0 +1,39 @@
+{-# LANGUAGE TemplateHaskell #-}
+
+module TemplateHaskellQuasiquotes where
+
+import Language.Haskell.TH
+
+aDecl :: DecsQ
+aDecl = [d|
+    bar :: $aType -> [ (Int, String) ]
+    bar $aPattern = $anExpression
+  |]
+
+aPattern :: PatQ
+aPattern = [p|
+    [ aCrazyLongVariableName
+    , _unused
+    , (y, z)
+    , ( $aNumberPattern, "hello")
+    ]
+  |]
+
+aNumberPattern :: PatQ
+aNumberPattern = [p|
+    w @ v @ 4.5
+  |]
+
+anExpression, anExpression2 :: ExpQ
+anExpression = [e|
+    [ (1 + $anExpression2, "world") ]
+  |]
+anExpression2 = [| (1 + round pi) |]
+
+aType :: TypeQ
+aType = [t|
+    [ (Double, String) ]
+  |]
+
+
+
diff --git a/hypsrc-test/src/TemplateHaskellSplices.hs b/hypsrc-test/src/TemplateHaskellSplices.hs
new file mode 100644
index 00000000..bbd3948e
--- /dev/null
+++ b/hypsrc-test/src/TemplateHaskellSplices.hs
@@ -0,0 +1,8 @@
+{-# LANGUAGE TemplateHaskell #-}
+module TemplateHaskellSplices where
+
+import TemplateHaskellQuasiquotes
+
+$(aDecl)
+
+foo = id $(anExpression2)
diff --git a/hypsrc-test/src/UsingQuasiquotes.hs b/hypsrc-test/src/UsingQuasiquotes.hs
new file mode 100644
index 00000000..34872d4d
--- /dev/null
+++ b/hypsrc-test/src/UsingQuasiquotes.hs
@@ -0,0 +1,9 @@
+{-# LANGUAGE QuasiQuotes #-}
+module UsingQuasiquotes where
+
+import Quasiquoter
+
+baz  = [string| foo bar |] ++ [string| some
+  mulitline
+  quasiquote
+|]
-- 
cgit v1.2.3