aboutsummaryrefslogtreecommitdiff
path: root/latex-test
diff options
context:
space:
mode:
authorAlec Theriault <alec.theriault@gmail.com>2018-07-20 04:50:00 -0700
committerAlexander Biehl <alexbiehl@gmail.com>2018-07-20 13:50:00 +0200
commitf3e76a50eec28d17ddd0fe8e965c15c19c4ef3cf (patch)
tree8e32e6e12b45ce35be502e3b67fbb061175a18b2 /latex-test
parent8ac6ac1097f2ec2bc9a7f9bdd765abf71164bfcb (diff)
Misc tests (#858)
* More tests * spliced types * constructor/pattern argument docs * strictness marks on fields with argument docs * latex test cases need seperate directory * Accept tests
Diffstat (limited to 'latex-test')
-rw-r--r--latex-test/ref/ConstructorArgs/ConstructorArgs.tex69
-rw-r--r--latex-test/ref/ConstructorArgs/haddock.sty57
-rw-r--r--latex-test/ref/ConstructorArgs/main.tex11
-rw-r--r--latex-test/ref/GadtConstructorArgs/GadtConstructorArgs.tex25
-rw-r--r--latex-test/ref/GadtConstructorArgs/haddock.sty57
-rw-r--r--latex-test/ref/GadtConstructorArgs/main.tex11
-rw-r--r--latex-test/src/ConstructorArgs/ConstructorArgs.hs56
-rw-r--r--latex-test/src/GadtConstructorArgs/GadtConstructorArgs.hs13
8 files changed, 299 insertions, 0 deletions
diff --git a/latex-test/ref/ConstructorArgs/ConstructorArgs.tex b/latex-test/ref/ConstructorArgs/ConstructorArgs.tex
new file mode 100644
index 00000000..44304f47
--- /dev/null
+++ b/latex-test/ref/ConstructorArgs/ConstructorArgs.tex
@@ -0,0 +1,69 @@
+\haddockmoduleheading{ConstructorArgs}
+\label{module:ConstructorArgs}
+\haddockbeginheader
+{\haddockverb\begin{verbatim}
+module ConstructorArgs (
+ Foo((:|), Rec, Baz, Boa, (:*), x, y), Boo(Foo, Foa, Fo, Fo'), pattern Bo,
+ pattern Bo'
+ ) where\end{verbatim}}
+\haddockendheader
+
+\begin{haddockdesc}
+\item[\begin{tabular}{@{}l}
+data\ Foo
+\end{tabular}]\haddockbegindoc
+\enspace \emph{Constructors}\par
+\haddockbeginconstrs
+\haddockdecltt{=} & \haddockdecltt{Rec} & doc on a record \\
+ & \haddocktt{\qquad \{} \haddockdecltt{x :: String} & doc on the \haddockid{String} field of \haddockid{Rec} \\
+ & \haddocktt{\qquad ,} \haddockdecltt{y :: String} & doc on the \haddockid{String} field of \haddockid{Rec} \\ & \haddocktt{\qquad \}} \\
+\haddockdecltt{|} & \haddockdecltt{Baz Int String} & old prefix doc style \\
+\haddockdecltt{|} & \haddockdecltt{Boa} & doc on the \haddockid{Boa} constrictor \\
+ & \qquad \haddockdecltt{!Int} & doc on the \haddockid{Int} field of \haddockid{Boa} \\
+ & \qquad \haddockdecltt{!String} & doc on the \haddockid{String} field of \haddockid{Boa} \\
+\haddockdecltt{|} & \haddockdecltt{Int :| String} & old infix doc style \\
+\haddockdecltt{|} & \haddockdecltt{(:*)} & doc on the \haddockid{:*} constructor \\
+ & \qquad \haddockdecltt{Int} & doc on the \haddockid{Int} field of the \haddockid{:*} constructor \\
+ & \qquad \haddockdecltt{String} & doc on the \haddockid{String} field of the \haddockid{:*} constructor \\
+\end{tabulary}\par
+\end{haddockdesc}
+\begin{haddockdesc}
+\item[\begin{tabular}{@{}l}
+data\ Boo\ where
+\end{tabular}]\haddockbegindoc
+\enspace \emph{Constructors}\par
+\haddockbeginconstrs
+& \haddockdecltt{Foo} & Info about a \haddockid{Foo} \\
+ & \qquad \haddockdecltt{::} \enspace \haddockdecltt{Int} & \haddockid{Int} field of \haddockid{Foo} \\
+ & \qquad \haddockdecltt{->} \enspace \haddockdecltt{String} & \haddockid{String} field of \haddockid{Foo} \\
+ & \qquad \haddockdecltt{->} \enspace \haddockdecltt{Boo} & Make a \haddockid{Boo} \\
+& \haddockdecltt{Foa :: Int -> Boo} & no argument docs GADT \\
+\end{tabulary}\par
+\enspace \emph{Bundled Patterns}\par
+\haddockbeginconstrs
+& \haddockdecltt{pattern Fo} & Info about bundled \haddockid{Fo} \\
+ & \qquad \haddockdecltt{::} \enspace \haddockdecltt{Int} & an \haddockid{Int} \\
+ & \qquad \haddockdecltt{->} \enspace \haddockdecltt{String} & a \haddockid{String} \\
+ & \qquad \haddockdecltt{->} \enspace \haddockdecltt{Boo} & a \haddockid{Boo} \\
+& \haddockdecltt{pattern Fo' :: Boo} & Bundled and no argument docs \\
+\end{tabulary}\par
+\end{haddockdesc}
+\begin{haddockdesc}
+\item[\begin{tabular}{@{}l}
+pattern\ Bo
+\end{tabular}]\haddockbegindoc
+\haddockbeginargs
+\haddockdecltt{::} & \haddockdecltt{Int} & an \haddockid{Int} \\
+\haddockdecltt{->} & \haddockdecltt{String} & a \haddockid{String} \\
+\haddockdecltt{->} & \haddockdecltt{Boo} & a \haddockid{Boo} pattern \\
+\end{tabulary}\par
+Info about not-bundled \haddockid{Bo}\par
+
+\end{haddockdesc}
+\begin{haddockdesc}
+\item[\begin{tabular}{@{}l}
+pattern\ Bo'\ ::\ Int\ ->\ String\ ->\ Boo
+\end{tabular}]\haddockbegindoc
+Not bunded and no argument docs\par
+
+\end{haddockdesc} \ No newline at end of file
diff --git a/latex-test/ref/ConstructorArgs/haddock.sty b/latex-test/ref/ConstructorArgs/haddock.sty
new file mode 100644
index 00000000..6e031a98
--- /dev/null
+++ b/latex-test/ref/ConstructorArgs/haddock.sty
@@ -0,0 +1,57 @@
+% Default Haddock style definitions. To use your own style, invoke
+% Haddock with the option --latex-style=mystyle.
+
+\usepackage{tabulary} % see below
+
+% make hyperlinks in the PDF, and add an expandabale index
+\usepackage[pdftex,bookmarks=true]{hyperref}
+
+\newenvironment{haddocktitle}
+ {\begin{center}\bgroup\large\bfseries}
+ {\egroup\end{center}}
+\newenvironment{haddockprologue}{\vspace{1in}}{}
+
+\newcommand{\haddockmoduleheading}[1]{\chapter{\texttt{#1}}}
+
+\newcommand{\haddockbeginheader}{\hrulefill}
+\newcommand{\haddockendheader}{\noindent\hrulefill}
+
+% a little gap before the ``Methods'' header
+\newcommand{\haddockpremethods}{\vspace{2ex}}
+
+% inserted before \\begin{verbatim}
+\newcommand{\haddockverb}{\small}
+
+% an identifier: add an index entry
+\newcommand{\haddockid}[1]{\haddocktt{#1}\index{#1@\texttt{#1}}}
+
+% The tabulary environment lets us have a column that takes up ``the
+% rest of the space''. Unfortunately it doesn't allow
+% the \end{tabulary} to be in the expansion of a macro, it must appear
+% literally in the document text, so Haddock inserts
+% the \end{tabulary} itself.
+\newcommand{\haddockbeginconstrs}{\begin{tabulary}{\linewidth}{@{}llJ@{}}}
+\newcommand{\haddockbeginargs}{\begin{tabulary}{\linewidth}{@{}llJ@{}}}
+
+\newcommand{\haddocktt}[1]{{\small \texttt{#1}}}
+\newcommand{\haddockdecltt}[1]{{\small\bfseries \texttt{#1}}}
+
+\makeatletter
+\newenvironment{haddockdesc}
+ {\list{}{\labelwidth\z@ \itemindent-\leftmargin
+ \let\makelabel\haddocklabel}}
+ {\endlist}
+\newcommand*\haddocklabel[1]{\hspace\labelsep\haddockdecltt{#1}}
+\makeatother
+
+% after a declaration, start a new line for the documentation.
+% Otherwise, the documentation starts right after the declaration,
+% because we're using the list environment and the declaration is the
+% ``label''. I tried making this newline part of the label, but
+% couldn't get that to work reliably (the space seemed to stretch
+% sometimes).
+\newcommand{\haddockbegindoc}{\hfill\\[1ex]}
+
+% spacing between paragraphs and no \parindent looks better
+\parskip=10pt plus2pt minus2pt
+\setlength{\parindent}{0cm}
diff --git a/latex-test/ref/ConstructorArgs/main.tex b/latex-test/ref/ConstructorArgs/main.tex
new file mode 100644
index 00000000..80f639c5
--- /dev/null
+++ b/latex-test/ref/ConstructorArgs/main.tex
@@ -0,0 +1,11 @@
+\documentclass{book}
+\usepackage{haddock}
+\begin{document}
+\begin{titlepage}
+\begin{haddocktitle}
+
+\end{haddocktitle}
+\end{titlepage}
+\tableofcontents
+\input{ConstructorArgs}
+\end{document} \ No newline at end of file
diff --git a/latex-test/ref/GadtConstructorArgs/GadtConstructorArgs.tex b/latex-test/ref/GadtConstructorArgs/GadtConstructorArgs.tex
new file mode 100644
index 00000000..7aaf5512
--- /dev/null
+++ b/latex-test/ref/GadtConstructorArgs/GadtConstructorArgs.tex
@@ -0,0 +1,25 @@
+\haddockmoduleheading{GadtConstructorArgs}
+\label{module:GadtConstructorArgs}
+\haddockbeginheader
+{\haddockverb\begin{verbatim}
+module GadtConstructorArgs (
+ Boo(Fot, Fob, x, y, w, z)
+ ) where\end{verbatim}}
+\haddockendheader
+
+\begin{haddockdesc}
+\item[\begin{tabular}{@{}l}
+data\ Boo\ where
+\end{tabular}]\haddockbegindoc
+\enspace \emph{Constructors}\par
+\haddockbeginconstrs
+& \haddockdecltt{Fot} & \\
+ & \qquad \haddockdecltt{:: \{} \enspace \haddockdecltt{x :: Int} & an \haddockid{x} \\
+ & \qquad \haddockdecltt{\ \ \ \ ,} \enspace \haddockdecltt{y :: Int} & a \haddockid{y} \\
+ & \qquad \haddockdecltt{\ \ \ \ \} ->} \enspace \haddockdecltt{Boo} & \\
+& \haddockdecltt{Fob} & Record GADT with docs \\
+ & \qquad \haddockdecltt{:: \{} \enspace \haddockdecltt{w :: Int} & a \haddockid{w} \\
+ & \qquad \haddockdecltt{\ \ \ \ ,} \enspace \haddockdecltt{z :: Int} & a \haddockid{z} \\
+ & \qquad \haddockdecltt{\ \ \ \ \} ->} \enspace \haddockdecltt{Boo} & a \haddockid{Boo} \\
+\end{tabulary}\par
+\end{haddockdesc} \ No newline at end of file
diff --git a/latex-test/ref/GadtConstructorArgs/haddock.sty b/latex-test/ref/GadtConstructorArgs/haddock.sty
new file mode 100644
index 00000000..6e031a98
--- /dev/null
+++ b/latex-test/ref/GadtConstructorArgs/haddock.sty
@@ -0,0 +1,57 @@
+% Default Haddock style definitions. To use your own style, invoke
+% Haddock with the option --latex-style=mystyle.
+
+\usepackage{tabulary} % see below
+
+% make hyperlinks in the PDF, and add an expandabale index
+\usepackage[pdftex,bookmarks=true]{hyperref}
+
+\newenvironment{haddocktitle}
+ {\begin{center}\bgroup\large\bfseries}
+ {\egroup\end{center}}
+\newenvironment{haddockprologue}{\vspace{1in}}{}
+
+\newcommand{\haddockmoduleheading}[1]{\chapter{\texttt{#1}}}
+
+\newcommand{\haddockbeginheader}{\hrulefill}
+\newcommand{\haddockendheader}{\noindent\hrulefill}
+
+% a little gap before the ``Methods'' header
+\newcommand{\haddockpremethods}{\vspace{2ex}}
+
+% inserted before \\begin{verbatim}
+\newcommand{\haddockverb}{\small}
+
+% an identifier: add an index entry
+\newcommand{\haddockid}[1]{\haddocktt{#1}\index{#1@\texttt{#1}}}
+
+% The tabulary environment lets us have a column that takes up ``the
+% rest of the space''. Unfortunately it doesn't allow
+% the \end{tabulary} to be in the expansion of a macro, it must appear
+% literally in the document text, so Haddock inserts
+% the \end{tabulary} itself.
+\newcommand{\haddockbeginconstrs}{\begin{tabulary}{\linewidth}{@{}llJ@{}}}
+\newcommand{\haddockbeginargs}{\begin{tabulary}{\linewidth}{@{}llJ@{}}}
+
+\newcommand{\haddocktt}[1]{{\small \texttt{#1}}}
+\newcommand{\haddockdecltt}[1]{{\small\bfseries \texttt{#1}}}
+
+\makeatletter
+\newenvironment{haddockdesc}
+ {\list{}{\labelwidth\z@ \itemindent-\leftmargin
+ \let\makelabel\haddocklabel}}
+ {\endlist}
+\newcommand*\haddocklabel[1]{\hspace\labelsep\haddockdecltt{#1}}
+\makeatother
+
+% after a declaration, start a new line for the documentation.
+% Otherwise, the documentation starts right after the declaration,
+% because we're using the list environment and the declaration is the
+% ``label''. I tried making this newline part of the label, but
+% couldn't get that to work reliably (the space seemed to stretch
+% sometimes).
+\newcommand{\haddockbegindoc}{\hfill\\[1ex]}
+
+% spacing between paragraphs and no \parindent looks better
+\parskip=10pt plus2pt minus2pt
+\setlength{\parindent}{0cm}
diff --git a/latex-test/ref/GadtConstructorArgs/main.tex b/latex-test/ref/GadtConstructorArgs/main.tex
new file mode 100644
index 00000000..dc1a1aa3
--- /dev/null
+++ b/latex-test/ref/GadtConstructorArgs/main.tex
@@ -0,0 +1,11 @@
+\documentclass{book}
+\usepackage{haddock}
+\begin{document}
+\begin{titlepage}
+\begin{haddocktitle}
+
+\end{haddocktitle}
+\end{titlepage}
+\tableofcontents
+\input{GadtConstructorArgs}
+\end{document} \ No newline at end of file
diff --git a/latex-test/src/ConstructorArgs/ConstructorArgs.hs b/latex-test/src/ConstructorArgs/ConstructorArgs.hs
new file mode 100644
index 00000000..6b0da711
--- /dev/null
+++ b/latex-test/src/ConstructorArgs/ConstructorArgs.hs
@@ -0,0 +1,56 @@
+{-# LANGUAGE GADTs, PatternSynonyms #-}
+
+module ConstructorArgs (Foo(..), Boo(Foo, Foa, Fo, Fo'), pattern Bo, pattern Bo') where
+
+data Foo
+ = Rec -- ^ doc on a record
+ { x :: String -- ^ doc on the `String` field of `Rec`
+ , y :: String -- ^ doc on the `String` field of `Rec`
+ }
+ | Baz Int String -- ^ old prefix doc style
+ | Boa -- ^ doc on the `Boa` constrictor
+ !Int -- ^ doc on the `Int` field of `Boa`
+ !String -- ^ doc on the `String` field of `Boa`
+ | Int :| String -- ^ old infix doc style
+ | Int -- ^ doc on the `Int` field of the `:*` constructor
+ :* -- ^ doc on the `:*` constructor
+ String -- ^ doc on the `String` field of the `:*` constructor
+
+infixr 1 `Foo`
+infixr 2 `Boa`
+infixr 3 :*
+
+data Boo where
+ -- | Info about a 'Foo'
+ Foo :: Int -- ^ `Int` field of `Foo`
+ -> String -- ^ `String` field of `Foo`
+ -> Boo -- ^ Make a `Boo`
+
+ -- | no argument docs GADT
+ Foa :: Int -> Boo
+
+infixr 4 `Boo`
+
+-- | Info about bundled 'Fo'
+pattern Fo :: Int -- ^ an 'Int'
+ -> String -- ^ a 'String'
+ -> Boo -- ^ a 'Boo'
+pattern Fo x y = Foo x y
+
+-- | Bundled and no argument docs
+pattern Fo' :: Boo
+pattern Fo' = Foo 1 "hi"
+
+infixr 5 `Fo`
+
+-- | Info about not-bundled 'Bo'
+pattern Bo :: Int -- ^ an 'Int'
+ -> String -- ^ a 'String'
+ -> Boo -- ^ a 'Boo' pattern
+pattern Bo x y = Foo x y
+
+-- | Not bunded and no argument docs
+pattern Bo' :: Int -> String -> Boo
+pattern Bo' x y = Foo x y
+
+infixr 6 `Bo`
diff --git a/latex-test/src/GadtConstructorArgs/GadtConstructorArgs.hs b/latex-test/src/GadtConstructorArgs/GadtConstructorArgs.hs
new file mode 100644
index 00000000..79ffb4d3
--- /dev/null
+++ b/latex-test/src/GadtConstructorArgs/GadtConstructorArgs.hs
@@ -0,0 +1,13 @@
+{-# LANGUAGE GADTs, PatternSynonyms #-}
+
+module GadtConstructorArgs (Boo(..)) where
+
+data Boo where
+ Fot :: { x :: Int -- ^ an 'x'
+ , y :: Int -- ^ a 'y'
+ } -> Boo
+
+ -- | Record GADT with docs
+ Fob :: { w :: Int -- ^ a 'w'
+ , z :: Int -- ^ a 'z'
+ } -> Boo -- ^ a 'Boo'