Fix case-split spec for 706
This commit is contained in:
parent
0e788e295c
commit
1a302707b3
@ -13,6 +13,7 @@ main = do
|
|||||||
spec :: Spec
|
spec :: Spec
|
||||||
spec = do
|
spec = do
|
||||||
describe "case split" $ do
|
describe "case split" $ do
|
||||||
|
#if __GLASGOW_HASKELL__ >= 708
|
||||||
it "does not blow up on HsWithBndrs panic" $ do
|
it "does not blow up on HsWithBndrs panic" $ do
|
||||||
withDirectory_ "test/data/case-split" $ do
|
withDirectory_ "test/data/case-split" $ do
|
||||||
res <- runD $ splits "Vect.hs" 24 10
|
res <- runD $ splits "Vect.hs" 24 10
|
||||||
@ -40,7 +41,36 @@ spec = do
|
|||||||
res `shouldBe` "38 21 38 59"++
|
res `shouldBe` "38 21 38 59"++
|
||||||
" \"mlReverse' Nil accum = _mlReverse_body\NUL"++
|
" \"mlReverse' Nil accum = _mlReverse_body\NUL"++
|
||||||
" mlReverse' (Cons xs'1 xs'2) accum = _mlReverse_body\"\n"
|
" mlReverse' (Cons xs'1 xs'2) accum = _mlReverse_body\"\n"
|
||||||
|
#else
|
||||||
|
it "does not blow up on HsWithBndrs panic" $ do
|
||||||
|
withDirectory_ "test/data/case-split" $ do
|
||||||
|
res <- runD $ splits "Vect706.hs" 24 10
|
||||||
|
res `shouldBe` "24 1 24 25"++
|
||||||
|
" \"mlAppend Nil y = undefined\NUL"++
|
||||||
|
"mlAppend (Cons x1 x2) y = undefined\"\n"
|
||||||
|
|
||||||
|
it "works with case expressions" $ do
|
||||||
|
withDirectory_ "test/data/case-split" $ do
|
||||||
|
res <- runD $ splits "Vect706.hs" 28 20
|
||||||
|
res `shouldBe` "28 19 28 34"++
|
||||||
|
" \"Nil -> undefined\NUL"++
|
||||||
|
" (Cons x'1 x'2) -> undefined\"\n"
|
||||||
|
|
||||||
|
it "works with where clauses" $ do
|
||||||
|
withDirectory_ "test/data/case-split" $ do
|
||||||
|
res <- runD $ splits "Vect706.hs" 34 17
|
||||||
|
res `shouldBe` "34 5 34 37"++
|
||||||
|
" \"mlReverse' Nil accum = undefined\NUL"++
|
||||||
|
" mlReverse' (Cons xs'1 xs'2) accum = undefined\"\n"
|
||||||
|
|
||||||
|
it "works with let bindings" $ do
|
||||||
|
withDirectory_ "test/data/case-split" $ do
|
||||||
|
res <- runD $ splits "Vect706.hs" 38 33
|
||||||
|
res `shouldBe` "38 21 38 53"++
|
||||||
|
" \"mlReverse' Nil accum = undefined\NUL"++
|
||||||
|
" mlReverse' (Cons xs'1 xs'2) accum = undefined\"\n"
|
||||||
|
|
||||||
|
#endif
|
||||||
it "doesn't crash when source doesn't make sense" $
|
it "doesn't crash when source doesn't make sense" $
|
||||||
withDirectory_ "test/data/case-split" $ do
|
withDirectory_ "test/data/case-split" $ do
|
||||||
res <- runD $ splits "Crash.hs" 4 6
|
res <- runD $ splits "Crash.hs" 4 6
|
||||||
|
39
test/data/case-split/Vect706.hs
Normal file
39
test/data/case-split/Vect706.hs
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
{-# LANGUAGE DataKinds, TypeFamilies, TypeOperators, GADTs, KindSignatures #-}
|
||||||
|
|
||||||
|
module Vect706 where
|
||||||
|
|
||||||
|
data Nat = Z | S Nat
|
||||||
|
|
||||||
|
type family (n :: Nat) :+ (m :: Nat) :: Nat
|
||||||
|
type instance Z :+ m = m
|
||||||
|
type instance S n :+ m = S (n :+ m)
|
||||||
|
|
||||||
|
data Vect :: Nat -> * -> * where
|
||||||
|
VNil :: Vect Z a
|
||||||
|
(:::) :: a -> Vect n a -> Vect (S n) a
|
||||||
|
|
||||||
|
vAppend :: Vect n a -> Vect m a -> Vect (n :+ m) a
|
||||||
|
vAppend x y = undefined
|
||||||
|
|
||||||
|
lAppend :: [a] -> [a] -> [a]
|
||||||
|
lAppend x y = undefined
|
||||||
|
|
||||||
|
data MyList a = Nil | Cons a (MyList a)
|
||||||
|
|
||||||
|
mlAppend :: MyList a -> MyList a -> MyList a
|
||||||
|
mlAppend x y = undefined
|
||||||
|
|
||||||
|
mlAppend2 :: MyList a -> MyList a -> MyList a
|
||||||
|
mlAppend2 x y = case x of
|
||||||
|
x' -> undefined
|
||||||
|
|
||||||
|
mlReverse :: MyList a -> MyList a
|
||||||
|
mlReverse xs = mlReverse' xs Nil
|
||||||
|
where
|
||||||
|
mlReverse' :: MyList a -> MyList a -> MyList a
|
||||||
|
mlReverse' xs' accum = undefined
|
||||||
|
|
||||||
|
mlReverse2 :: MyList a -> MyList a
|
||||||
|
mlReverse2 xs = let mlReverse' :: MyList a -> MyList a -> MyList a
|
||||||
|
mlReverse' xs' accum = undefined
|
||||||
|
in mlReverse' xs Nil
|
Loading…
Reference in New Issue
Block a user