diff options
author | David Terei <davidterei@gmail.com> | 2011-07-20 11:09:03 -0700 |
---|---|---|
committer | David Terei <davidterei@gmail.com> | 2011-07-20 11:26:35 -0700 |
commit | 16514f272fb42af6e9c7674a9bd6c9dce369231f (patch) | |
tree | e4f332b45fe65e2a7a2451be5674f887b42bf199 /testsuite/tests/typecheck/should_run/tcrun015.hs | |
parent | ebd422aed41048476aa61dd4c520d43becd78682 (diff) | |
download | haskell-16514f272fb42af6e9c7674a9bd6c9dce369231f.tar.gz |
Move tests from tests/ghc-regress/* to just tests/*
Diffstat (limited to 'testsuite/tests/typecheck/should_run/tcrun015.hs')
-rw-r--r-- | testsuite/tests/typecheck/should_run/tcrun015.hs | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/testsuite/tests/typecheck/should_run/tcrun015.hs b/testsuite/tests/typecheck/should_run/tcrun015.hs new file mode 100644 index 0000000000..a75e7e88d5 --- /dev/null +++ b/testsuite/tests/typecheck/should_run/tcrun015.hs @@ -0,0 +1,21 @@ +-- !!! Newtypes + +-- A variation of tc014 that Sigbjorn said failed + +module Main where + +data Expr a b = One a | Many [b] +newtype Pat a = InP (Expr a (Pat a), Int) +newtype PExpr a = InPE (Expr a (PExpr a), Int) + +plus1 x@(InPE (_, loc)) = InPE (Many [x], loc) +one x l = InPE (One (plus1 x), l) + +outP (InP x) = x + +getPatNames p + = case outP p of + (One n, _) -> [n] + (Many ps, _) -> concatMap getPatNames ps + +main = print (take 10 (map getPatNames (repeat (InP (One "n", 1))))) |