summaryrefslogtreecommitdiff
path: root/testsuite/tests/deSugar/should_run/T3126.hs
diff options
context:
space:
mode:
Diffstat (limited to 'testsuite/tests/deSugar/should_run/T3126.hs')
-rw-r--r--testsuite/tests/deSugar/should_run/T3126.hs54
1 files changed, 54 insertions, 0 deletions
diff --git a/testsuite/tests/deSugar/should_run/T3126.hs b/testsuite/tests/deSugar/should_run/T3126.hs
new file mode 100644
index 0000000000..811ddc1fa7
--- /dev/null
+++ b/testsuite/tests/deSugar/should_run/T3126.hs
@@ -0,0 +1,54 @@
+{-# LANGUAGE ViewPatterns #-}
+{-# LANGUAGE OverloadedStrings #-}
+module Main where
+import Data.String
+
+-- {{{ Num literals
+newtype N = N Int deriving (Show,Eq)
+
+instance Num N where
+ fromInteger 0 = error "0"
+ fromInteger 1 = N 0
+ fromInteger _ = N 1
+
+f x = case x of
+ 1 -> False
+ 0 -> True
+
+g x = case x of
+ 1 -> False
+ _ -> case x of
+ 0 -> True
+ _ -> error "No match"
+
+testNum = do
+ print $ g (N 0)
+ print $ f (N 0)
+
+-- }}}
+
+-- {{{ IsString literals
+newtype S = S String deriving Eq
+
+instance IsString S where
+ fromString [] = error "[]"
+ fromString (_:_) = S "."
+
+fs x = case x of
+ "." -> False
+ "" -> True
+
+gs x = case x of
+ "." -> False
+ _ -> case x of
+ "" -> True
+ _ -> error "No match"
+
+testIsString = do
+ print $ gs (S ".")
+ print $ fs (S ".")
+
+-- }}}
+
+main = do { testNum; testIsString }
+