diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -6,6 +6,15 @@
 
 ## [Unreleased]
 
+## [1.0.0.2] - 2026-05-27
+
+### Fixed
+
+- Removed the internal `cpp-progress` executable from the published Cabal
+  package so Hackage lists `aihc-cpp` as library-only.
+- Included the CPP progress fixtures in the source distribution so Hackage can
+  run the package test suite and report coverage.
+
 ## [1.0.0.1] - 2026-05-27
 
 ### Fixed
diff --git a/aihc-cpp.cabal b/aihc-cpp.cabal
--- a/aihc-cpp.cabal
+++ b/aihc-cpp.cabal
@@ -1,10 +1,15 @@
 cabal-version: 3.8
 name: aihc-cpp
-version: 1.0.0.1
+version: 1.0.0.2
 build-type: Simple
 license: Unlicense
 license-file: LICENSE
 extra-doc-files: CHANGELOG.md
+extra-source-files:
+  test/Test/Fixtures/progress/*.hs
+  test/Test/Fixtures/progress/*.tsv
+  test/Test/Fixtures/progress/includes/*.inc
+
 author: David Himmelstrup
 maintainer: lemmih@gmail.com
 category: Development
@@ -63,29 +68,6 @@
     tasty >=1.5 && <1.6,
     tasty-hunit >=0.10 && <0.11,
     tasty-quickcheck >=0.11.1 && <0.12,
-    text >=1.2 && <2.2,
-
-  ghc-options: -Wall
-  default-language: Haskell2010
-
-executable cpp-progress
-  scope: private
-  hs-source-dirs:
-    app/cpp-progress
-    test
-
-  main-is: Main.hs
-  other-modules:
-    Test.Progress
-
-  build-depends:
-    aihc-cpp >=1.0 && <1.1,
-    base >=4.16 && <5,
-    bytestring >=0.10.8 && <0.13,
-    containers >=0.5 && <0.8,
-    cpphs >=1.20 && <1.21,
-    directory >=1.2.3 && <1.5,
-    filepath >=1.3.0.1 && <1.6,
     text >=1.2 && <2.2,
 
   ghc-options: -Wall
diff --git a/app/cpp-progress/Main.hs b/app/cpp-progress/Main.hs
deleted file mode 100644
--- a/app/cpp-progress/Main.hs
+++ /dev/null
@@ -1,43 +0,0 @@
-module Main (main) where
-
-import System.Environment (getArgs)
-import System.Exit (exitFailure, exitSuccess)
-import Test.Progress (CaseMeta (..), Outcome (..), evaluateCase, loadManifest, progressSummary)
-
-main :: IO ()
-main = do
-  args <- getArgs
-  let strict = "--strict" `elem` args
-  cases <- loadManifest
-  outcomes <- mapM evaluateCase cases
-  let (passN, xfailN, xpassN, failN) = progressSummary outcomes
-      totalN = passN + xfailN + xpassN + failN
-      completion = pct (passN + xpassN) totalN
-  putStrLn "Haskell CPP preprocessor progress"
-  putStrLn "==============================="
-  putStrLn ("PASS      " <> show passN)
-  putStrLn ("XFAIL     " <> show xfailN)
-  putStrLn ("XPASS     " <> show xpassN)
-  putStrLn ("FAIL      " <> show failN)
-  putStrLn ("TOTAL     " <> show totalN)
-  putStrLn ("COMPLETE  " <> show completion <> "%")
-
-  mapM_ printFail [(m, d) | (m, OutcomeFail, d) <- outcomes]
-  mapM_ printXPass [(m, d) | (m, OutcomeXPass, d) <- outcomes]
-
-  if failN == 0 && (not strict || xpassN == 0)
-    then exitSuccess
-    else exitFailure
-
-printFail :: (CaseMeta, String) -> IO ()
-printFail (meta, details) =
-  putStrLn ("FAIL " <> caseId meta <> " [" <> caseCategory meta <> "] " <> details)
-
-printXPass :: (CaseMeta, String) -> IO ()
-printXPass (meta, details) =
-  putStrLn ("XPASS " <> caseId meta <> " [" <> caseCategory meta <> "] " <> details)
-
-pct :: Int -> Int -> Double
-pct done totalN
-  | totalN <= 0 = 0.0
-  | otherwise = fromIntegral (done * 10000 `div` totalN) / 100.0
diff --git a/test/Test/Fixtures/progress/comment-stripping-c89.hs b/test/Test/Fixtures/progress/comment-stripping-c89.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Fixtures/progress/comment-stripping-c89.hs
@@ -0,0 +1,3 @@
+{- haskell comment - should be kept -}
+/* C89 comment - should be stripped */
+// eol comment - should be kept
diff --git a/test/Test/Fixtures/progress/define-basic.hs b/test/Test/Fixtures/progress/define-basic.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Fixtures/progress/define-basic.hs
@@ -0,0 +1,2 @@
+#define FOO answer
+FOO
diff --git a/test/Test/Fixtures/progress/elseif-branch.hs b/test/Test/Fixtures/progress/elseif-branch.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Fixtures/progress/elseif-branch.hs
@@ -0,0 +1,8 @@
+#define X 1
+#if 0
+none
+#elif X
+yes
+#else
+no
+#endif
diff --git a/test/Test/Fixtures/progress/endif-balance.hs b/test/Test/Fixtures/progress/endif-balance.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Fixtures/progress/endif-balance.hs
@@ -0,0 +1,4 @@
+#define FLAG 1
+#ifdef FLAG
+ok
+#endif
diff --git a/test/Test/Fixtures/progress/error-directive.hs b/test/Test/Fixtures/progress/error-directive.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Fixtures/progress/error-directive.hs
@@ -0,0 +1,2 @@
+#error this is an error
+value
diff --git a/test/Test/Fixtures/progress/function-macro-basic.hs b/test/Test/Fixtures/progress/function-macro-basic.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Fixtures/progress/function-macro-basic.hs
@@ -0,0 +1,2 @@
+#define ADD(x,y) x + y
+ADD(1, 2)
diff --git a/test/Test/Fixtures/progress/function-macro-c-block-comment.hs b/test/Test/Fixtures/progress/function-macro-c-block-comment.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Fixtures/progress/function-macro-c-block-comment.hs
@@ -0,0 +1,2 @@
+#define WRAP(x) x /* keep spacing */ + x
+f = WRAP(1)
diff --git a/test/Test/Fixtures/progress/function-macro-guard-patterns.hs b/test/Test/Fixtures/progress/function-macro-guard-patterns.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Fixtures/progress/function-macro-guard-patterns.hs
@@ -0,0 +1,8 @@
+#define GUARD(WORD) (size - 1) <= fromIntegral (maxBound :: WORD)
+#define PUTSUM(WORD) GUARD(WORD) = putSum (0 :: WORD) (fromIntegral size)
+#define GETSUM(WORD) GUARD(WORD) = (get :: Get WORD) >>= checkGetSum (fromIntegral size)
+
+instance ( PutSum        a, PutSum        b
+         , SumSize       a, SumSize       b) => GSerializePut (a :+: b) where
+    gPut | PUTSUM(Word8) | PUTSUM(Word16) | PUTSUM(Word32) | PUTSUM(Word64)
+         | otherwise = sizeError "encode" size
diff --git a/test/Test/Fixtures/progress/hpp-file-macro-string-pattern.hs b/test/Test/Fixtures/progress/hpp-file-macro-string-pattern.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Fixtures/progress/hpp-file-macro-string-pattern.hs
@@ -0,0 +1,7 @@
+{-# LANGUAGE LambdaCase #-}
+
+f = \case
+  "__FILE__" -> "literal __FILE__ should stay untouched"
+  x -> x
+
+g = __FILE__
diff --git a/test/Test/Fixtures/progress/if-arithmetic.hs b/test/Test/Fixtures/progress/if-arithmetic.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Fixtures/progress/if-arithmetic.hs
@@ -0,0 +1,5 @@
+#if (2 + 3 * 4) == 14
+ok
+#else
+bad
+#endif
diff --git a/test/Test/Fixtures/progress/if-boolean-and.hs b/test/Test/Fixtures/progress/if-boolean-and.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Fixtures/progress/if-boolean-and.hs
@@ -0,0 +1,6 @@
+#define A 1
+#if A && 1
+yes
+#else
+no
+#endif
diff --git a/test/Test/Fixtures/progress/if-comparison.hs b/test/Test/Fixtures/progress/if-comparison.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Fixtures/progress/if-comparison.hs
@@ -0,0 +1,5 @@
+#if 4 >= 3
+ok
+#else
+bad
+#endif
diff --git a/test/Test/Fixtures/progress/if-defined-bare.hs b/test/Test/Fixtures/progress/if-defined-bare.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Fixtures/progress/if-defined-bare.hs
@@ -0,0 +1,6 @@
+#define FEATURE 1
+#if defined FEATURE
+bare-defined
+#else
+missing
+#endif
diff --git a/test/Test/Fixtures/progress/if-defined-paren.hs b/test/Test/Fixtures/progress/if-defined-paren.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Fixtures/progress/if-defined-paren.hs
@@ -0,0 +1,6 @@
+#define FEATURE 1
+#if defined(FEATURE)
+paren-defined
+#else
+missing
+#endif
diff --git a/test/Test/Fixtures/progress/ifdef-true.hs b/test/Test/Fixtures/progress/ifdef-true.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Fixtures/progress/ifdef-true.hs
@@ -0,0 +1,6 @@
+#define FLAG 1
+#ifdef FLAG
+enabled
+#else
+disabled
+#endif
diff --git a/test/Test/Fixtures/progress/ifndef-true.hs b/test/Test/Fixtures/progress/ifndef-true.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Fixtures/progress/ifndef-true.hs
@@ -0,0 +1,5 @@
+#ifndef FLAG
+enabled
+#else
+disabled
+#endif
diff --git a/test/Test/Fixtures/progress/include-basic.hs b/test/Test/Fixtures/progress/include-basic.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Fixtures/progress/include-basic.hs
@@ -0,0 +1,3 @@
+root-start
+#include "includes/value.inc"
+root-end
diff --git a/test/Test/Fixtures/progress/includes/value.inc b/test/Test/Fixtures/progress/includes/value.inc
new file mode 100644
--- /dev/null
+++ b/test/Test/Fixtures/progress/includes/value.inc
@@ -0,0 +1,2 @@
+#define VALUE included
+VALUE
diff --git a/test/Test/Fixtures/progress/indented-hash-operator.hs b/test/Test/Fixtures/progress/indented-hash-operator.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Fixtures/progress/indented-hash-operator.hs
@@ -0,0 +1,2 @@
+f = (d
+    # reflectY)
diff --git a/test/Test/Fixtures/progress/isndef-alias.hs b/test/Test/Fixtures/progress/isndef-alias.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Fixtures/progress/isndef-alias.hs
@@ -0,0 +1,5 @@
+#isndef FEATURE
+missing
+#else
+present
+#endif
diff --git a/test/Test/Fixtures/progress/language-pragma-closing-line.hs b/test/Test/Fixtures/progress/language-pragma-closing-line.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Fixtures/progress/language-pragma-closing-line.hs
@@ -0,0 +1,10 @@
+{-# LANGUAGE
+    DataKinds
+  , DeriveGeneric
+  , OverloadedStrings
+#-}
+
+module Example where
+
+x :: Int
+x = 1
diff --git a/test/Test/Fixtures/progress/line-directive-file-and-number.hs b/test/Test/Fixtures/progress/line-directive-file-and-number.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Fixtures/progress/line-directive-file-and-number.hs
@@ -0,0 +1,6 @@
+#line 200 "generated.hs"
+__LINE__
+__FILE__
+#line 42 "rewritten.hs"
+__LINE__
+__FILE__
diff --git a/test/Test/Fixtures/progress/line-directive-number-only.hs b/test/Test/Fixtures/progress/line-directive-number-only.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Fixtures/progress/line-directive-number-only.hs
@@ -0,0 +1,3 @@
+#line 123
+__LINE__
+__FILE__
diff --git a/test/Test/Fixtures/progress/macro-c-block-comment-literal.hs b/test/Test/Fixtures/progress/macro-c-block-comment-literal.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Fixtures/progress/macro-c-block-comment-literal.hs
@@ -0,0 +1,4 @@
+#define HET 0x68657462 /* 'h' 'e' 't' 'b' */
+f x = case x of
+  HET -> ()
+  _ -> ()
diff --git a/test/Test/Fixtures/progress/macro-comment-replacement.hs b/test/Test/Fixtures/progress/macro-comment-replacement.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Fixtures/progress/macro-comment-replacement.hs
@@ -0,0 +1,3 @@
+#  define DEBUG_TRACE(s)    {- nothing -}
+DEBUG_TRACE
+  (id)
diff --git a/test/Test/Fixtures/progress/macro-expansion-not-in-string.hs b/test/Test/Fixtures/progress/macro-expansion-not-in-string.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Fixtures/progress/macro-expansion-not-in-string.hs
@@ -0,0 +1,3 @@
+#define HELLO world
+HELLO
+"HELLO"
diff --git a/test/Test/Fixtures/progress/macro-expansion.hs b/test/Test/Fixtures/progress/macro-expansion.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Fixtures/progress/macro-expansion.hs
@@ -0,0 +1,3 @@
+#define A B
+#define B C
+A
diff --git a/test/Test/Fixtures/progress/macro-in-comment-with-line-comment-marker.hs b/test/Test/Fixtures/progress/macro-in-comment-with-line-comment-marker.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Fixtures/progress/macro-in-comment-with-line-comment-marker.hs
@@ -0,0 +1,6 @@
+#define A 1
+{-
+-- line comment marker inside block comment
+#define B 2
+-}
+A B
diff --git a/test/Test/Fixtures/progress/macro-in-comment.hs b/test/Test/Fixtures/progress/macro-in-comment.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Fixtures/progress/macro-in-comment.hs
@@ -0,0 +1,5 @@
+#define A 1
+{-
+#define B 2
+-}
+A B
diff --git a/test/Test/Fixtures/progress/macro-in-inline-block-comment.hs b/test/Test/Fixtures/progress/macro-in-inline-block-comment.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Fixtures/progress/macro-in-inline-block-comment.hs
@@ -0,0 +1,3 @@
+#define A 1
+#define B 2
+A {- B -} B
diff --git a/test/Test/Fixtures/progress/macro-in-line-comment.hs b/test/Test/Fixtures/progress/macro-in-line-comment.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Fixtures/progress/macro-in-line-comment.hs
@@ -0,0 +1,4 @@
+#define A 1
+#define B 2
+A -- B
+B
diff --git a/test/Test/Fixtures/progress/macro-multiline-args.hs b/test/Test/Fixtures/progress/macro-multiline-args.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Fixtures/progress/macro-multiline-args.hs
@@ -0,0 +1,5 @@
+#define DEBUG(s) {- -}
+
+DEBUG("line1" ++
+      "line2" ++
+      "line3")
diff --git a/test/Test/Fixtures/progress/macro-multiline-string-comma.hs b/test/Test/Fixtures/progress/macro-multiline-string-comma.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Fixtures/progress/macro-multiline-string-comma.hs
@@ -0,0 +1,8 @@
+#define DEBUG_TRACE(s) {- nothing -}
+
+happyDoAction i tk st =
+  DEBUG_TRACE("state: " ++ show st ++
+              ", token: " ++ show i ++
+              ", action: ")
+  case action of
+    Done -> done
diff --git a/test/Test/Fixtures/progress/macro-multiline-string-parens.hs b/test/Test/Fixtures/progress/macro-multiline-string-parens.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Fixtures/progress/macro-multiline-string-parens.hs
@@ -0,0 +1,6 @@
+#define DEBUG_TRACE(s) {- nothing -}
+
+happySimulateReduce r st sts =
+  DEBUG_TRACE("simulate reduction of rule " ++ show r ++ ", (nested)")
+  let result = reduce r st sts
+  in result
diff --git a/test/Test/Fixtures/progress/macro-name-in-string.hs b/test/Test/Fixtures/progress/macro-name-in-string.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Fixtures/progress/macro-name-in-string.hs
@@ -0,0 +1,3 @@
+#define X 123
+X
+"X"
diff --git a/test/Test/Fixtures/progress/manifest.tsv b/test/Test/Fixtures/progress/manifest.tsv
new file mode 100644
--- /dev/null
+++ b/test/Test/Fixtures/progress/manifest.tsv
@@ -0,0 +1,47 @@
+# id	category	path	expected	reason
+define-basic	macro	define-basic.hs	pass
+undef-basic	macro	undef-basic.hs	pass
+macro-expansion	macro	macro-expansion.hs	pass
+include-basic	include	include-basic.hs	pass
+ifdef-true	conditionals	ifdef-true.hs	pass
+ifndef-true	conditionals	ifndef-true.hs	pass
+if-boolean-and	conditionals	if-boolean-and.hs	pass
+if-arithmetic	conditionals	if-arithmetic.hs	pass
+if-comparison	conditionals	if-comparison.hs	pass
+elseif-branch	conditionals	elseif-branch.hs	pass
+warning-directive	diagnostics	warning-directive.hs	pass
+error-directive	diagnostics	error-directive.hs	pass
+isndef-alias	conditionals	isndef-alias.hs	pass
+endif-balance	conditionals	endif-balance.hs	pass
+pkg-ad	pkg	pkg-ad.hs	pass
+multiline-define	macro	multiline-define.hs	pass
+multiline-define-long	macro	multiline-define-long.hs	pass
+if-defined-paren	conditionals	if-defined-paren.hs	pass
+if-defined-bare	conditionals	if-defined-bare.hs	pass
+nested-if-blocks	conditionals	nested-if-blocks.hs	pass
+predefined-line-file	macro	predefined-line-file.hs	pass
+function-macro-basic	macro	function-macro-basic.hs	pass
+function-macro-guard-patterns	macro	function-macro-guard-patterns.hs	pass
+line-directive-file-and-number	diagnostics	line-directive-file-and-number.hs	pass
+line-directive-number-only	diagnostics	line-directive-number-only.hs	pass
+language-pragma-closing-line	lexing	language-pragma-closing-line.hs	pass
+indented-hash-operator	lexing	indented-hash-operator.hs	pass
+macro-in-comment	lexing	macro-in-comment.hs	pass
+macro-in-inline-block-comment	lexing	macro-in-inline-block-comment.hs	pass
+macro-in-line-comment	lexing	macro-in-line-comment.hs	pass
+macro-in-comment-with-line-comment-marker	lexing	macro-in-comment-with-line-comment-marker.hs	pass
+unterminated-string-in-comment	lexing	unterminated-string-in-comment.hs	pass
+comment-stripping-c89	lexing	comment-stripping-c89.hs	pass
+predefined-in-string	macro	predefined-in-string.hs	pass
+macro-name-in-string	macro	macro-name-in-string.hs	pass
+macro-expansion-not-in-string	macro	macro-expansion-not-in-string.hs	pass
+hpp-file-macro-string-pattern	macro	hpp-file-macro-string-pattern.hs	pass
+rules-pragma-cpp-branch	lexing	rules-pragma-cpp-branch.hs	pass
+macro-multiline-args	macro	macro-multiline-args.hs	pass
+macro-multiline-string-comma	macro	macro-multiline-string-comma.hs	pass
+macro-multiline-string-parens	macro	macro-multiline-string-parens.hs	pass
+stringify-paste-pair	macro	stringify-paste-pair.hs	pass
+macro-comment-replacement	macro	macro-comment-replacement.hs	pass
+thyme-lens-comment-paste	macro	thyme-lens-comment-paste.hs	pass
+macro-c-block-comment-literal	macro	macro-c-block-comment-literal.hs	pass
+function-macro-c-block-comment	macro	function-macro-c-block-comment.hs	pass
diff --git a/test/Test/Fixtures/progress/multiline-define-long.hs b/test/Test/Fixtures/progress/multiline-define-long.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Fixtures/progress/multiline-define-long.hs
@@ -0,0 +1,7 @@
+#define LONG_MACRO \
+    first line \
+    second line \
+    third line
+
+main = do
+    putStrLn LONG_MACRO
diff --git a/test/Test/Fixtures/progress/multiline-define.hs b/test/Test/Fixtures/progress/multiline-define.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Fixtures/progress/multiline-define.hs
@@ -0,0 +1,3 @@
+#define FOO 1 \
+            + 2
+main = print FOO
diff --git a/test/Test/Fixtures/progress/nested-if-blocks.hs b/test/Test/Fixtures/progress/nested-if-blocks.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Fixtures/progress/nested-if-blocks.hs
@@ -0,0 +1,12 @@
+#define OUTER 1
+#define INNER 1
+#if OUTER
+outer-true
+#if INNER
+inner-true
+#else
+inner-false
+#endif
+#else
+outer-false
+#endif
diff --git a/test/Test/Fixtures/progress/pkg-ad.hs b/test/Test/Fixtures/progress/pkg-ad.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Fixtures/progress/pkg-ad.hs
@@ -0,0 +1,6 @@
+#define MODULE \
+module Numeric.AD.Internal.Kahn.Double
+#define IMPORTS
+#define AD_EXPORT KahnDouble(..)
+#define AD_TYPE KahnDouble
+#define SCALAR_TYPE Double
diff --git a/test/Test/Fixtures/progress/predefined-in-string.hs b/test/Test/Fixtures/progress/predefined-in-string.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Fixtures/progress/predefined-in-string.hs
@@ -0,0 +1,4 @@
+"__FILE__"
+"__LINE__"
+__FILE__
+__LINE__
diff --git a/test/Test/Fixtures/progress/predefined-line-file.hs b/test/Test/Fixtures/progress/predefined-line-file.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Fixtures/progress/predefined-line-file.hs
@@ -0,0 +1,2 @@
+__LINE__
+__FILE__
diff --git a/test/Test/Fixtures/progress/rules-pragma-cpp-branch.hs b/test/Test/Fixtures/progress/rules-pragma-cpp-branch.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Fixtures/progress/rules-pragma-cpp-branch.hs
@@ -0,0 +1,16 @@
+{-# RULES
+
+"enumFromTo<Int> [Bundle]"
+  enumFromTo = enumFromTo_int :: Monad m => Int -> Int -> Bundle m v Int
+
+#if WORD_SIZE_IN_BITS > 32
+
+"enumFromTo<Int64> [Bundle]"
+  enumFromTo = enumFromTo_intlike :: Monad m => Int64 -> Int64 -> Bundle m v Int64    #-}
+
+#else
+
+"enumFromTo<Int32> [Bundle]"
+  enumFromTo = enumFromTo_intlike :: Monad m => Int32 -> Int32 -> Bundle m v Int32    #-}
+
+#endif
diff --git a/test/Test/Fixtures/progress/stringify-paste-pair.hs b/test/Test/Fixtures/progress/stringify-paste-pair.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Fixtures/progress/stringify-paste-pair.hs
@@ -0,0 +1,2 @@
+#define PAIR(a,b) (# a, b #)
+PAIR(a,b)
diff --git a/test/Test/Fixtures/progress/thyme-lens-comment-paste.hs b/test/Test/Fixtures/progress/thyme-lens-comment-paste.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Fixtures/progress/thyme-lens-comment-paste.hs
@@ -0,0 +1,3 @@
+#define LENS(S,F,A) {-# INLINE _/**/F #-}; _/**/F :: LensP S A; _/**/F = lens F $ \ S {..} F/**/_ -> S {F = F/**/_, ..}
+LENS(Foo,bar,Baz)
+LENS(Foo,bar,Baz{-comment-})
diff --git a/test/Test/Fixtures/progress/undef-basic.hs b/test/Test/Fixtures/progress/undef-basic.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Fixtures/progress/undef-basic.hs
@@ -0,0 +1,3 @@
+#define FOO answer
+#undef FOO
+FOO
diff --git a/test/Test/Fixtures/progress/unterminated-string-in-comment.hs b/test/Test/Fixtures/progress/unterminated-string-in-comment.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Fixtures/progress/unterminated-string-in-comment.hs
@@ -0,0 +1,3 @@
+#define A 1
+{- " -}
+A
diff --git a/test/Test/Fixtures/progress/warning-directive.hs b/test/Test/Fixtures/progress/warning-directive.hs
new file mode 100644
--- /dev/null
+++ b/test/Test/Fixtures/progress/warning-directive.hs
@@ -0,0 +1,2 @@
+#warning this is a warning
+value
