summaryrefslogtreecommitdiff
path: root/testsuite/tests/unboxedsums
diff options
context:
space:
mode:
Diffstat (limited to 'testsuite/tests/unboxedsums')
-rw-r--r--testsuite/tests/unboxedsums/all.T5
-rw-r--r--testsuite/tests/unboxedsums/unboxedsums_unit_tests.hs26
2 files changed, 31 insertions, 0 deletions
diff --git a/testsuite/tests/unboxedsums/all.T b/testsuite/tests/unboxedsums/all.T
index 274045f393..0b948b1477 100644
--- a/testsuite/tests/unboxedsums/all.T
+++ b/testsuite/tests/unboxedsums/all.T
@@ -1,3 +1,8 @@
+test('unboxedsums_unit_tests',
+ only_ways(['normal']),
+ compile_and_run,
+ ['-package ghc'])
+
test('unarise', omit_ways(['ghci']), compile_and_run, [''])
test('unboxedsums1', omit_ways(['ghci']), compile_and_run, [''])
test('unboxedsums2', omit_ways(['ghci']), compile_and_run, [''])
diff --git a/testsuite/tests/unboxedsums/unboxedsums_unit_tests.hs b/testsuite/tests/unboxedsums/unboxedsums_unit_tests.hs
new file mode 100644
index 0000000000..d7a8d333a0
--- /dev/null
+++ b/testsuite/tests/unboxedsums/unboxedsums_unit_tests.hs
@@ -0,0 +1,26 @@
+module Main where
+
+import TysWiredIn
+import UniqSet
+import Unique
+
+import System.IO
+import Control.Monad
+
+main :: IO ()
+main = sequence_
+ [ uniq_tests ]
+
+
+uniq_tests :: IO ()
+uniq_tests = do
+ let tycons = map sumTyCon [2 .. 20]
+ datacons = [ sumDataCon alt arity | arity <- [ 2 .. 20 ]
+ , alt <- [ 1 .. arity ] ]
+
+ us = mkUniqSet (map getUnique tycons)
+ `unionUniqSets` mkUniqSet (map getUnique datacons)
+
+ when (sizeUniqSet us /= length tycons + length datacons) $ do
+ hPutStrLn stderr "Sum cons/tycons have same uniques."
+ hFlush stderr