Make mkPState and pragState take their arguments in the same order
[ghc-hetmet.git] / compiler / main / HeaderInfo.hs
index e16c2ce..5a75ed3 100644 (file)
@@ -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
@@ -264,7 +264,6 @@ checkExtension (L l ext)
 -- its corresponding flag. Otherwise it throws an exception.
  =  let ext' = unpackFS ext in
     if ext' `elem` supportedLanguages
-       || ext' `elem` (map ("No"++) supportedLanguages)
     then L l ("-X"++ext')
     else unsupportedExtnError l ext'
 
@@ -281,7 +280,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 supportedLanguages
 
 
 optionsErrorMsgs :: [String] -> [Located String] -> FilePath -> Messages