aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlec Theriault <alec.theriault@gmail.com>2019-10-07 20:45:40 -0400
committerAlec Theriault <alec.theriault@gmail.com>2019-10-07 20:56:48 -0400
commitcdf4445a877428f5969f712a95830af38029b9a0 (patch)
treeb7b1dbe0a7410b1eec3176fe2904c0c25ee3cdd3
parent80b8a8a2525d4e4c60b7c9439a23ac47d9612802 (diff)
Add Hyperlinker test cases for TH-related stuff
Hopefully this will guard against regressions around quasiquotes, TH quotes, and TH splices.
-rw-r--r--hypsrc-test/ref/src/CallingQuotes.html104
-rw-r--r--hypsrc-test/ref/src/Quasiquoter.html415
-rw-r--r--hypsrc-test/ref/src/TemplateHaskellQuasiquotes.html659
-rw-r--r--hypsrc-test/ref/src/TemplateHaskellSplices.html135
-rw-r--r--hypsrc-test/ref/src/UsingQuasiquotes.html104
-rw-r--r--hypsrc-test/src/Quasiquoter.hs16
-rw-r--r--hypsrc-test/src/TemplateHaskellQuasiquotes.hs39
-rw-r--r--hypsrc-test/src/TemplateHaskellSplices.hs8
-rw-r--r--hypsrc-test/src/UsingQuasiquotes.hs9
9 files changed, 1489 insertions, 0 deletions
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
+|]