X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2Fmain%2FHeaderInfo.hs;h=508f855f4841caf44842a17fa1f1d94e6f83f29e;hb=287d8483e90fded899601a37b7b5e34229072325;hp=e16c2ce562b07e7b25acd3b274ad06cefe5165b5;hpb=4917397e279b0aa755eb09e1ca62913237132895;p=ghc-hetmet.git diff --git a/compiler/main/HeaderInfo.hs b/compiler/main/HeaderInfo.hs index e16c2ce..508f855 100644 --- a/compiler/main/HeaderInfo.hs +++ b/compiler/main/HeaderInfo.hs @@ -57,7 +57,7 @@ getImports :: GhcMonad m => -- ^ The source imports, normal imports, and the module name. getImports dflags buf filename source_filename = do let loc = mkSrcLoc (mkFastString filename) 1 1 - case unP parseHeader (mkPState buf loc dflags) of + case unP parseHeader (mkPState dflags buf loc) of PFailed span err -> parseError span err POk pst rdr_module -> do let _ms@(_warns, errs) = getMessages pst @@ -79,7 +79,7 @@ getImports dflags buf filename source_filename = do ordinary_imps = filter ((/= moduleName gHC_PRIM) . unLoc . ideclName . unLoc) ord_idecls - implicit_prelude = dopt Opt_ImplicitPrelude dflags + implicit_prelude = xopt Opt_ImplicitPrelude dflags implicit_imports = mkPrelImports (unLoc mod) implicit_prelude imps in return (src_idecls, implicit_imports ++ ordinary_imps, mod) @@ -228,6 +228,9 @@ getOptions' toks parseToks (open:xs) | ITlanguage_prag <- getToken open = parseLanguage xs + parseToks (x:xs) + | ITdocCommentNext _ <- getToken x + = parseToks xs parseToks _ = [] parseLanguage (L loc (ITconid fs):rest) = checkExtension (L loc fs) : @@ -253,7 +256,7 @@ checkProcessArgsResult flags liftIO $ throwIO $ mkSrcErr $ listToBag $ map mkMsg flags where mkMsg (L loc flag) = mkPlainErrMsg loc $ - (text "unknown flag in {-# OPTIONS #-} pragma:" <+> + (text "unknown flag in {-# OPTIONS_GHC #-} pragma:" <+> text flag) ----------------------------------------------------------------------------- @@ -263,8 +266,7 @@ checkExtension (L l ext) -- Checks if a given extension is valid, and if so returns -- its corresponding flag. Otherwise it throws an exception. = let ext' = unpackFS ext in - if ext' `elem` supportedLanguages - || ext' `elem` (map ("No"++) supportedLanguages) + if ext' `elem` supportedLanguagesAndExtensions then L l ("-X"++ext') else unsupportedExtnError l ext' @@ -281,7 +283,9 @@ unsupportedExtnError :: SrcSpan -> String -> a unsupportedExtnError loc unsup = throw $ mkSrcErr $ unitBag $ mkPlainErrMsg loc $ - text "Unsupported extension: " <> text unsup + text "Unsupported extension: " <> text unsup $$ + if null suggestions then empty else text "Perhaps you meant" <+> quotedListWithOr (map text suggestions) + where suggestions = fuzzyMatch unsup supportedLanguagesAndExtensions optionsErrorMsgs :: [String] -> [Located String] -> FilePath -> Messages @@ -291,5 +295,5 @@ optionsErrorMsgs unhandled_flags flags_lines _filename L l f' <- flags_lines, f == f' ] mkMsg (L flagSpan flag) = ErrUtils.mkPlainErrMsg flagSpan $ - text "unknown flag in {-# OPTIONS #-} pragma:" <+> text flag + text "unknown flag in {-# OPTIONS_GHC #-} pragma:" <+> text flag