summaryrefslogtreecommitdiff
path: root/testsuite/tests/ghc-regress/deSugar/should_run/T3126.hs
blob: 811ddc1fa70bd9a40d2e1297a58c6f49d813fb4c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
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 }