summaryrefslogtreecommitdiff
path: root/testsuite/tests/typecheck/should_compile/syn-perf.hs
diff options
context:
space:
mode:
Diffstat (limited to 'testsuite/tests/typecheck/should_compile/syn-perf.hs')
-rw-r--r--testsuite/tests/typecheck/should_compile/syn-perf.hs108
1 files changed, 108 insertions, 0 deletions
diff --git a/testsuite/tests/typecheck/should_compile/syn-perf.hs b/testsuite/tests/typecheck/should_compile/syn-perf.hs
new file mode 100644
index 0000000000..c7e2a4a0eb
--- /dev/null
+++ b/testsuite/tests/typecheck/should_compile/syn-perf.hs
@@ -0,0 +1,108 @@
+{-# LANGUAGE TypeOperators, DeriveDataTypeable #-}
+
+-- This is a performance test. In GHC 6.4, it simply wouldn't compile
+-- because the types got exponentially large, due to poor handling of
+-- type synonyms
+
+module ShouldCompile where
+
+import Data.Word
+import Data.Int
+import Data.Typeable
+
+data HNil = HNil deriving (Eq,Show,Read)
+data HCons e l = HCons e l deriving (Eq,Show,Read)
+
+type e :*: l = HCons e l
+ -- In GHC 6.4 the deeply-nested use of this
+ -- synonym gave rise to exponential behaviour
+
+--- list endian16
+newtype Tables = Tables [TableInfo] deriving (Show, Typeable)
+
+type TableInfo =
+ AvgPot :*:
+ NumPlayers :*:
+ Waiting :*:
+ PlayersFlop :*:
+ TableName :*:
+ TableID :*:
+ GameType :*:
+ InfoMaxPlayers :*:
+ RealMoneyTable :*:
+ LowBet :*:
+ HighBet :*:
+ MinStartMoney :*:
+ MaxStartMoney :*:
+ GamesPerHour :*:
+ TourType :*:
+ TourID :*:
+ BetType :*:
+ CantReturnLess :*:
+ AffiliateID :*:
+ NIsResurrecting :*:
+ MinutesForTimeout :*:
+ SeatsToResurrect :*:
+ LangID :*:
+ HNil
+
+newtype TourType = TourType TourType_ deriving (Show, Typeable)
+newtype AvgPot = AvgPot Word64 deriving (Show, Typeable)
+newtype NumPlayers = NumPlayers Word16 deriving (Show, Typeable)
+newtype Waiting = Waiting Word16 deriving (Show, Typeable)
+newtype PlayersFlop = PlayersFlop Word8 deriving (Show, Typeable)
+newtype TableName = TableName String deriving (Show, Typeable)
+newtype TableID = TableID Word32 deriving (Show, Typeable)
+newtype OldTableID = OldTableID Word32 deriving (Show, Typeable)
+newtype GameType = GameType GameType_ deriving (Show, Typeable)
+newtype InfoMaxPlayers = InfoMaxPlayers Word16 deriving (Show, Typeable)
+newtype RealMoneyTable = RealMoneyTable Bool deriving (Show, Typeable)
+newtype LowBet = LowBet RealMoney_ deriving (Show, Typeable)
+newtype HighBet = HighBet RealMoney_ deriving (Show, Typeable)
+newtype MinStartMoney = MinStartMoney RealMoney_ deriving (Show, Typeable)
+newtype MaxStartMoney = MaxStartMoney RealMoney_ deriving (Show, Typeable)
+newtype GamesPerHour = GamesPerHour Word16 deriving (Show, Typeable)
+newtype TourID = TourID Word32 deriving (Show, Typeable)
+newtype BetType = BetType BetType_ deriving (Show, Typeable)
+newtype CantReturnLess = CantReturnLess Word32 deriving (Show, Typeable)
+newtype AffiliateID = AffiliateID [Word8] deriving (Show, Typeable)
+newtype NIsResurrecting = NIsResurrecting Word32 deriving (Show, Typeable)
+newtype MinutesForTimeout = MinutesForTimeout Word32 deriving (Show, Typeable)
+newtype SeatsToResurrect = SeatsToResurrect Word32 deriving (Show, Typeable)
+newtype LangID = LangID Word32 deriving (Show, Typeable)
+
+data GameType_
+ = EmptyGame
+ | Holdem
+ | OmahaHoldem
+ | OmahaHiLo
+ | SevenCardStud
+ | SevenCardStudLoHi
+ | OneToOne
+ | OneToOneOmaha
+ | OneToOne7CS
+ | OneToOneOmahaHL
+ | OneToOne7CSHL
+ | TeenPatti
+ | OneToOneTeenPatti
+ deriving (Eq, Show, Typeable)
+
+type RealMoney_ = Word64
+
+data TourType_
+ = TourNone
+ | TourSingle
+ | TourMulti
+ | TourHeadsUpMulti
+ deriving (Enum, Eq, Show, Typeable)
+
+data BetType_
+ = BetNone
+ | BetFixed
+ | BetPotLimit
+ | BetNoLimit
+ | BetBigRiver
+ | BetTeenPatti
+ | BetTeenPattiFixed
+ deriving (Enum, Eq, Show, Typeable)
+