desugarModule
Kazu Yamamoto ( 山本和彦 )
kazu at iij.ad.jp
Thu Sep 19 10:09:42 CEST 2013
Hi,
The document of GHC API says that "desugarModule" displays warnings of
pattern matching even if HscNothing is specified:
http://www.haskell.org/ghc/docs/latest/html/libraries/ghc/GHC.html#t:HscTarget
Unfortunately, I cannot get warnings of pattern matching. To
demonstrate this, I attached two files:
- Main.hs -- using "desugarModule"
- B.hs -- a target file: top level signature is missing,
pattern is imcompleted
When I run "Main.hs" with:
% runghc -- -package --ghc-arg=ghc -Wall Main
I only got:
B.hs:6:1: Warning:
Top-level binding with no type signature: main :: IO ()
Does anyone know how to display warnings of pattern matching with
HscNothing?
--Kazu
<Main>
-- runghc -- -package --ghc-arg=ghc A
module Main where
import GHC
import GHC.Paths (libdir)
import DynFlags
main :: IO ()
main = defaultErrorHandler defaultFatalMessager defaultFlushOut $ runGhc (Just libdir) $ getWarings "B.hs" "B"
getWarings :: String -> String -> Ghc ()
getWarings targetFile targetModule = do
dflags <- getSessionDynFlags
let dflags' = dflags {
ghcLink = NoLink
, hscTarget = HscNothing
}
dflags'' = foldl wopt_set dflags' [Opt_WarnMissingSigs,Opt_WarnIncompletePatterns]
_ <- setSessionDynFlags dflags''
target <- guessTarget targetFile Nothing
setTargets [target]
_ <- load LoadAllTargets
modSum <- getModSummary $ mkModuleName targetModule
p <- parseModule modSum
t <- typecheckModule p
_ <- desugarModule t
return ()
</Main>
<B>
module B where
myHead :: [Int] -> Int
myHead (x:_) = x
main = do
print $ myHead [1,2,3]
</B>
More information about the Glasgow-haskell-users
mailing list