diff options
author | Alec Theriault <alec.theriault@gmail.com> | 2019-10-07 20:45:40 -0400 |
---|---|---|
committer | Alec Theriault <alec.theriault@gmail.com> | 2019-10-07 20:56:48 -0400 |
commit | cdf4445a877428f5969f712a95830af38029b9a0 (patch) | |
tree | b7b1dbe0a7410b1eec3176fe2904c0c25ee3cdd3 | |
parent | 80b8a8a2525d4e4c60b7c9439a23ac47d9612802 (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.html | 104 | ||||
-rw-r--r-- | hypsrc-test/ref/src/Quasiquoter.html | 415 | ||||
-rw-r--r-- | hypsrc-test/ref/src/TemplateHaskellQuasiquotes.html | 659 | ||||
-rw-r--r-- | hypsrc-test/ref/src/TemplateHaskellSplices.html | 135 | ||||
-rw-r--r-- | hypsrc-test/ref/src/UsingQuasiquotes.html | 104 | ||||
-rw-r--r-- | hypsrc-test/src/Quasiquoter.hs | 16 | ||||
-rw-r--r-- | hypsrc-test/src/TemplateHaskellQuasiquotes.hs | 39 | ||||
-rw-r--r-- | hypsrc-test/src/TemplateHaskellSplices.hs | 8 | ||||
-rw-r--r-- | hypsrc-test/src/UsingQuasiquotes.hs | 9 |
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] -> [Char] -> [Char] +forall a. [a] -> [a] -> [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 -> Q Exp) +-> (String -> Q Pat) +-> (String -> Q Type) +-> (String -> Q [Dec]) +-> 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 -> 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 -> Q Exp +forall (f :: * -> *) a. Applicative f => a -> f a +</span + ><span class="hs-identifier hs-var" + >pure</span + ></span + ><span + > </span + ><span class="annot" + ><span class="annottext" + >(Exp -> Q Exp) -> (String -> Exp) -> String -> Q Exp +forall b c a. (b -> c) -> (a -> b) -> a -> c +</span + ><span class="hs-operator hs-var" + >.</span + ></span + ><span + > </span + ><span class="annot" + ><span class="annottext" + >Lit -> Exp +</span + ><span class="hs-identifier hs-var" + >LitE</span + ></span + ><span + > </span + ><span class="annot" + ><span class="annottext" + >(Lit -> Exp) -> (String -> Lit) -> String -> Exp +forall b c a. (b -> c) -> (a -> b) -> a -> c +</span + ><span class="hs-operator hs-var" + >.</span + ></span + ><span + > </span + ><span class="annot" + ><span class="annottext" + >String -> 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 -> 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 -> Q Pat +forall a. String -> 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 -> 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 -> Q Type +forall a. String -> 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 -> 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 -> Q [Dec] +forall a. String -> 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" + >-></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 -> 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 -> Q a +forall (m :: * -> *) a. MonadFail m => String -> m a +</span + ><span class="hs-identifier hs-var" + >fail</span + ></span + ><span + > </span + ><span class="annot" + ><span class="hs-string" + >"stringQuoter: only valid in expression context"</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" + >-></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" + >"hello"</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" + >"world"</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)] -> [(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 -> Integer +forall a. a -> 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 -> Integer +Integer -> Integer -> Integer +forall a. Floating a => a +forall a. Num a => a -> a -> a +forall a b. (RealFrac a, Integral b) => a -> b ++ :: forall a. Num a => a -> a -> a +round :: forall a b. (RealFrac a, Integral b) => a -> b +pi :: forall a. Floating a => 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] -> [Char] -> [Char] +forall a. [a] -> [a] -> [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 +|] |