Ticket #6145: Main.hs

File Main.hs, 1.4 KB (added by JeanPhilippeMoresmau, 23 months ago)

File loading sample code and printing True if there is a valid SrcSpan? attached to the DataCon?, False otherwise

Line 
1{-# LANGUAGE PatternGuards #-}
2module Main where
3
4import GHC
5import GHC.Paths ( libdir )
6import Bag (filterBag,isEmptyBag)
7import System.Directory (removeFile)
8
9main::IO()
10main = do
11        let c="module Test where\ndata DataT=MkData {name :: String}\n"
12        writeFile "Test.hs" c
13        ok<-    runGhc (Just libdir) $ do
14                        dflags <- getSessionDynFlags
15                        setSessionDynFlags dflags
16                        let mn =mkModuleName "Test"
17                        addTarget Target { targetId = TargetModule mn, targetAllowObjCode = True, targetContents = Nothing }
18                        load LoadAllTargets
19                        modSum <- getModSummary mn
20                        p <- parseModule modSum
21                        t <- typecheckModule p
22                        d <- desugarModule t
23                        l <- loadModule d
24                        let ts=typecheckedSource l
25                        let fs=filterBag getDataCon ts
26                        return $ not $ isEmptyBag fs
27        removeFile "Test.hs"
28        print ok
29        where 
30                getDataCon (L _ (f@FunBind {}))
31                        | (MatchGroup (m:_) _)<-fun_matches f,
32                          (L _ (c@ConPatOut{}):_)<-hsLMatchPats m,
33                          (L l _)<-pat_con c
34                           =isGoodSrcSpan l
35                getDataCon _=False