CaseSplit panic sorted. closes https://github.com/kazu-yamamoto/ghc-mod/issues/336
This commit is contained in:
parent
9101f306d1
commit
0944820dba
@ -69,10 +69,10 @@ getSrcSpanTypeForSplit modSum lineNo colNo = do
|
||||
-- Information for a function case split
|
||||
getSrcSpanTypeForFnSplit :: GhcMonad m => G.ModSummary -> Int -> Int -> m (Maybe SplitInfo)
|
||||
getSrcSpanTypeForFnSplit modSum lineNo colNo = do
|
||||
p@ParsedModule{pm_parsed_source = pms} <- G.parseModule modSum
|
||||
p@ParsedModule{pm_parsed_source = _pms} <- G.parseModule modSum
|
||||
tcm@TypecheckedModule{tm_typechecked_source = tcs} <- G.typecheckModule p
|
||||
let varPat = find isPatternVar $ listifySpans tcs (lineNo, colNo) :: Maybe (LPat Id)
|
||||
match:_ = listifyParsedSpans pms (lineNo, colNo) :: [Gap.GLMatch]
|
||||
match:_ = listifySpans tcs (lineNo, colNo) :: [Gap.GLMatchI]
|
||||
case varPat of
|
||||
Nothing -> return Nothing
|
||||
Just varPat' -> do
|
||||
|
@ -37,6 +37,7 @@ module Language.Haskell.GhcMod.Gap (
|
||||
, benchmarkTargets
|
||||
, toModuleString
|
||||
, GLMatch
|
||||
, GLMatchI
|
||||
, getClass
|
||||
, occName
|
||||
, setFlags
|
||||
@ -437,8 +438,10 @@ toModuleString mn = fromFilePath $ M.toFilePath mn
|
||||
|
||||
#if __GLASGOW_HASKELL__ >= 708
|
||||
type GLMatch = LMatch RdrName (LHsExpr RdrName)
|
||||
type GLMatchI = LMatch Id (LHsExpr Id)
|
||||
#else
|
||||
type GLMatch = LMatch RdrName
|
||||
type GLMatchI = LMatch Id
|
||||
#endif
|
||||
|
||||
getClass :: [LInstDecl Name] -> Maybe (Name, SrcSpan)
|
||||
|
@ -1,25 +1,20 @@
|
||||
{-# LANGUAGE CPP #-}
|
||||
module CaseSplitSpec where
|
||||
|
||||
import Control.Applicative ((<$>))
|
||||
import Data.List (isPrefixOf)
|
||||
import Language.Haskell.GhcMod
|
||||
#if __GLASGOW_HASKELL__ < 706
|
||||
import System.Environment.Executable (getExecutablePath)
|
||||
#else
|
||||
import System.Environment (getExecutablePath)
|
||||
#endif
|
||||
import System.Exit
|
||||
import System.FilePath
|
||||
import System.Process
|
||||
import Test.Hspec
|
||||
import TestUtils
|
||||
import Dir
|
||||
|
||||
main :: IO ()
|
||||
main = do
|
||||
hspec spec
|
||||
|
||||
spec :: Spec
|
||||
spec = do
|
||||
describe "case split" $ do
|
||||
it "does not blow up on HsWithBndrs panic" $ do
|
||||
withDirectory_ "test/data/case-split" $ do
|
||||
res <- runD $ splits "Vect.hs" 24 10
|
||||
res `shouldBe` "9 5 11 40 \"Int -> a -> a -> a\"\n7 1 11 40 \"Int -> Integer\"\n"
|
||||
res `shouldBe` "24 1 24 30"++
|
||||
" \"mlAppend Nil y = _mlAppend_body\NUL"++
|
||||
"mlAppend (Cons x1 x2) y = _mlAppend_body\"\n"
|
||||
|
Loading…
Reference in New Issue
Block a user